可以做IN-master =>使用MySQL进行1-slave复制?

时间:2009-10-16 07:19:50

标签: mysql replication database-replication

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

有没有办法做到这一点,尽可能简单?

谢谢!

4 个答案:

答案 0 :(得分:10)

MySQL不支持多主复制(具有多个主服务器的从服务器)(除了MySQL Cluster)。您可以执行循环(环)复制的主 - 主复制(描述为herehere)。

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

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

使用两个共同主人(允许将奴隶主从 Master 1 切换到 Master 2

  • 掌握1:托管 DB1 并从 Master 2 复制 DB2 ; DB2 中所有表的存储引擎更改为Blackhole,以便数据无法有效存储在 Master 1 上。
  • 掌握2:托管 DB2 并从 Master 1 复制 DB1 ; DB1 中所有表格的存储引擎更改为Blackhole,以便数据无法有效存储在 Master 2
  • 从属1: Master 1 Master 2 复制 DB1 DB2 strong>(允许切换大师);结果是 Slave 1 复制了两个有效托管在两个不同主服务器上的数据库。

使用主链

  • 主人1:仅托管 DB1
  • 掌握2:托管 DB2 并从 Master 1 复制 DB1 ; DB1 中所有表格的存储引擎更改为Blackhole,以便数据无法有效存储在 Master 2
  • 从属1: Master 2 复制 DB1 DB2 ;结果是 Slave 1 复制了两个有效托管在两个不同主服务器上的数据库。

请注意,此设置仅允许您通过 Master 1 DB1 发送更新,并将 DB2 的更新发送到 Master 2 即可。您无法将任一表的更新发送给任意母版。

Pehaps有可能将描述的解决方案与hack相结合,以实现真正的主 - 主复制(允许更新两个主人),使用某种自动增量修改并描述herehere

答案 1 :(得分:0)

我不知道。

但是,如果此处的要求只是拥有一个基于复制的备份计算机,那么您可以轻松地运行三个MySQL服务器(在不同的地址和/或端口上) - 我们在这里执行此操作,每个都有两个复制环将我们的内部登台服务器作为节点包括在内。

如果您确实希望将所有数据放入单个服务器并且表模式要么是固定的,要么是非常静态并且在您的控制之下,那么这是一个非常简单的想法:设置一个服务器,其中包含三个数据库和使用联合引擎链接所有表。理论上(巨大的警告:我从未尝试过它!),然后您可以将这些联合表复制到第二台服务器上(同样可能在同一台机器上),在单个MySQL上为您提供数据的真实实时副本实例。你甚至可以尝试再次复制,但这种方式可能就是疯狂:)

答案 2 :(得分:0)

我对MySQL知之甚少,但是你不可能设置'仅上传'复制配置,其中主/发布者的角色只是收集在从/订阅者级别进行的更新。

答案 3 :(得分:0)

值得一看maatkit's table sync - 这不是“真正的”复制,但它可能已经足够了。