我认为你可以依赖
Percona XtraDB Cluster Feature 2: Multi-Master replication 比常规 MySQL 复制
他们承诺如下:
我所说的 Multi-Master 是指能够写入集群中的任何节点,并且不用担心最终会出现不同步的情况,因为如果您不谨慎地写入错误的服务器,常规 MySQL 复制经常会发生这种情况.
使用集群,您可以写入任何节点,集群保证写入的一致性。也就是说,写入要么在所有节点上提交,要么根本不提交。
多主架构的两个重要后果。
首先:我们可以让多个应用程序并行工作。这为我们提供了真正的并行复制。 Slave可以有很多并行线程,可以通过变量wsrep_slave_threads进行调优
第二:可能有一小段时间,slave 与 master 不同步。发生这种情况是因为主设备可能比从设备更快地应用事件。如果您确实从从站读取,您可能会读取尚未更改的数据。你可以从图中看到。但是,您可以通过使用变量 wsrep_causal_reads=ON 来更改此行为。在这种情况下,slave 上的读取将等到应用事件(但这会增加读取的响应时间。slave 和 master 之间的这种差距是这个复制命名为“virtually synchronous replication”而不是真正的“@987654324”的原因@”
所描述的 COMMIT 行为也有第二个严重的含义。
如果您将写入事务运行到两个不同的节点,集群将使用乐观锁定模型。
这意味着事务不会在单个查询期间检查可能的锁定冲突,而是在 COMMIT 阶段检查。你可能会在 COMMIT 上得到 ERROR 响应。我要强调这一点,因为这是您可能会遇到的与常规 InnoDB 的不兼容之一。在 InnoDB 中,通常 DEADLOCK 和 LOCK TIMEOUT 错误发生在特定查询的响应中,但不会发生在 COMMIT 上。好吧,如果您遵循良好的做法,您仍然会在“COMMIT”查询后检查错误代码,但我看到许多应用程序不这样做。
So, if you plan to use Multi-Master capabilities of XtraDB Cluster, and run write transactions on several nodes, you may need to make sure you handle response on “COMMIT” query.
You can find it here along with pictorial expln