MySQL master-master-replication 作为 master-slave-replication 的主服务器

MySQL master-master-replication 作为 master-slave-replication 的主服务器

我们想要建立一个复杂的 mysql 复制基础架构。我们的想法是拥有 3 个客户端,它们处理来自用户的请求,并配置为 mysql 中主从复制中的从服务器。还有两台服务器,配置为主主复制。现在我们想通过负载平衡器(或代理)将这些主主复制用作 3 个从服务器的单个主服务器。有人已经设置了类似的配置吗?两个主服务器是否可能具有不同的 binlog,这会破坏复制吗?系统是 Debian Lenny,带有 MySQL 5.1.48

答案1

我不知道有什么解决方案可以完成您所完成的任务,因为 MySQL 本身不支持从多个主服务器复制的从服务器。

循环复制很脆弱,一般不推荐。

如果您的主主服务器发生故障(即所有从属服务器的代理主服务器),您可以将它们重新指向辅助主服务器。这通常需要挖掘 binlog,这可能非常繁琐,而且很容易出错。您可以使用 Maatkit 的mk-从属-移动实用程序使这变得更容易一些。

您可以在每台从服务器上运行多个 MySQL 实例,然后设置心跳或故障转移逻辑,这样当主服务器发生故障时,就可以进行切换。这必须具有坚实的逻辑,才能避免脆弱。

您可以运行双主服务器,每个主服务器都有一个从服务器,然后对两个从服务器进行负载平衡。在负载平衡中进行可用性验证,以便在单个主服务器发生故障时删除从服务器,这可能比在每台服务器上有多个从服务器更好。这不会很好地扩展。

据称这脚本集有助于这种类型的配置,但我没有使用过它们。

如果您希望只读查询具有高可用性,我建议让那些更重要的查询针对双主高可用性服务器运行。对于不需要实时的查询,让它们针对多个负载平衡从属服务器运行是有意义的,因为如果主服务器发生故障,这些从属服务器可能没有当前数据。

答案2

将它们全部设置为母版然后以圆圈形式复制不是更简单吗?

C。

答案3

完成 2 台服务器的主主设置后,最难的部分就完成了。无论将写入发送到哪台机器,如果设置正确,任一服务器上的二进制日志都将足够/完整。之后,只是从两个主服务器中的任一个服务器设置从服务器。

此外,您始终可以将旧的主从服务器设置为双主服务器,然后从服务器将在复制层次结构中处于 2 层。它的适用性取决于对最终应用程序的可容忍复制滞后,但我更喜欢两层复制(以便于维护)。

相关内容