返回顶部
首页 > 资讯 > 数据库 >MySQL5.6如何实现数据库之间的相互迁移
  • 125
分享到

MySQL5.6如何实现数据库之间的相互迁移

2024-04-02 19:04:59 125人浏览 薄情痞子
摘要

下面讲讲关于Mysql5.6如何实现数据库之间的相互迁移,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完mysql5.6如何实现数据库之间的相互迁移这篇文章你一定会有所受益。##

下面讲讲关于Mysql5.6如何实现数据库之间的相互迁移,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完mysql5.6如何实现数据库之间的相互迁移这篇文章你一定会有所受益。

###业务描述

  1. 公司内部一个Mysql的master-slave架构上面跑有公司俩个项目的库
  2. 俩个项目的有存在共用的table的情况
  3. 俩个项目都可以对共用的table进行读写操作
  4. 项目A的一个子业务在每天固定的时间段内都会有高并发的写操作,造成的后果就是在这个子业务工作的时间段内,俩个项目的读写操作会变得非常的慢,并且对外表现就是应用会很卡
  5. 项目A的子业务使用的库a是独立的,和另外一个项目已经项目A下面的子业务并不存在关联关系,是这个子业务独立使用的

###需求:

  1. 将库a独立剥离出来
  2. 将业务A的关联的数据库剥离出来
  3. 俩个共用的业务的table暂时还没有方案

###方案:

  1. 新建一套master-slave的主从环境使用5.6的最新版本
  2. 搭建级联环境
    • old master -> old slave -> new master -> old master
  3. xtrabackup物理备份
  4. pt-table-checksum 数据一致性校验
  5. 项目A的子业务可以停掉一段时间,因为是阶段性的应用
  6. 应用停掉的一段时间内,等待独立的database没有写入.针对库级别上面的表不做操作
  7. 应用停掉一段时间之后直接修改子业务的MySQL的配置信息,将新的数据写入new master
  8. 级联组织的架构不做任何的修改,只是在业务层次做写入的改动,这样子造成的后果就是老的master-slave和新的master-slave针对这个独立的database的数据是不一致的。
  9. 在这里需要考虑的问题是旧的master-slave上面会不会因为部分业务忘记修改或者其他的原因,未完全将业务的读写迁移到新的master-slave架构上面,这样会造成数据的不一致,并且在databases中万一存在自增的建的话,可能会有建值冲突的情况。
  10. 在完成业务MySQL的配置更改之后,四层的级联架构保持原样的目的是为了后续还需要继续做业务剥离。

###环境:

  1. os system Centos 6.9
  2. MySQL 5.6.38 最新版本

