> 2台机器上的Mysql Master-Master复制拓扑

kfm*_*e04 4 mysql replication

我有 3 台 Mysql 服务器要复制:两台(包括主服务器)是本地的,一台是远程的。让我们调用我的主服务器 A、辅助服务器 B 和远程开发服务器 C。

作为一种可能的配置,我开始阅读有关环形配置的信息。有些评论似乎看不起这种拓扑。

我的问题是,鉴于 Mysql 5.1 的当前状态,哪些类型的主-主拓扑是可取的并且已知是容错的?

一般来说,戒指真的是个坏主意吗?

就我而言,A 和 B 位于预计不会出现任何网络故障的 Intranet 上,因此 B 理论上可以用作 A 的故障转移。大多数时候,我在 C 上工作,这是一台远程机器,有时在到达 A 和 B 时网络出现问题。目前没有任何数据是关键的(即,只要它们最终被镜像,就可以),但我希望 A 和 B 能够被紧密地镜像——比如轻负载时 5 秒的时间范围内(鉴于我的初步测试,我认为这应该是一个简单的要求)。

我目前有 B 作为 A 的 Slave,但我期待在 A、B 和 C 上成为 Master-Master。

Rol*_*DBA 5

在某些条件下,戒指可能是一个很好的主意

对于服务器 A、B、C

服务器A

  • B硕士
  • C的奴隶

服务器B

  • 硕士
  • A的奴隶

服务器 C

  • 硕士
  • B的奴隶

所有三个服务器都有 3 个数据库(db1、db2 和 db3)

这是保护三个数据库的唯一设置

  • 限制对服务器 A 上的 db1 的所有读取和写入
  • 限制对服务器 B 上的 db2 的所有读取和写入
  • 限制对服务器 C 上的 db3 的所有读取和写入

复制将执行以下响应

  • 通过复制到 db2 和 db3 来备份数据库 db1
  • 通过复制到 db3 和 db1 来备份数据库 db2
  • 通过复制到 db1 和 db2 来备份数据库 db3

恕我直言,为 db1 执行写入(插入、更新、删除)到服务器 A、B、C 使所有 auto_increment 值独立且不同。这会使将数据恢复到其他盒子变得很脆弱。

更多……

更新

我还有一个疯狂的想法

你听说过星形拓扑吗?我早些时候发布了关于这个主题的东西

创建一个有两个从站的主站

对于服务器 A、B、C

服务器A

  • B和C硕士
  • 所有表都使用存储引擎BLACKHOLE

服务器B

  • A的奴隶
  • 所有用户表使用存储引擎 InnoDB

服务器 C

  • A的奴隶
  • 所有用户表使用存储引擎 InnoDB

好处

  • 发布所有写入(插入、更新、删除)以服务 A
  • 写入应该很快,因为 BLACKHOLE 表映射到 /dev/null
  • 复制实际在从站(服务器 B 和服务器 C)上发布真实数据
  • 没有实际数据将驻留在服务器 A 中,只有二进制日志
  • 所有 SELECT 都可以通过负载均衡器在服务器 B 和服务器 C 之间进行
  • 奴隶在内容方面几乎完全相同

缺点

  • 一旦你设置了这个,你就不能自由地使用 ALTER TABLE 语句
  • 如果复制在服务器 A 中断,它将停止更新从站