Mysql 复制过程中,数据延迟是很重要的问题,无法避免,只能尽量优化,使延时尽可能的小
要想优化复制过程,我们先看下复制的整个过程,看其中哪些步骤可以优化
这个过程中有3个主要的时间点
1. 主库写入二进制日志的时间
例如,有一个大的事务,假设要更新3万行数据,需要执行3分钟,那么只有等到全部更新完成,事务提交之后,才会被写入二进制日志
这就影响了binlog写入速度,可以分析一下,这个大的事务是否可以分成多个小事务,如果业务逻辑允许,可以一个事务更新3千行,分为10个事务,每个事务完成后就可以迅速复制到从库
这个过程中需要尽可能的加快写入速度,尽量小步快跑
2. 二进制日志的传输时间
图中的2、3步是日志传输过程,包括网络传输时间,和磁盘写入时间
一般主从服务器都在局域网内,网络不成问题,日志的写入方式是顺序写,所以,磁盘写操作也没问题
这个过程的主要优化思路就是尽量减少日志的传输量
需要分析一下数据库,看是不是所有库都需要进行复制,如果有不必要的库,可以通过参数 Binlog_Ignore_DB 进行忽略
3. 从服务器中SQL回放的时间
默认情况下只有一个SQL线程,串行执行日志的回放过程
Mysql 5.7 已经很好的支持了多线程复制,如果有可能,可以选择这个版本,然后设置好多线程复制,来加快回放速度
5.7 多线程复制的配置可以参考之前的一篇文章
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有