我正在为 MySQL 数据库寻找一种多主配置,它比使用循环方式更安全/有效。
总体布局:
- 中央数据库 (A)
- 外围数据库 (BZ)
交互要求(A<-->(BZ)):
- 所有外围数据库都需要对中央数据库进行读/写访问。
- 对中央数据库所做的所有更改(无论是来自服务器本身还是中继的外围更改)都必须传播到所有外围数据库。
- 外围数据库不应与其他外围数据库有任何关系。
- 它们应该只是中央数据库的主从。
- 每个外围数据库都应该能够与缺少当前 Internet 连接的主机服务器一起操作,并在重新连接时将所有更改中继到中央数据库。
集中的数据大多是静态的。添加的外围数据库更改主要是销售记录,不一定需要立即到达节点。在合并 bin 日志时,所有表都在使用auto_increment_increment
并auto_increment_offset
处理任何覆盖错误。
目前,有一个循环系统,但这绝对不是理想的。我不希望外围节点相互依赖,或者必须编写脚本来重新分配备份主数据库,以在停机期间保持链接处于活动状态。我希望在中央数据库和每个单独的外围数据库之间进行主主设置。
如果您觉得完全不同的范式是合适的,请随意推荐。与每个外围服务器在同一网络上运行的软件需要最佳速度和故障保护,以应对本地互联网中断,所有更改最终都会以某种方式传递到其他外围数据库。
如果您可以推荐其他数据库软件,例如 MariaDB 或 PostgreSQL,并支持我想要的,请随时使用他们的框架发布解决方案。只要数据库是关系型的,我很可能会设法移植。