MySQL进阶45讲【24】MySQL是怎么保证高可用的? 红太狼 2024-05-07 22:27 93阅读 0赞 ## 1 前言 ## 在上一篇文章中,介绍了binlog的基本内容,在一个主备关系中,每个备库接收主库的binlog并执行。 正常情况下,只要主库执行更新生成的所有binlog,都可以传到备库并被正确地执行,备库就能达到跟主库一致的状态,这就是最终一致性。 但是,MySQL要提供高可用能力,只有最终一致性是不够的。这篇文章就分析一下。 这里,回顾一下上一篇文章中讲到的双M结构的主备切换流程图。 ![在这里插入图片描述][b200e2c1f2534f86a73ea342ca4a1b68.png] ## 2 主备延迟 ## 主备切换可能是一个主动运维动作,比如软件升级、主库所在机器按计划下线等,也可能是被动操作,比如主库所在机器掉电。 接下来,我们先一起看看主动切换的场景。 在介绍主动切换流程的详细步骤之前,要先说明一个概念,即“同步延迟”。与数据同步有关的时间点主要包括以下三个: 1. 主库A执行完成一个事务,写入binlog,我们把这个时刻记为T1; 2. 之后传给备库B,我们把备库B接收完这个binlog的时刻记为T2; 3. 备库B执行完成这个事务,我们把这个时刻记为T3。 所谓主备延迟,就是同一个事务,在备库执行完成的时间和主库执行完成的时间之间的差值,也就是T3-T1。 可以在备库上执行showslave status命令,它的返回结果里面会显示seconds\_behind\_master,用于表示当前备库延迟了多少秒。 [b200e2c1f2534f86a73ea342ca4a1b68.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/05/07/77a2a3564e44459fb43d075c73b8d4dd.png
相关 MySQL进阶45讲【15】“order by“是怎么工作的? MySQL进阶45讲【15】"order by"是怎么工作的? 柔情只为你懂/ 2024年05月07日 22:32/ 0 赞/ 89 阅读
相关 MySQL进阶45讲【8】MySQL事务到底是隔离的还是不隔离的? MySQL进阶45讲【8】MySQL事务到底是隔离的还是不隔离的? 喜欢ヅ旅行/ 2024年05月07日 22:30/ 0 赞/ 125 阅读
相关 MySQL进阶45讲【23】MySQL是怎么保证主备一致的? MySQL进阶45讲【23】MySQL是怎么保证主备一致的? 柔光的暖阳◎/ 2024年05月07日 22:27/ 0 赞/ 87 阅读
相关 MySQL进阶45讲【22】MySQL是怎么保证数据不丢的? MySQL进阶45讲【22】MySQL是怎么保证数据不丢的? Myth丶恋晨/ 2024年05月07日 22:26/ 0 赞/ 78 阅读
还没有评论,来说两句吧...