0

我有一个情况,将有 2 个 MySQL 服务器通过 WAN 链接。每个位置(我们称之为位置 X 和位置 Y)都需要访问三个数据库(我们称之为 A、B 和 C。

位置 X 需要使用数据库 A 作为其主数据库,而数据库 B 作为“查找”只读数据库。

位置 Y 需要使用数据库 B 作为其主数据库,而数据库 A 作为“查找”只读数据库。

两个位置都需要对复制数据库 C 的读/写访问权限。(该数据库不包含自动递增列等 - 相当简单的日志记录表)。

本质上,我需要主从和主主复制的组合发生:

X      Y
--------
A  --> A
B <--  B
C <--> C

这在 MySQL 上设置是否可行?

4

2 回答 2

1

MySQLD-Multi是一个可以帮助您完成此任务的包。单个 MySQL 数据库只能有一个主数据库。如果您设置 A 系列主控在一个方向,而您的 B 系列主控在相反方向,则它们需要在自己的 IP 或端口号上运行。对于 C 也是如此。

如果您遇到数据传输错误、丢失表空间或被雷鸣般的群和断开连接所击中,则多主机设置变得很困难。您可能最终会处于使用基于日志的恢复工具重新同步它们的令人羡慕的位置。请考虑您的应用程序会非常谨慎地使用其“写入”特权连接并严重依赖读取连接。

以这种方式拆分 MySQL 实例可以更好地隔离应用程序之间的延迟。在多主机情况下,您通常必须观察延迟,如果它们相差 1 秒的延迟,您通常会开始从池中失败。如果您的 C 系列确实需要 MM,请认真考虑在 C 系列的每一端链接只读从属设备,以最大程度地减少写入主机的延迟。

于 2013-05-01T00:42:49.657 回答
0

我建议使用Percona XtraDB Cluster

PXC 是一个 MySQL 衍生服务器(所以除了复制部分之外,使用它的一切看起来都很熟悉)。它支持通过 WAN 进行同步双向复制,因此站点 X 和 Y 都可以写入其主数据库,然后将其复制到另一个站点。PXC 甚至支持在两个站点上写入数据库,满足您对数据库 C 的要求。

Percona XtraDB Cluster 是免费的开源软件,与所有 Percona 产品一样。
免责声明:我在 2010-2014 年为 Percona 工作。

于 2013-05-01T00:52:53.287 回答