我想要一个在 Amazon EC2 实例上运行的具有自动故障转移功能的高可用性 MySQL 系统。
解决此问题的标准方法是问题 Heartbeat + DRBD,但我发现很多帖子表明 DRBD 不适用于 EC2,尽管没有人确切说明原因。显然,在虚拟化环境中,串行心跳或不同的网络是不可能的。让不同的服务器位于不同的可用区也很好,但我们在那里遇到了一个更困难的问题。
人们对在“云”中拥有高正常运行时间解决方案有何看法?
注意:这个问题是在宣布具有多可用区的 RDS 之前提出的,对于当今的现代 IT 专业人员来说,这是一个很好的自动答案。:)
我认为您真的想要一个最近添加到 AWS 的多区域 RDS 设置。
在此处阅读更多信息:http: //aws.typepad.com/aws/2010/05/amazon-rds-multi-az-deployment.html
如果您不询问 AWS,我建议您使用包含 DRBD 的设置。这将确保两台服务器始终保持同步。但我几乎 100% 确定这在 AWS 上是不可能的。
一般来说,我会小心快照和所有这些 - 这不是灵丹妙药!在 AWS 上需要很长时间。实例存储本身 a) 一点也不快 b) 不持久!即使使用 EBS,它也不是很快,您仍然需要停止 i/o 以获得一致的快照。
便宜的简单选项 - 自己在 EC2 中的不同数据中心上安装 mysql 并在它们之间设置主/主复制。将每个数据中心中的前端网络服务器指向那些复制的 mysql 服务器。如果您的主站点上的内容运行状况检查失败,则在每个位置的前端 Web 服务器之间设置自动 DNS 故障转移 - 它会自动将客户端流量重定向到另一个数据中心中的复制站点 - 除非您修复主站点和运行状况检查再次开始通过 - 然后流量将自动回退到主站点。我一直这样做——甚至在不同的供应商之间,即 EC2 和 Linode。它运行良好,客户端流量故障转移在不到 1 分钟的时间内发生。您可以从dnshat.com以便宜的价格 获得自动 DNS 故障转移。
我会默认使用浮动 VIP 进行主动/被动双主复制。(心跳、OpenAIS、MMRM 或起搏器)
我想不出为什么这不是一个好主意的原因。你能?
MMRM
自己动手的选项是将 MySQL 安装到 EBS 卷,使用弹性 IP 或动态 DNS 来切换您指向的服务器失败。
您需要一个监控心跳的外部服务器,然后它将卸载 EBS 卷,重新安装到您的备份服务器,然后重新映射 IP 或更改 DNS。如果您担心文件系统本身,那么您将不得不进行lvm 快照或其他操作来获取数据副本,然后您也可以将这些备份到 S3 或 EBS 卷。
我喜欢将数据保存在 EBS 卷本身上,因为如果这对你来说听起来很可怕,你可以获取它的 EBS 快照进行备份,而无需涉及 lvm 的东西。
另外需要注意的是,亚马逊有一个我没有使用过的Enterprise MySQL 包,但它可能是一个更好的选择。对于支持合同,它们的价格通常非常合理。