我有一个带有 2 个 Web 服务器和 2 个数据库服务器的 Web 应用程序。DB 是为多主复制设置的。(这是主要环境)
我也在不同的位置上有完全相同的设置作为备用,以防主环境出现故障。(这是备份环境)
我需要的是备份环境与主站点的数据库同步。但是,两种环境中的所有 DB 都已配置复制。
我怎样才能实现我的目标?
谢谢
这实际上是一个有趣的场景,因为我早在 2011 年 3 月 29 日就在 DBA StackExchange 中解决了这个问题。
基本思想是将 MySQL Replication 与DRBD和ucarp结合使用
这是您需要的:
通过此设置,您可以在两个数据中心内进行块级复制。如果您使用 MySQL 5.5,您可以让半同步复制将 SQL 发送到另一个数据中心,而无需等待 SQL 执行,只需确认。这可以将标准 MySQL 异步复制通常导致 MySQL Master 的间歇性降至最低。如果出现突然的网络延迟,数据中心之间的 MySQL 复制将从半同步切换为异步。一旦情况改善,MySQL Replication 就会切换回半同步。
警告
此设置不会防止表损坏,特别是在涉及 MyISAM 的情况下。即使使用 DRBD,损坏的 MyISAM 表的块复制也会产生...您猜对了,DRBD 辅助数据库中的损坏的 MyISAM 表。因此,最好所有用户数据都是InnoDB。