MySQL 5.1 复制拓扑:多主

MySQL 5.1 复制拓扑:多主

你好 :-)

我又开始寻找新知识了,我目前的工作是兼职 DBA,我对任何与做事有关的文档或阅读特别感兴趣防弹多主复制拓扑 - 有人有任何指示吗?

在过去的角色中,我实现并支持过这样的拓扑,但总是有“陷阱”(auto_increment_increment、auto_increment_offset 是两个大的那些你总是在最后一刻才发现的、而且很有可能毁掉你一天的事情。

在 InnoDB 负载较大的情况下,多主复制的最大问题是什么?作为一名熟练的 DBA,您如何解决这些问题?如果您使用 MyISAM 或其他存储引擎存储数据,情况会如何变化?现在这些存储引擎非常不错,而且可插入,也许有人有使用 Infobright 或其他数据仓库的经验?

对于任何建议的解决方案,都应强调恢复技术。DBA 如何有效地备份该拓扑,以及恢复过程有多简单?它是否足够坚固,以至于您可以在前面安装一个 TCP 感知负载平衡器(对源 IP 进行哈希处理或类似处理),并万一 MySQL 主服务器崩溃,是否会造成停机(或者接近停机……)?

我读过 Baron Schwartz 的《高性能 MySQL》一书,并强烈推荐,但我真正想要的是一些真正高质量的网站,涵盖所有要点,并根据需要提供指向更深入阅读材料的链接。谁手边有这些书?:)

任何能够为具有特别繁重的读取工作负载的奇怪应用程序挂起“从属池”的解决方案都会获得额外的加分。

非常感谢。

答案1

主-主复制是异步的,因此如果同时写入两个服务器,它肯定会中断。

即使自动增量起作用,任何其他唯一索引和许多其他情况都可能破坏它 - 它太脆弱而无法使用。

但是可以将主-主用作 HA 解决方案的一部分,您只需要确保应用程序只写入其中的一个,并且处于“干净”的故障转移情况,例如管理员故障转移,它会等待从属服务器赶上来后再进行切换。

这在实践中并不是非常困难,但有点不方便。

您的主要另一个选择是使用 DRBD,它的设置也不是很困难 - 但在这种情况下,第二台机器甚至不能用作只读副本 - 它只是作为热备用。DRBD 同步复制底层存储,因此所有内容都会安全地写入两台机器。

有些应用程序是专门为容忍多主机问题而设计的 - 这些应用程序需要非常仔细地设计,并考虑到确切的情况 - 在这种情况下,这是可以的。但是您不能使用不是为此设计的应用程序。

自动增量不是唯一的或主要的问题。

答案2

显然,考虑到您对自动增量的评论,您已经尝试过循环复制。这将是我首选的选项;您只需要记住正确配置 MySQL。

你可以看看红杉,它位于 mysql 集群前面,负责在写入时在每个服务器上执行 SQL,并在读取时进行负载平衡。它还有许多其他功能,例如允许不同的数据库后端。它并不简单,操作需要多个步骤,但你要求它执行一个难题,所以解决方案也不容易,这并不奇怪。

相关内容