古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。

mysql在线迁移&主从同步详细步骤

数据库 admin 121℃ 0评论

整体流程逻辑如下:

  • 在服务器A上创建一个复制账号;
  • 服务器A和服务器B上分别设置不同的server_id;
  • 服务器A执行一次完整的逻辑备份;
  • 从服务器A拷贝备份到服务器B;
  • 服务器B上执行一次全量恢复;
  • 服务器B上执行change master设置主从复制;
  • 服务器B上执行start slave启动复制;
  • 服务器A上设为read only;
  • 服务器B设为主库(服务器B把服务器A转过来的binlog消化完);

step 1. 在3306库上创建一个复制用户

此处示例用户和密码分别为repl和repl4Slave。

step 2. 修改3306库和3307库上的server_id,确保不一样

3306库

3307库

发现一样,修改server_id:

在3307上执行:

修改3307库的配置文件,把server_id改成102

vi /u01/my3307/my.cnf 

step 3. 在3306库上做一个逻辑全备

–single-transaction数据量大的时候不锁表

–master-data=2 记录备份的时候日志文件和日志位置,如下:

如果dump出来的文件/tmp/test.sql文件过大,可以直接grep搜索

step 4. 把dump出来的3306的dump文件拷贝到3307

自行scp传送即可。

step 5. 在3307库上新建跟3306dump出来的文件一样的数据库

我在3306上dump的是test库的数据,所以在3307上新建一个一样的数据库

step 6. 直接在3307上恢复

查看当前选中的是哪个数据库

选中需要恢复到的目标库

应用dump出来的文件进行恢复

再次查看test数据库上是否有t1表以及t1表中数据是否已经有了。

step 7. 设置3307复制库是源库的从数据库

在3307上执行下面的命令:

这条命令的意思是:设置3306为3307的主库,通过3306源库的repl用户进行复制,开始复制的位置是binlog日志binlog.000018的718位置处(也就是全备后的日志位置)。

启动slave在3307上复制

查看slave的状态:

step 8. 确认全备后又插入的数据是否已经复制过来了

在3306的test库上的t1表在插入一条数据

在3307上查询数据是否过来

验证数据已经过来了!

step 9. 在3306源库上把数据库设置成readonly状态

这样设置以后主库3306下所有的用户(包括超级用户root),都无法修改该库下的任何数据!

step 10. 切换主从

在确认从库3307完全应用完主库的所有日志以后,就可以切换主从。即把应用切换到3307,3306作为备库。

原文链接:https://blog.csdn.net/kadwf123/java/article/details/79250499

转载请注明:北凉柿子 » mysql在线迁移&主从同步详细步骤

喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址