###步骤:

  1. 备份:

    • 使用xtrabackup 2.4.4版本在old slave 上面进行物理备份,不在old master上面备份的主要原因在于为了避免备份的时候消耗系统资源和数据库资源影响线上业务的正常使用,因为我们线上的业务所有的读写都是在主库上面,并没有做读写分离.所以针对于old slave的操作对于业务的影响几乎可以忽略.
    • 在备份的时候需要考虑一个因素就是你的备份所放置云服务器的磁盘空间是否足够,我第一次备份的时候并没有使用流备份,就直接备份到本地,在备份传输的时候网络io和磁盘IO这块需要花费更多的时间。
    • 没有使用流备份:备份77G,花费9分钟
      innobackupex --host=127.0.0.1 --user=root --passWord=xxxxx --port=3306  /path/BACKUP_DIR/

    • 使用流备份进行压缩备份:备份12G,花费40分钟
      innobackupex --host=127.0.0.1 --port=3306 --user=root --password=xxxxx --stream=tar /tmpdir  | gzip > /path/BACKUP_DIR/back_file.tar.gz

    • 因为是做4层的级联复制,所以只需要备份old slave上面的binlog的file_name和file_position这俩个信息,根据这俩个信息change master创建主从复制.不过其中需要注意的文件有:
      • xtrabackup_binlog_info:这个文件里面记录是在xtrabackup备份完非innodb数据之后,执行show master status获取得到的信息,做主传统主从复制的信息来自与这里.
      • xtrabackup_info:这个文件里面记录了备份完全,释放MySQL资源之后记录一些具体的详细信息,在这里也存在备份的binlog的信息,这个信息的主要来源是从redo log里面获取得到的,当这个信息和上面那个文件信息不一致的时候,主要是以这个文件为主,主要原因在与redo log里面记录的binlog信息打上commit标签之后就表明事务是已经完成了的。
    • 需要注意的参数有:
      • --slave-info:在从库上面执行备份,获取主库上面的二进制日志信息,并且会生成xtrabackup_slave_info文件记录这些信息
      • --safe-slave-backup:和slave-info结合使用,主要是在发起备份的时候会暂停slave的sql_thread进程确保备份的时候没有临时表打开,保证数据的一致性
      • --safe-slave-backup-timeout=SECONDS:指定safe-slave-backup应该等待多长时间
  2. 恢复:在新的master-slave上面备份数据达到一致的状态,其目的是为了应用redo log:

    innobackupex --defaults-file=/etc/my.cnf --apply-log /path/BACKUP_DIR

    将数据恢复到datadir目录下面:

    innobackupex --defaults-file=/etc/my.cnf --copy-back /path/BACKUP_DIR

    修改datadir的数据权限

    chown mysql.mysql /datadir -R
  3. 搭建new master-slave:在搭建old slave -> new master架构之前先搭建new master-slave 架构
    • 需要注意的是,在搭建之前需要注意事项有:
      • GTID是否开启,因为 old master-slave 是基于传统复制,所以new的master-slave不能开启GTID复制
      • server-id不能一致
      • binlog的日志格式,四个必须保持一致
      • 在配置文件my.cnf 添加参数 “replicate-inGore-db=mysql.* ” 的目的是为了不复制系统库mysql的信息,目的是因为后续的用户权限管理;并且5.6并不支持在线修改这些复制过滤,只能在配置文件里面修改之后重启数据库。
    • 在new master-slave备份恢复之后,直接可以在new master上面show master status获取binlog信息,根据这些信息做主从同步.
  4. old slave -> new master 搭建主从:从第一步备份获取得到slave的info信息搭建主从
  5. 监测主从是否搭建成功,在old slave -> new master -> new slave 执行show slave status信息观察
  6. pt-table-checksum检测数据的一致性

    • 命令:
      pt-table-checksum --replicate=percona.checksumss --nocheck-replication-filters --no-check-binlog-fORMat h=x.x.x.x,u=rpl,p='xxxxx',P=3306 --databases-regex=database.* --recursion-method dsn=h=x.x.x.x,u=root,p='xxxxx',P=3306,D=zst_teach,t=dsns

    • 注意:
      • 命令第一个链接的主机是需要监测的master-slave中master实例信息
      • 命令中的dsn后续的链接信息是dsn存在信息的MySQL实例,这个dsn信息可以存放在master,也可以存放到第三方实例,这个时候pt-table-checksum执行所在的云服务器需要有root用户访问zst_teach.dsns表信息的权限,即select的权限
      • 命令在执行的时候会在master上面产生percona.checksumss信息,其中percona库是不会手动生成的,需要自己手动生成,但是checksums会自动生成,但是其中需要注意的是,由于是在master上面生成percona.checksumss信息表,所以rpl@command_host用户需要有percona.checksums的select,insert,update,delete,super,process,lock tables,craete的权限,而且还必须有针对所有表的select,lock tables,super,process权限。
      • 并且为了在slave进行检测,检测的用户也必须要有所以表的select,super,lock tables,process的权限
      • master:
        grant update,delete,insert,super,process,lock tables,create on *.* 'user'@'command_host'
    • slave:
      grant select,process,lock tabes,super on *.* to 'user'@'master_host';

7.pt-table-sync数据同步(在master和slave都可以执行)

  • pt-table-sync --print  --sync-to-master h=slave_host,P=3306,u=repl,p='xxxxx' --database=DB_name --tables=table_name1,table_name2

    --print 打印出在slave执行的SQL
    --sync-to-master 指定slave的IP地址,从show slave status获取master的信息

  • 对于以上MySQL5.6如何实现数据库之间的相互迁移相关内容,大家还有什么不明白的地方吗?或者想要了解更多相关,可以继续关注我们的数据库板块。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL5.6如何实现数据库之间的相互迁移

