多主(n> = 3个节点)范例

时间:2016-01-28 21:49:40

标签: mysql database multi-master-replication

我正在寻找MySQL数据库的多主配置,这比使用循环方式更安全/有效。

一般布局:

  • 中央数据库(A)
  • 周边数据库(B-Z)

交互要求(A< - >(B-Z)):

  • 所有外围数据库都需要对中央数据库进行读/写访问。
  • 对中央数据库所做的所有更改(无论是来自服务器本身还是来自中继的外围更改)都必须传播到所有外围数据库。
  • 外围数据库不应与其他外围数据库有任何关系。
  • 他们应该只是中央数据库的主人和奴隶。
  • 每个外围数据库应该能够与缺少当前互联网连接的主机服务器一起运行,在重新连接时将所有更改转发到中央数据库。

集中的数据大多是静态的。添加的外围数据库更改主要是销售记录,不一定需要立即到达节点。在合并bin日志时,所有表都使用auto_increment_incrementauto_increment_offset来处理任何覆盖错误。

目前,已经建立了循环系统,但这绝对不是理想的。我不希望外围节点相互依赖或必须编写脚本来重新分配备份主数据库,以便在停机期间保持链接活动。我希望在中央数据库和每个外围数据库之间建立主 - 主设置。

如果您认为完全不同的范例是合适的,请随意推荐。软件在同一网络上运行,因为每个外围服务器都需要最佳速度,并且本地互联网中断的故障保护最终会以某种方式转移到其他外围数据库。

如果您可以推荐其他数据库软件,如MariaDB或PostgreSQL,并支持我想要的内容,请随时使用他们的框架发布解决方案。只要数据库是关系型的,我很可能会设法移植。

1 个答案:

答案 0 :(得分:0)

是的,跨3个节点运行异步群集很糟糕 - 实际上它甚至可以吸引2个节​​点。 PerconaMariaDB都是MySQL的分支,Galera cluster支持MySQL和MySQL本身。

这3个中的任何一个都将替代您当前的MySQL服务器,但有some caveats

  

他们应该只是中央数据库的主人和奴隶。

你似乎对主/从关系感到有些困惑。对于高可用性,可伸缩性和性能,您确实希望所有节点与数据分区/联合相同或运行(但分区/联合实际上很难)。没有“中央数据库”。

您没有提及与您的数据库的对话。如果是PHP,mysqlnd-ms

中还有一个附加选项

(请注意,切换到PstgreSQL,虽然是一个优秀的产品,但需要进行大量的回归测试和代码重写)。