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

本文介绍了一种优化的数据库主从同步方案,通过将40GB的数据分四次同步,每次仅锁表40分钟,避免了长时间的阻塞。方法包括锁表、备份、配置从库和逐库导入,适用于线上场景。另一种方法则利用--master-data=2参数实现一分钟锁定同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值