首页 > 解决方案 > AWS RDS 只读副本充当故障转移备用

问题描述

我目前正在评估是否使用 RDS MySQL Multi-AZ 或 Single AZ with Read Replica。

考虑因素是预算和性能,因为多可用区的成本是单可用区的两倍,并且无法卸载读取操作,带有只读副本的单可用区似乎是一个合乎逻辑的选择。

但是,我看到了一种在 master 失败的情况下手动将只读副本“提升”为 master 的方法,但是有没有办法自动化呢?

注意:有一个类似的问题,但没有解决我的问题: Read replicas in RDS AWS

标签: amazon-web-servicesamazon-rds

解决方案


我认为问题在于您对这些功能有些困惑。让我帮忙 - 您可以在多可用区部署模式下启动 AWS RDS。在这种情况下,AWS 将执行以下操作:

  1. 它将为您分配 DNS 记录。此 DNS 记录代表您的主数据库的单个入口点,假设它当前处于活动状态并且能够提供连接。

  2. 在主节点因任何原因发生故障的情况下,AWS 将简单地将 DNS 记录隐藏的地址(非常快,在 1-2 分钟内)指向您位于另一个 AZ 上的备用节点。

  3. 当主服务器再次可用时,您的备用服务器(已提供写入服务)现在也需要与主服务器同步所有内容。您无需关心它 - AWS 将为您管理它

如果是只读副本:

  1. AWS 将为您分配 2 条不同的 DNS 记录 - 一条用于主服务器,另一条用于只读副本。只读副本可以与主副本位于同一 AZ 上,甚至位于另一个区域中

  2. 您可以而且必须在您的应用程序中选择在不同场景中使用的 DNS 名称。我的意思是,您很可能会有 2 个不同的连接池 - 一个用于主服务器,另一个用于只读副本。复制本身将是异步的

  3. 在只读副本的情况下,AWS 自己解决了复制问题——您无需担心。但是由于副本是只读的,AWS本质上并没有解决只读副本和主服务器之间的同步问题,因为副本的目标是只读的,它不应该接受任何写入流量

直接解决你的问题:

从技术上讲,您可以尝试让您的只读副本充当故障转移,但在这种情况下,您必须实施自定义解决方案以与主服务器同步,因为在主服务器停机期间,您的只读副本肯定收到了 N 个写道。AWS 在这种情况下没有解决这个同步问题

对于 Mutli-AZ -您不能将 Multi-AZ 备用数据库用作只读副本,因为 AWS 不支持它。我强烈建议查看此文档。我认为它会帮助您解决问题,祝您有美好的一天!)


推荐阅读