Mysql主备延迟

正常情况下,当主库执行更新生成binlog后,都会传到备库并执行,使得主从达到最终一致。 但只有最终一致性并不能完全的保证mysql的高可用能力,还可能存在如下情况:

主备延迟

主备延迟指的是主库执行完成的时间和备库执行完成的时间的差距,可查看mysql备库延迟时间:

 show slave status 

计算方式为事务的binlog的会有时间字段用于记录主库的写入时间,再在备库取出正在执行的事务的时间字段值,计算两边的差值。
在网络正常的情况下,主备延迟的主要原因就是备库接收到binlog到执行这个事务之间的时间差。
可能造成主备延迟的原因:
1.备库机器比主库性能差
2.备库压力大,虽然备库无法写入,但其若再备库上进行大量的查询,同样可能导致其资源消耗过多。
3.大事务,如果主库上的进行的事务操作复杂,导致主库执行花费大量时间,就有可能导致从库延迟(delete语句删除大量数据时,应分次删除而不是一次删除巨量数据)
4.备库并行复制能力

备库并行复制能力

在进行主库和备库切换时,常使用以下策略:

1.可靠性优先策略

备库和从库切换时,走一下步骤:
1.判断备库的延迟,若小于某个值则继续否则就重试
2.把主库改成只读
3.判断备库延迟,直到其值为0
4.备库改成可读写状态
5.业务请求切换到备库

这个过程中步骤3比较耗时,可能会导致业务有一小段时间无法进行写入。根据不同的策略,对这个情况进行抉择。

2.可用性优先策略

如果在上面直接将4,5放到最前面执行,即不等主备数据同步,直接切换,那么就没有不可用的时间,但是可能会出现数据不一致的情况,因此一般还是选u你则可靠性策略。

发布了79 篇原创文章 · 获赞 3 · 访问量 5240

猜你喜欢

转载自blog.csdn.net/SW_LCC/article/details/103656047