暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL tips(十五)——高可用

爱可可的人生记录仪 2020-01-15
254

主备延迟

与数据同步有关的时间点主要包括以下三个:主库 A 执行完成一个事务,写入 binlog,我们把这个时刻记为 T1;之后传给备库 B,我们把备库 B 接收完这个 binlog 的时刻记为 T2;备库 B 执行完成这个事务,我们把这个时刻记为 T3。所谓主备延迟,就是同一个事务,在备库执行完成的时间和主库执行完成的时间之间的差值,也就是 T3-T1。可以通过show slave status的seconds_behind_master查看备库延迟了多少秒。

主备延迟最直接的表现是,备库消费中转日志(relay log)的速度,比主库生产 binlog 的速度要慢。系统时间没有影响。


主备延迟的来源

1.主备机器性能不一致,少见

2.备库压力大,轻视导致备库上的查询耗费了大量的 CPU 资源。一主多从来分担读压力。

3.大事务,不要一次性地用 delete 语句删除太多数据,这是一个大事务。还有一种是大表DDL。


可靠性优先策略

双 M 结构下,主备切换的详细过程是这样的:

1.判断备库 B 现在的 seconds_behind_master,如果小于某个值(比如 5 秒)继续下一步,否则持续重试这一步;

2.把主库 A 改成只读状态,即把 readonly 设置为 true;

3.判断备库 B 的 seconds_behind_master 的值,直到这个值变成 0 为止;

4.把备库 B 改成可读写状态,也就是把 readonly 设置为 false;

5.把业务请求切到备库 B。

这个切换流程,一般是由专门的 HA 系统来完成的。


可用性优先策略

如果强行把步骤 4、5 调整到最开始执行,也就是说不等主备数据同步,直接把连接切到备库 B,并且让备库 B 可以读写,那么系统几乎就没有不可用时间了。但会丢数据,一般数据可靠性要高于可用性的,故不推荐。


参考资料:丁奇,MySQL实战45讲



部分内容来自网络,如有侵权请联系作者删除。


文章转载自爱可可的人生记录仪,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论