你好:-)
我再次在寻找新知识,作为我当前工作的一部分,我是一名兼职 DBA,并且对任何文档或阅读有关防弹多主复制拓扑的任何文档特别感兴趣 - 有没有人有任何指针?
在过去的角色中,我已经实现并支持了这样的拓扑,但总是有“捕获”(auto_increment_increment,auto_increment_offset 是两个大问题),你只能在最后一分钟才发现,并且很可能会毁掉你的一天。
对于大量 InnoDB 工作负载,多主复制的大问题是什么?作为一名熟练的 DBA,您如何着手解决这些问题?如果您使用 MyISAM 存储东西,或者实际上,其他存储引擎现在它们很好且可插入,那么情况会如何变化,也许有人有使用 Infobright 或其他数据仓库的经验?
任何提议的解决方案都应强调恢复技术。DBA 如何有效地备份该拓扑,恢复过程有多容易?它是否足够防弹,以至于您可以在前面放置一个支持 TCP 的负载平衡器(在源 IP 上散列或类似的东西),并且在 MySQL 主服务器出现故障时零停机时间(或该死的接近……)?
我已经阅读并强烈推荐 Baron Schwartz 的 High Performance MySQL,但是,我真正追求的是几个真正优质的网站,其中涵盖了所有要点,并根据需要链接到更深入的阅读材料。谁有一个方便的?:)
Bonus brownie 指出任何解决方案都可以将“池”从属设备挂起,以用于具有特别繁重的读取工作负载的奇怪应用程序。
非常感谢。
主-主复制是异步的,因此如果您同时写入两台服务器,它肯定会中断。
即使自动增量工作正常,任何其他唯一索引和许多其他情况都可能破坏它 - 它太脆弱而无法使用。
但是可以使用 master-master 作为 HA 解决方案的一部分,您只需要确保应用程序只写入其中一个并且在“干净”故障转移情况下,例如管理员故障转移,它等待从属在切换之前赶上。
这在实践中并不是非常困难,但有点不方便。
您的主要其他选择是使用 DRBD,它也不是很难设置 - 但在这种情况下,第二台机器甚至不能用作只读副本 - 它只是坐在那里作为热备件。DRBD 同步复制底层存储,因此所有内容都安全地写入两台机器。
有一些应用程序是专门为容忍多主机问题而设计的——这些应用程序需要非常仔细地设计并考虑到确切的情况——在这种情况下,没关系。但是,您不能使用不是为它设计的应用程序。
自动增量不是唯一的或主要的问题。
显然,鉴于您对自动增量的评论,您已经尝试过循环复制。那将是我的首选;您只需要记住正确配置 MySQL。
您可以查看Sequioa,它通过坐在您的 mysql 集群前面来工作,并在写入的情况下处理在每个服务器上执行您的 SQL,并在读取的情况下处理负载平衡。它具有许多其他功能,例如允许不同的数据库后端。这并不简单,操作需要多个步骤,但是您要求它执行一个难题,因此解决方案也不容易也就不足为奇了。