本文链接: https://lsjlt.com/news/35281.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL5.6如何实现数据库之间的相互迁移
    下面讲讲关于MySQL5.6如何实现数据库之间的相互迁移,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完MySQL5.6如何实现数据库之间的相互迁移这篇文章你一定会有所受益。##...
    99+
    2024-04-02
  • oracle两个数据库之间如何迁移表
    在Oracle数据库中,迁移表可以通过以下几种方式实现:1. 使用Oracle Data Pump工具:Data Pump是Orac...
    99+
    2023-09-17
    oracle 数据库
  • 如何在Mac之间进行数据迁移,macbook怎么迁移数据
    更换了新的Mac电脑,怎样把旧Mac里面的文件、应用程序和帐号信息等迁移到新Mac上?如何在Mac之间进行数据迁移。 一、mac电脑怎么迁移数据 mac电脑怎么迁移数据?据苹果官方消息得知,Mac里储存的文件资料、系统设置、帐户信息...
    99+
    2023-09-01
    macos windows microsoft
  • 如何实现MySQL数据库的无缝迁移
    这篇文章主要介绍如何实现MySQL数据库的无缝迁移,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQL数据库的无缝迁移问题?问:在平时的开始过程中,由于经常“需求理解,架构设计,...
    99+
    2024-04-02
  • 如何实现oracle数据迁移到db2数据库
    这篇文章将为大家详细讲解有关如何实现oracle数据迁移到db2数据库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、表结构迁移在plsql中选择表----->d...
    99+
    2024-04-02
  • 如何在Aurora数据库中实现数据迁移
    在Aurora数据库中实现数据迁移可以通过以下几种方式: 使用AWS Database Migration Service(DMS...
    99+
    2024-04-02
  • 迁移数据库之如何提前进行相关参数修改
    这篇文章主要介绍迁移数据库之如何提前进行相关参数修改,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 开归档进程数undo间隔密码有效期临时表空间查看,验...
    99+
    2024-04-02
  • 云服务器之间如何迁移数据
    云服务器之间迁移数据可以通过以下几种方式进行:1. 通过备份和恢复:首先在源服务器上创建数据备份,然后将备份文件传输到目标服务器上,...
    99+
    2023-08-12
    云服务器
  • MySQL数据如何实现迁移
    下文给大家带来有关MySQL数据如何实现迁移内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完MySQL数据如何实现迁移你一定会有所收获。   ...
    99+
    2024-04-02
  • Mysql如何实现数据迁移
    这篇文章将为大家详细讲解有关Mysql如何实现数据迁移,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。MySQL迁移通常使用的有三种方法:1、数据库直接导出,拷贝文件到新服...
    99+
    2024-04-02
  • 如何使用RMAN实现Oracle数据库迁移
    这篇文章主要介绍了如何使用RMAN实现Oracle数据库迁移,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.打开RMAN[oracle@E...
    99+
    2024-04-02
  • SQL Server数据库实例间迁移Login
    SQL Server数据库实例间迁移Login 1. 流行的方法:T-SQL老式的方法是,准备好CREATE LOGIN脚本,填入账号和密码,保持SID一致,在新服务器实例上执行。微软在KB918...
    99+
    2024-04-02
  • django数据库迁移migration实现
    在django中,ORM(对象关系映射器—object-relational mapper)任务是:模型化数据库,创建数据库由另外一个系统负责(迁移–migr...
    99+
    2024-04-02
  • 【IMPDP】实现不同用户之间的数据迁移——REMAP_SCHEMA参数
    众所周知,IMP工具的FROMUSER和TOUSER参数可以实现将一个用户的的数据迁移到另外一个用户。同样的功能在IMPPDP工具中如何得以体现呢?答案就是:使用IMPPDP的REMAP_SCHEMA参数实现。简单演示一下,供参考。任务:将...
    99+
    2023-06-06
  • 如何迁移MySQL 5.7数据库
    这篇文章主要介绍如何迁移MySQL 5.7数据库,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在源库用mysqldump备份数据库:mysqldump -uroot -p --def...
    99+
    2024-04-02
  • 如何实现springboot中controller之间的相互调用
    springboot controller之间相互调用 SpringBoot之间内部调用 @Autowired private RestTemplate restTemplat...
    99+
    2024-04-02
  • 如何迁移现有数据库到Amazon Aurora
    迁移现有数据库到Amazon Aurora可以通过以下步骤完成: 创建Amazon Aurora实例:首先在AWS Managem...
    99+
    2024-04-09
    Amazon
  • vue项目中data数据之间互相访问的实现
    如下代码: <div id="vue_det"> <input type="number" v-model="text"> ...
    99+
    2024-04-02
  • 在AmazonAurora中如何实现跨数据库的数据迁移和同步
    在Amazon Aurora中,可以使用DMS来实现跨数据库的数据迁移和同步。以下是实现步骤: 创建DMS实例:首先需要在AWS控...
    99+
    2024-04-09
    AmazonAurora
  • 【数据库迁移系列】从MySQL到openGauss的数据库对象迁移实践
    在之前这一篇中我们分享过使用chameleon工具完成MySQL到openGauss的全量数据复制、实时在线复制。9.30新发布的openGauss 3.1.0版本 ,工具的全量迁移和增量迁移的性能不但有了全面提升,而且支持数据库对象视图、...
    99+
    2023-08-17
    数据库 mysql bash 云原生
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作