高性能MySQL:主动模式下的主——主复制

作者:港云互联 时间:2019-12-09

       主一主复制(也叫双主复制或双向复制)包含两台服务器,每一个 都被配置成对方的主库和备库,换句话说,它们是一对主库。





       主动一主动模式下主一主复制有些应用场景, 但通常用F特殊的目的,一个可能的应用场景是两个处于不同地理位置的办公室,并且都需要一份可写的数据拷贝。





       这种配置最大的问题心如何解决冲突,两个可写的互主服务器导致的问题非常多,这通常发生在两台服务器同时修改行记录, 成同时在两台服务器上向一个包含AUTO_INCREMENT列的表里插入数据。

高性能MySQL:主动模式下的主——主复制




MySQL不支持多主库复制





       多主库复制(mutioure rplieaion)特指一个各库有多个主库。不管之前你知道什么,但MySQL (和其他数据库产品不一样)现在不支持,本章稍后我们会向你介绍如何模仿多主库复制。





       MySQL 5.0增加了些特性, 使得这种配置稍微安全 了点,就是设置auto increment_increment和auto_ increment offset。 通过这两个选项可以让MySQL自动为INSERT语句选择不互相冲突的值。然而允许向两台主库上写人仍然很危险。在两台机器上根据不同的顺序更新,可能会导致数据不同步。例如,一个只有一列的表, 只有一行值为1的记录,假设同时执行下面两条语句:





在第一台主库上:





       mysql> UPDATE tbl SET col=col + 1;





在第二台主库上:





       mysql> UPDATE tbl SET col=col * 2;





       事实上这些问题经常一周发生三次,并且我们也发现需要好几个月才能解决这些问题。那么结果呢?一台服务器上值为4,另一台的值为3,并且没有报告任何复制错误。





       数据不同步还仅仅是开始。当正常的复制发生错误作止了,但应用仍在同时向两台服务器写人数据,这时候会发生什么呢?你不能简单地把数据从一台服务器复制到另外一台,因为这两台机器上需要复制的数据都可能发生了变化。解决这个问题将会非常困难。





       如果足够仔细地配置这种架构,例如很好地划分数据和权限,并且你很清楚自己在做什么,可以避免一些问题。 然而这通常很难做好,并且有更好的办法来实现你所需要的。





       总地来说,允许向两个服务器上写人所带来的麻烦远远大于其带来的好处,但下一节描述的主动被动模式则会非常有用。


相关文章

新人注册,即送价值满880元现金劵

立即注册>>
客服 电话 反馈 活动 回顶部

服务热线

+852-5764-9835

1对1贴心服务,7X24小时热线