mysql出现主从同步延迟有哪些原因

mysql出现主从同步延迟有哪些原因,第1张

1.从库太多导致复制延迟

优化:建议从库数量3-5个为宜

2.从库硬件比主库硬件差

优化:提升硬件性能

3.慢SQL语句过多

优化:SQL语句执行时间太长,需要优化SQL语句

4.主从复制的设计问题

优化:主从复制单线程,可以通过多线程IO方案解决;另外MySQL5.6.3支持多线程IO复制。

5.主从库之间的网络延迟

优化:尽量链路短,提升端口带宽

6.主库读写压力大

优化:前端加buffer和缓存。主从延迟不同步:

不管有多延迟,只要不影响业务就没事

7、业务设计缺陷导致延迟影响业务

优化:从库没有数据改读主库

Mysql主从同步延迟发生 现象: pos一直保持不变,并且behind一直在增加, 备库执行: SQL thread State列状态如下: 代表 线程已经从中继日志读取一个事件,可以对事件进行处理了。 查看binlog: 查看表结构发现没有主键索引。 延迟发生原因: 首先mysql主从是基于行的复制。 举例解释下什么是基于行的复制,假设主库执行以下sql删除了表A中的100条数据: 这时mysql会把这个SQL按照每条记录,拆分成100条delete SQL在备库上执行,mysql这么做的目的也是最大程度的保证同步数据的可靠性。 但是可靠性的提升伴随而来的便是日志量的增多,同步过程会占用大量带宽。 其次,该表即无主键,也没有索引。 假设还是以上对A表的删除 *** 作,拆成的100条delete SQL传递并且在备库执行,因为表即无主键,也没有索引,所以每执行一次都要做全表扫描才能定位到要删除的那一条数据,可想而知同步效率会低很多。 解决方案: 1 表设计时就要有主键; 2 如果延迟已经发生,并且表不是特别大的情况下,在备库上为该表创建索引或是主键。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8571556.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存