MySQL实践篇-MySQL是怎么保证主备一致的?

MySQL是怎么保证主备一致的?

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

MySQL主备的基本原理

主备切换流程图

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

在切换的时候,就切成状态2.这时候客户端读写访问的都是节点B,而节点A是B的备库。

建议将备库设置成只读模式:

  • 有时候一些运营类的查询语句会被放到备库上去查,设置为只读可以防止误操作;
  • 防止切换逻辑有bug;
  • 可以用readonly状态,来判断节点角色。

readonly设置对超级权限用户是无效的,而用于同步更新的线程,就拥有超级权限。

主从复制内部流程