我想在三台不同的服务器上制作一台专用的SLAVE机器用于三个数据库的数据复制。换句话说,我想做 Multiple Master => SIngle Slave 复制。
有什么方法可以做到这一点,尽可能简单吗?
谢谢!
最佳答案
MySQL(MySQL Cluster 除外)不支持多主机复制(一个从机拥有多个主机)。您可以执行循环(环)复制的主-主复制(描述 here 或 here )。
在High performance MySQL 2nd edition作者描述了一种使用主-主复制和 Blackhole
的巧妙组合来模拟多主复制的方法。存储引擎(第 8 章复制 > 复制拓扑 > 自定义复制解决方案 > 模拟多主机复制 p. 373 - 375)。
它们展示了两种可能的拓扑结构:
使用两个 co-master(允许将 slave 的 master 从 Master 1 切换到 Master 2)
- Master 1:托管 DB1 并从 Master 2 复制 DB2; DB2 中所有表的存储引擎都更改为
Blackhole
,这样数据就不会有效地存储在 Master 1 上。 - Master 2:托管 DB2 并从 Master 1 复制 DB1; DB1 中所有表的存储引擎都更改为
Blackhole
,这样数据就不会有效地存储在 Master 2 上
- Slave 1:从 Master 1 或 Master 2复制 DB1 和 DB2 strong>(允许切换主人);结果是 Slave 1 复制了两个有效托管在两个不同主服务器上的数据库。
使用主链
- Master 1: 仅托管 DB1
- Master 2:托管 DB2 并从 Master 1 复制 DB1; DB1 中所有表的存储引擎都更改为
Blackhole
,这样数据就不会有效地存储在 Master 2 上
- Slave 1:从 Master 2 复制 DB1 和 DB2;结果是 Slave 1 复制了两个有效托管在两个不同主服务器上的数据库。
请注意,此设置仅允许您通过 Master 1 将更新发送到 DB1 并将对 DB2 的更新发送到 Master 2 强>。您不能将对任一表的更新发送给任意主机。
也许可以将所描述的解决方案与 hack 相结合,以实现真正的主-主复制(允许更新两个主服务器),该复制使用某种自动增量修改并被描述为 here或 here .
关于mysql - 是否可以使用 MySQL 进行 N-master => 1-slave 复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1576603/