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

Ama*_*s45 6 mysql replication database-replication

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

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

谢谢 !

Ste*_*rig 10

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

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

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

使用两个共同主控(允许将主服务器的主服务器从主服务器1切换到主服务器2)

  • Master 1:托管DB1并从Master 2复制DB2 ; DB2中所有表的存储引擎都已更改为,以便数据无法有效地存储在Master 1上.Blackhole
  • Master 2:托管DB2并从Master 1复制DB1 ; DB1中所有表的存储引擎都更改为,以便数据无法有效地存储在Master 2上Blackhole
  • 从机1:主机1主机2复制DB1DB2(允许切换主机); 结果是Slave 1复制了两个有效托管在两个不同主服务器上的数据库.

使用主链

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

请注意,此设置仅允许您通过Master 1DB1发送更新,并将DB2更新到Master 2.您无法将任何表的更新发送到任意主服务器.

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