MySQL主备的基本原理
如图1所示就是基本的主备切换流程。
图 1 MySQL主备切换流程
在状态1中,客户端的读写都直接访问节点A,而节点B是A的备库,只是将A的更新都同步过来,到本地执行。这样可以保持节点B和A的数据是相同的。
当需要切换的时候,就切成状态2。这时候客户端读写访问的都是节点B,而节点A是B的备库。
在状态1中,虽然节点B没有被直接访问,但是我依然建议你把节点B(也就是备库)设置成只读(readonly)模式。这样做,有以下几个考虑:
-
有时候一些运营类的查询语句会被放到备库上去查,设置为只读可以防止误操作;
-
防止切换逻辑有bug,比如切换过程中出现双写,造成主备不一致;
-
可以