今天带来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主从复制延迟原因以及解决方案的详细内容...