MySQL进阶45讲【23】MySQL是怎么保证主备一致的?

柔光的暖阳◎ 2024-05-07 22:27 205阅读 0赞

1 前言

在前面的文章中,不止一次地和大家提到了binlog,大家知道binlog可以用来归档,也可以用来做主备同步,但它的内容是什么样的呢?为什么备库执行了binlog就可以跟主库保持一致了呢?

今天就正式地和大家介绍一下它。

毫不夸张地说,MySQL能够成为现下最流行的开源数据库,binlog功不可没。

在最开始,MySQL是以容易学习和方便的高可用架构,被开发人员青睐的。而它的几乎所有的高可用架构,都直接依赖于binlog。虽然这些高可用架构已经呈现出越来越复杂的趋势,但都是从最基本的一主一备演化过来的。

这篇文章主要介绍主备的基本原理。理解了背后的设计原理,也可以从业务开发的角度,来借鉴这些设计思想。

2 MySQL主备的基本原理

如图所示就是基本的主备切换流程。

在这里插入图片描述
在状态1中,客户端的读写都直接访问节点A,而节点B是A的备库,只是将A的更新都同步过来,到本地执行。这样可以保持节点B和A的数据是相同的。

当需要切换的时候,就切成状态2。这时候客户端读写访问的都是节点B,而节点A是B的备库。在状态1中,虽然节点B没有被直接访问,但是最好把节点B(也就是备库)设置成只读(readonly)模式。这样做,有以下几个考虑:

  1. 有时候一些运营类的查询语句会被放到备库上去查,设置为只读可以防止误操作&#x

发表评论

表情:
评论列表 (有 0 条评论,205人围观)

还没有评论,来说两句吧...

相关阅读