Mysql主从延迟的原因和解决方案

MySQL主从复制

首先说明一下,binlog记录的方式主要是两种(排除Mixed)

statement--SBR 基于操作的SQL语句
优点:并不需要记录每一条SQL语句和每一行数据的变化,减少了binlog日志量,,节约了I/O,提高了性能。
缺点:在某些情况下导致主备数据不一致。

row---RBR  基于行的变更情况(变化前后的数据记录)
优点:不记录每条SQL语句的上下文信息,只记录数据的详细修改细节,最为安全。
缺点:会产生大量日志,消耗磁盘空间。

MySQL的主从复制过程,可以参考下面的文章,此处省略。

主从复制过程

主从延迟

t1时刻,主库执行完事务,并写入binlog
t2时刻,从库接收主库的binlog(IO线程),并写入中继日志
t3时刻,从库的SQL线程执行SQL语句,完成事务

主从延迟,就是从库执行完成到主库执行完成中间的时间差大于(t3-t1)

主从延迟的可能出现的原因与解决方案

1)主从服务器的硬件差异。从库机器性能差,无法及时同步主库数据,只需要更换新的设备或设备保持一致即可。

2)从库的读压力大。一般主库“写”,从库“读”。大量“读”请求命中从库,会大量消耗从库系统资源,进而影响从库的同步速度。此时可以构建一主多从架构,共同分担“读”请求的压力。

3)大事务。如果事务在主库执行15分钟,在从库同步也至少15分钟,造成主从延迟。如果可以,事务分批进行。

4)网络延迟。网络通信状况也会影响主从复制(影响从库的IO线程获取主库binlog),只能升级带宽,优化网络。

5)从库过多。从节点一般3-5个最佳。

你可能感兴趣的:(MySQL,mysql,数据库)