AWS RDS 只读副本充当故障转移备用
AWS RDS Read Replica act as Failover Standby
我目前正在评估是将 RDS MySQL 多可用区还是单可用区与只读副本一起使用。
考虑到预算和性能,因为多可用区的成本是单可用区的两倍,并且无法卸载读取操作,带有只读副本的单可用区似乎是一个合乎逻辑的选择。
但是,我看到了一种方法,可以在主节点发生故障时手动 'promote' 主节点的只读副本,但是有没有办法自动执行?
注意:有一个类似的问题,但没有解决我的问题:
Read replicas in RDS AWS
我认为问题在于您对这些功能有点困惑。让我帮忙 - 您可以在多可用区部署模式下启动 AWS RDS。在这种情况下,AWS 将执行以下操作:
它会为你分配一条DNS记录。此 DNS 记录表示您的主数据库的单个入口点,假设该数据库当前处于活动状态并且能够为连接提供服务。
万一主机因为任何原因出现故障,AWS 会简单地将隐藏在 DNS 记录中的地址(相当快,在 1-2 分钟内)指向您的备用服务器,它位于在另一个可用区上。
当 master 再次可用时,您的备用站,已经服务的写入也现在需要与 master 同步所有内容。您无需关心它 - AWS 将为您管理它
如果是只读副本:
AWS 将为您分配 2 个不同的 DNS 记录 - 一个用于主服务器,另一个用于只读副本。只读副本可以与主副本在同一个 AZ 上,甚至可以在另一个区域
您可以,并且必须在您的应用程序中选择在不同情况下使用的 DNS 名称。我的意思是,您很可能会有 2 个不同的连接池——一个用于主服务器,另一个用于只读副本。复制本身 will be asynchronous
在只读副本的情况下,AWS自己解决了复制的问题——你不需要担心。但是由于副本是只读的,AWS 本质上并没有解决只读副本和主副本之间的同步问题,因为副本的目标是只读的,它不应该接受任何写入流量
直接解决您的问题:
从技术上讲,您可以尝试让只读副本充当故障转移,但在这种情况下,您将不得不实施自定义解决方案以与主服务器同步,因为在主服务器关闭期间,您的只读副本当然收到了 N 次写入。 AWS在这种情况下没有解决这个同步问题
关于多可用区 - 您不能将多可用区备用数据库用作只读副本,因为它在 AWS 中不受支持。我强烈建议查看 this documentation。我认为它会帮助您解决问题,祝您有愉快的一天!)
我目前正在评估是将 RDS MySQL 多可用区还是单可用区与只读副本一起使用。
考虑到预算和性能,因为多可用区的成本是单可用区的两倍,并且无法卸载读取操作,带有只读副本的单可用区似乎是一个合乎逻辑的选择。
但是,我看到了一种方法,可以在主节点发生故障时手动 'promote' 主节点的只读副本,但是有没有办法自动执行?
注意:有一个类似的问题,但没有解决我的问题: Read replicas in RDS AWS
我认为问题在于您对这些功能有点困惑。让我帮忙 - 您可以在多可用区部署模式下启动 AWS RDS。在这种情况下,AWS 将执行以下操作:
它会为你分配一条DNS记录。此 DNS 记录表示您的主数据库的单个入口点,假设该数据库当前处于活动状态并且能够为连接提供服务。
万一主机因为任何原因出现故障,AWS 会简单地将隐藏在 DNS 记录中的地址(相当快,在 1-2 分钟内)指向您的备用服务器,它位于在另一个可用区上。
当 master 再次可用时,您的备用站,已经服务的写入也现在需要与 master 同步所有内容。您无需关心它 - AWS 将为您管理它
如果是只读副本:
AWS 将为您分配 2 个不同的 DNS 记录 - 一个用于主服务器,另一个用于只读副本。只读副本可以与主副本在同一个 AZ 上,甚至可以在另一个区域
您可以,并且必须在您的应用程序中选择在不同情况下使用的 DNS 名称。我的意思是,您很可能会有 2 个不同的连接池——一个用于主服务器,另一个用于只读副本。复制本身 will be asynchronous
在只读副本的情况下,AWS自己解决了复制的问题——你不需要担心。但是由于副本是只读的,AWS 本质上并没有解决只读副本和主副本之间的同步问题,因为副本的目标是只读的,它不应该接受任何写入流量
直接解决您的问题:
从技术上讲,您可以尝试让只读副本充当故障转移,但在这种情况下,您将不得不实施自定义解决方案以与主服务器同步,因为在主服务器关闭期间,您的只读副本当然收到了 N 次写入。 AWS在这种情况下没有解决这个同步问题
关于多可用区 - 您不能将多可用区备用数据库用作只读副本,因为它在 AWS 中不受支持。我强烈建议查看 this documentation。我认为它会帮助您解决问题,祝您有愉快的一天!)