我想制作一个专用的SLAVE机器,用于三台不同服务器上的三个数据库的数据复制。换句话说,我想要做Multiple Master => SIngle从属复制。是否可以使用MySQL进行N-master => 1-slave复制?
有没有办法做到这一点,尽可能简单?
谢谢!
我想制作一个专用的SLAVE机器,用于三台不同服务器上的三个数据库的数据复制。换句话说,我想要做Multiple Master => SIngle从属复制。是否可以使用MySQL进行N-master => 1-slave复制?
有没有办法做到这一点,尽可能简单?
谢谢!
多主复制(具有多个主站的从站)不支持MySQL(除MySQL集群外)。您可以执行循环(环)复制的主 - 主复制(描述为here或here)。
在High performance MySQL 2nd edition,作者描述了一种使用主 - 主复制的巧妙组合和Blackhole
存储引擎来模拟多主复制(第8章复制>复制拓扑>定制复制解决方案>仿效多主复制第373 - 375) 。
它们示出了两个可能的拓扑:
使用两个共主人(允许从万事达1到万事达2切换从设备的主设备)
Blackhole
,以便数据不会有效存储在主设备1上。Blackhole
,使得数据不能被有效地存储在万事达2使用主链
Blackhole
,使得数据不能被有效地存储在万事达2请注意,此设置只允许你通过硕士1和更新更新发送到DB1到DB2到硕士2。你不能发送更新到任何主表的任何表。
Pehaps它可能与黑客所描述的解决方案结合起来,使用某种自动增量-首被搞砸的,并描述here或here一个真正的主 - 主复制(允许更新都是原件)。
没有办法,我知道。但是,如果这里的要求只是简单地拥有一个基于复制的备份机器,那么您可以很容易地运行三个MySQL服务器(在不同的地址和/或端口上) - 我们在这里执行此操作,并带有两个复制环每个包括我们的内部登台服务器作为节点。
如果您确实希望将所有数据都放到单个服务器中,并且表格模式是固定的或者非常静态的并且在您的控制之下,那么您就可以实现这个想法:建立一个服务器,其中包含三个数据库并使用联合引擎链接所有表。在理论上(巨大的警告:我从来没有尝试过!),然后您可以将这些联合表复制到另一台服务器上(也可能在同一台机器上),从而为您提供真正的单个MySQL数据的实时副本实例。你甚至可以尝试再次复制,但这种方式可能是疯狂:)
我对MySQL没有太多了解,但是您是否有可能设置“仅上载”复制配置,其中主/发布者的角色仅用于收集从属/订户水平。
值得一看maatkit's table sync - 这不是“真正的”复制,但它可能是够好的。