Mysql主从同步数据最快速的方法

场景1:单台数据库,四个数据库,test1,test2,test3,test4,平均个库10G文件,共40G
正常主从步骤,备份(三个小时),传输(一个小时),导入(三个小时),mysql主库需要锁表至少连续7个小时,这个线上是很难接受的

优化后的方案只需要分开四次,每次主库锁表只需要40分钟左右

操作1:mysql 主库锁表,记录Relay_Log_File,Read_Master_Log_Pos,导出数据库。

注意:FLUSH TABLES WITH READ LOCK;锁表为线程锁,当断开当前连接后自动解锁,需要放在screen后台,导出数据库时加上参数 导出master Relay_Log_File ,Read_Master_Log_Pos记录。导出数据后 对比 show master查看到的数值和mysql库文件中记录的一致。

操作2:确保 show master status 查看到的数值和mysql库文件中记录的一致。解锁mysql主库。此时线上mysql已经能正常处理读写事务。

操作3:从库 my.cnf配置,同步忽略数据库

replicate-do-db = test1

replicate-ignore-db = test2

replicate-ignore-db = test3

replicate-ignore-db = test4

mysql 配置主从关系,指定 刚刚记录的 Relay_Log_File ,Read_Master_Log_Pos,启动主从,start slave;

观察,mysql主从状态,mysql从Relay_Log_File会同步到主的最新数值。

到此锁住库40分钟解决了第一个库

操作四:继续同步其他数据库test2

首先确认mysql主从 Read_Master_Log_Pos一致

锁主表,停从库slave,导出数据库test2,解锁主库锁表,修改从库my.cnf加上同步test2,重启mysql,导入数据库2,启动slave... 

锁住库40分钟左右,同步完第二个数据库。

.....

只需要找空闲时间操作,分四次,每次40分钟,需要7个小时主从数据就同步完了..

方法二:无论主库多大,只需要锁库一分钟

备份数据带参数 --master-data=2 --single-transaction

主库锁表,然后从库先停止主从。确认 主从Read_Master_Log_Pos一致

准备备份参数是锁表设置一致性快照,然后解锁表,根据一致性快照备份数据,只支持innodb

主从解锁表,备份好后,导入从库,启动主从。自动同步新产生的数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值