好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

MySQL主从复制延迟原因以及解决方案

今天带来MySQL主从复制延迟原因以及解决方案教程详解

来源:公众号「神谕的暗影长廊」

在异步或半同步的复制结构中,从库出现延迟是一件十分正常的事。 虽出现延迟正常,但是否需要关注,则一般是由业务来评估。 如:从库上有需要较高一致性的读业务,并且要求延迟小于某个值,那么则需要关注。

简单概述一下复制逻辑:

1、主库将对数据库实例的变更记录到binlog中。 2、主库会有 binlog dump 线程实时监测binlog的变更并将这些新的events推给从库( Master has sent all binlog to slave; waiting for more updates ) 3、从库的 IO Thread 接收这些events,并将其记录入relaylog。 4、从库的 SQL Thread 读取relaylog的events,并将这些events应用(或称为重放)到从库实例。

上述为默认的异步复制逻辑,半同步复制又有些许不同,此处不再赘述。

此外,判断从库有延迟是十分简单的一件事: 在从库上通过 SHOW SLAVE STATUS 检查 Seconds_Behind_Master 值即可。

产生延迟的原因及处理思路 主库DML请求频繁(tps较大)

即主库写请求较多,有大量insert、delete、update并发操作,短时间产生了大量的binlog。

【原因分析】

主库并发写入数据,而从库 SQL Thread 为单线程应用日志,很容易造成relaylog堆积,产生延迟。

【解决思路】

做sharding,通过scale out打散写请求。或考虑升级到MySQL 5.7+,开启基于逻辑时钟的并行复制。

主库执行大事务

以上就是关于MySQL主从复制延迟原因以及解决方案全部内容,感谢大家支持自学php网。

查看更多关于MySQL主从复制延迟原因以及解决方案的详细内容...

  阅读:69次