我想制作一台专用的 SLAVE 机器,用于在三个不同的服务器上复制三个数据库的数据。换句话说,我想做多主 => 单从复制。
有没有办法做到这一点,尽可能简单?
谢谢 !
我想制作一台专用的 SLAVE 机器,用于在三个不同的服务器上复制三个数据库的数据。换句话说,我想做多主 => 单从复制。
有没有办法做到这一点,尽可能简单?
谢谢 !
MySQL(除了 MySQL Cluster)不支持多主复制(具有多个主的从属)。您可以对循环(环)复制(在此处或此处进行描述)进行主-主复制。
在高性能 MySQL 第 2 版中,作者描述了一种使用主-主复制和存储引擎的巧妙组合来模拟多主复制的方法Blackhole
(第 8 章复制 > 复制拓扑 > 自定义复制解决方案 > 模拟多主复制 p. 373 - 375)。
它们显示了两种可能的拓扑:
使用两个 co-master(允许从Master 1切换到Master 2的 master )
Blackhole
Blackhole
使用主链
Blackhole
请注意,此设置仅允许您通过Master 1向DB1发送更新,向Master 2向DB2发送更新。您不能将任一表的更新发送给任意主控。
也许可以将所描述的解决方案与 hack 结合起来,实现真正的 master-master 复制(允许对两个 master 进行更新),该复制使用某种 autoincrement-mangling 并在此处或此处进行了描述。
没办法,我不知道。
但是,如果这里的要求只是拥有一个基于复制的备份机器,您可以轻松地运行三个 MySQL 服务器(在不同的地址和/或端口上)——我们在这里这样做,有两个复制环,每个都包含我们的-house 登台服务器作为节点。
一个现成的想法,如果您确实希望将所有数据放到一个服务器中并且表模式是固定的,或者几乎是静态的并且在您的控制之下:设置一个服务器并打开三个数据库并链接所有使用联合引擎的表。理论上(巨大的警告:我从未尝试过!),然后您可以将这些联合表复制到第二台服务器上(同样,可能在同一台机器上),在单个 MySQL 上为您提供数据的真实实时副本实例。您甚至可以尝试再次复制回来,但这可能是疯狂的:)
我对 MySQL 了解不多,但是您是否无法设置“仅上传”复制配置,其中主/发布者的角色仅收集在从/订阅者级别进行的更新。
可能值得一看maatkit 的表同步——它不是“真正的”复制,但它可能已经足够好了。