2009-10-16 88 views

回答

10

多主复制(具有多个主站的从站)不支持MySQL(除MySQL集群外)。您可以执行循环(环)复制的主 - 主复制(描述为herehere)。

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

它们示出了两个可能的拓扑:

使用两个共主人(允许从万事达1万事达2切换从设备的主设备)

  • 万事达1 :主机DB1和副本DB2 from Master 2;用于DB2中所有表的存储引擎更改为Blackhole,以便数据不会有效存储在主设备1上。
  • 万事达2:从万事达1主机DB2和复制DB1;在DB1所有表存储引擎改变为Blackhole,使得数据不能被有效地存储在万事达2
  • 从属1:复制DB1DB2从任万事达1Master 2(允许切换主人);结果是从站1复制两个不同主站上有效托管的两个数据库。

使用主链

  • 万事达1:仅承载DB1
  • 万事达2:主机DB2和复制DB1万事达1;在DB1所有表存储引擎改变为Blackhole,使得数据不能被有效地存储在万事达2
  • 从属1:复制DB1DB2万事达2;结果是从站1复制两个不同主站上有效托管的两个数据库。

请注意,此设置只允许你通过硕士1和更新更新发送到DB1DB2硕士2。你不能发送更新到任何主表的任何表。

Pehaps它可能与黑客所描述的解决方案结合起来,使用某种自动增量-首被搞砸的,并描述herehere一个真正的主 - 主复制(允许更新都是原件)。

0

没有办法,我知道。但是,如果这里的要求只是简单地拥有一个基于复制的备份机器,那么您可以很容易地运行三个MySQL服务器(在不同的地址和/或端口上) - 我们在这里执行此操作,并带有两个复制环每个包括我们的内部登台服务器作为节点。

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

0

我对MySQL没有太多了解,但是您是否有可能设置“仅上载”复制配置,其中主/发布者的角色仅用于收集从属/订户水平。

相关问题