mysql - 是否可以使用 MySQL 进行 N-master => 1-slave 复制?

标签 mysql replication database-replication

我想在三台不同的服务器上制作一台专用的SLAVE机器用于三个数据库的数据复制。换句话说,我想做 Multiple Master => SIngle Slave 复制。

有什么方法可以做到这一点,尽可能简单吗?

谢谢!

最佳答案

MySQL(MySQL Cluster 除外)不支持多主机复制(一个从机拥有多个主机)。您可以执行循环(环)复制的主-主复制(描述 herehere )。

High performance MySQL 2nd edition作者描述了一种使用主-主复制和 Blackhole 的巧妙组合来模拟多主复制的方法。存储引擎(第 8 章复制 > 复制拓扑 > 自定义复制解决方案 > 模拟多主机复制 p. 373 - 375)。

它们展示了两种可能的拓扑结构:

使用两个 co-master(允许将 slave 的 master 从 Master 1 切换到 Master 2)

  • Master 1:托管 DB1 并从 Master 2 复制 DB2DB2 中所有表的存储引擎都更改为 Blackhole,这样数据就不会有效地存储在 Master 1 上。
  • Master 2:托管 DB2 并从 Master 1 复制 DB1DB1 中所有表的存储引擎都更改为 Blackhole,这样数据就不会有效地存储在 Master 2
  • Slave 1:从 Master 1Master 2DB1 和 DB2 strong>(允许切换主人);结果是 Slave 1 复制了两个有效托管在两个不同主服务器上的数据库。

使用主链

  • Master 1: 仅托管 DB1
  • Master 2:托管 DB2 并从 Master 1 复制 DB1DB1 中所有表的存储引擎都更改为 Blackhole,这样数据就不会有效地存储在 Master 2
  • Slave 1:从 Master 2 复制 DB1DB2;结果是 Slave 1 复制了两个有效托管在两个不同主服务器上的数据库。

请注意,此设置仅允许您通过 Master 1 将更新发送到 DB1 并将对 DB2 的更新发送到 Master 2 。您不能将对任一表的更新发送给任意主机。

也许可以将所描述的解决方案与 hack 相结合,以实现真正的主-主复制(允许更新两个主服务器),该复制使用某种自动增量修改并被描述为 herehere .

关于mysql - 是否可以使用 MySQL 进行 N-master => 1-slave 复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1576603/

相关文章:

php - Laravel Eloquent 关系——如何组合 id 和 date 上的两个关系?

mysql - AWS RDS MySQL 只读副本滞后问题

postgresql - Postgres - BDR 复制 - auto_increment 主键的问题

PostgreSQL 沃尔玛。是否可以在 1 个具体数据库中回滚/前滚更改?

MySQL 锁定从属数据库

postgresql - Postgres 复制 : Incomplete Startup Packet

mysql - Google Cloud SQL 行大小限制

mysql - mysql中的IF条件

mysql - 摆脱 JPA 条件中子查询产生的冗余连接

windows-10 - 获取当前版本 Windows 10 的 dfsutil?