0

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

总体布局:

  • 中央数据库 (A)
  • 外围数据库 (BZ)

交互要求(A<-->(BZ)):

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

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

目前,有一个循环系统,但这绝对不是理想的。我不希望外围节点相互依赖,或者必须编写脚本来重新分配备份主数据库,以在停机期间保持链接处于活动状态。我希望在中央数据库和每个单独的外围数据库之间进行主主设置。

如果您觉得完全不同的范式是合适的,请随意推荐。与每个外围服务器在同一网络上运行的软件需要最佳速度和故障保护,以应对本地互联网中断,所有更改最终都会以某种方式传递到其他外围数据库。

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

4

1 回答 1

0

是的,跨 3 个节点运行异步集群很糟糕——实际上它甚至可以跨 2 个节点运行。PerconaMariaDB都是 MySQL 的分支,并且两者以及 MySQL 本身都由Galera cluster支持。

这 3 个中的任何一个都可以替代您当前的 MySQL 服务器,但有一些警告

它们应该只是中央数据库的主从。

您似乎对主/从关系有些困惑。对于高可用性、可扩展性和性能,您真的希望所有节点都等效或运行数据分区/联合(但分区/联合确实很难做到)。没有“中央数据库”。

您没有提到与您的数据库对话的内容。如果是 PHP,则在mysqlnd-ms中有一个附加选项

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

于 2016-01-28T22:47:30.450 回答