MySQL 复制:1 个从站/多个主站

Tho*_*mas 5 mysql replication

我有一个带有 2 个 Web 服务器和 2 个数据库服务器的 Web 应用程序。DB 是为多主复制设置的。(这是主要环境)

我也在不同的位置上有完全相同的设置作为备用,以防主环境出现故障。(这是备份环境)

我需要的是备份环境与主站点的数据库同步。但是,两种环境中的所有 DB 都已配置复制。

我怎样才能实现我的目标?

谢谢

Rol*_*DBA 3

这实际上是一个有趣的场景,因为我早在 2011 年 3 月 29 日就在 DBA StackExchange 中解决了这个问题

基本思想是将 MySQL Replication 与DRBDucarp结合使用

这是您需要的:

  • 两个 DRBD 集群,每个数据中心一个
  • 每个数据中心的 DRBD 对通过交叉电缆连接(可能使用 192.168.xx 子网)
  • DRBD 主数据库正在运行 MySQL
  • 一个数据中心的 DRBD 主节点通​​过 ucarp 与另一数据中心的 DRBD 主节点运行多主复制(双向)
  • 每个数据中心任何需要的读取从属设备都将通过 ucarp 建立 DBVIP,以便在该数据中心的 MySQL 中使用

通过此设置,您可以在两个数据中心内进行块级复制。如果您使用 MySQL 5.5,您可以让半同步复制将 SQL 发送到另一个数据中心,而无需等待 SQL 执行,只需确认。这可以将标准 MySQL 异步复制通常导致 MySQL Master 的间歇性降至最低。如果出现突然的网络延迟,数据中心之间的 MySQL 复制将从半同步切换为异步。一旦情况改善,MySQL Replication 就会切换回半同步。

警告

此设置不会防止表损坏,特别是在涉及 MyISAM 的情况下。即使使用 DRBD,损坏的 MyISAM 表的块复制也会产生...您猜对了,DRBD 辅助数据库中的损坏的 MyISAM 表。因此,最好所有用户数据都是InnoDB。