理论上的小问题。 我已经完成了一些2节点的MySQL 5.1集群用户对多个MMM实例的控制。
我们开始了一些testing,快乐地杀死了作家节点,并且一切顺利,应用程序一路畅通,忘却了DBMS的混乱。
然后我想,如果在生产中第一个服务器A停机,服务器B接pipe,更多的工作完成,最后B也停止。
如果系统pipe理员首先从A重新启动集群,然后joinB,同时在A的过期数据上完成工作?
MySQL是否有一个仲裁机制,使A(甚至B)处于恢复模式,直到它确定了最新的事务继续?
非常感谢,如果这是一个常见问题…
这可能更多的是一个初学者的答案,让讨论滚动。 我希望有一些MySQL专家能够为您提供正确的答案… 😉
但是对于这种情况,我已经configuration了我的集群以使用偏移量自动更新序列,以便当您将主主设备重新联机时,写入从设备的数据不会像这样冲突;
所以在主要的主人
auto_increment_increment=10 auto-increment-offset=1
在从机上(每个从机都有一个不同的偏移量)
auto_increment_increment=10 auto-increment-offset=2
这意味着您可以将二进制日志复制到从服务器,再回到主服务器以恢复在主服务器停机期间写入的数据。
如果您正在使用MySQL 5.1+(没有服务器错误版本),那么您可以configurationmaster-master,并让master将“lost”查询自动从slave复制回来。
(不幸的是,我认为这超出了MMM的能力,但是我再也没有看过MMM几年)