MySQL 复制 : Combination of Master & Slave on 2 servers

标签 mysql replication

我遇到的情况是,有 2 台 MySQL 服务器通过 WAN 连接。每个位置(我们称其为位置 X 和位置 Y)将需要访问三个数据库(我们称其为 A、B 和 C。

地点 X 需要使用数据库 A 作为主数据库,数据库 B 作为“查找”只读数据库。

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

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

本质上,我需要主从复制和主主复制的结合:

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

这在 MySQL 上设置可行吗?

最佳答案

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

如果出现数据传输错误、丢失表空间或受到惊群袭击并断开连接,多主机设置将变得困难。您可能最终会陷入使用基于日志的恢复工具来重新同步它们的令人羡慕的境地。请考虑到您的应用程序需要非常谨慎地使用其“写入”特权连接并严重依赖读取连接。

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

关于MySQL 复制 : Combination of Master & Slave on 2 servers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16310794/

相关文章:

php - Chrome 不会插入表格,在 IE 上工作正常

Mysql把'变成'?

mysql安装报错:Unable to set password for the MySQL "root" user

exception - CouchDB 复制错误 {"error":"not_found"}

Kubernetes 复制卷数据

php - fatal error : Uncaught PDOException ("SQLSTATE[42S02]")

mysql - 编写如何删除扩展名并放入单独列的脚本

postgresql - PostgreSQL 11 中的逻辑复制和声明性分区

MySQL主从和从机为主-从配置

android - 在不使用 Web 服务的情况下在 Android SQL-Lite 和 SQL Server 之间交换数据