Mysql 复制的延迟优化

版权声明:此文章转载自极客头条

原文链接:http://mp.weixin.qq.com/s?__biz=MzA4Nzc4MjI4MQ==&mid=2652402135

&idx=1&sn=b4abdc43f0fd8b13f302cd2eb21fa279&scene=0#wechat_redirect


如需转载请联系听云College团队成员小尹 邮箱:yinhy#tingyun.com

Mysql 复制过程中,数据延迟是很重要的问题,无法避免,只能尽量优化,使延时尽可能的小

要想优化复制过程,我们先看下复制的整个过程,看其中哪些步骤可以优化

16090801.jpg

这个过程中有3个主要的时间点

1. 主库写入二进制日志的时间

例如,有一个大的事务,假设要更新3万行数据,需要执行3分钟,那么只有等到全部更新完成,事务提交之后,才会被写入二进制日志

这就影响了binlog写入速度,可以分析一下,这个大的事务是否可以分成多个小事务,如果业务逻辑允许,可以一个事务更新3千行,分为10个事务,每个事务完成后就可以迅速复制到从库

这个过程中需要尽可能的加快写入速度,尽量小步快跑

2. 二进制日志的传输时间

图中的2、3步是日志传输过程,包括网络传输时间,和磁盘写入时间

一般主从服务器都在局域网内,网络不成问题,日志的写入方式是顺序写,所以,磁盘写操作也没问题

这个过程的主要优化思路就是尽量减少日志的传输量

需要分析一下数据库,看是不是所有库都需要进行复制,如果有不必要的库,可以通过参数 Binlog_Ignore_DB 进行忽略

3. 从服务器中SQL回放的时间

默认情况下只有一个SQL线程,串行执行日志的回放过程

Mysql 5.7 已经很好的支持了多线程复制,如果有可能,可以选择这个版本,然后设置好多线程复制,来加快回放速度

想阅读更多技术文章,请访问听云技术博客,访问听云官方网站感受更多应用性能优化魔力。

关于作者

coco秋洁

我爱学习,学习使我快乐

我要评论

评论请先登录,或注册