根据设计,一个 mysqld 进程不能同时监听两个不同的 Master。
CHANGE MASTER TO 命令仅允许您将一个 Master 设置为读取源。
为了模拟这一点,您必须以编程方式在两个大师之间交替。你是怎样做的 ?
我在 StackOverflow 中描述了如何将从站手动连接到不同的主站,其中每个主站是一台笔记本电脑,而从站是一台中央计算机。
这是基本想法
像这样设置 M1 到 S1 然后 M2 到 S1 的复制
每次从一个 Master 切换到另一个 Master 时,您必须记录以下两个值:SHOW SLAVE STATUS\G
这两个值代表来自 Master 的最后一条 SQL 语句,并且是下一个在 Slave 上执行的 SQL 语句。
有一个主要注意事项:只要 M1 和 M2 正在更新互斥的数据库,该算法就应该没问题。
不管你信不信,我早在 2011 年 5 月就在 ServerFault 中提出了这样的问题。我实际上根据《高性能 MySQL》一书解释了如何使用 BLACKHOLE 存储引擎来模拟真正的多主/单从。