AWS - 失败的主实例恢复后发生了什么

AWS - What happened to the failed Primary Instance after it recovers

我是 AWS Aurora 的新手。

阅读下面this link中的这段时:

To increase availability, you can use Aurora Replicas as failover targets. That is, if the primary instance fails, an Aurora Replica is promoted to the primary instance

如果失败的Primary Instance可以恢复,会是什么角色?我猜它会成为副本?

我问这个问题是因为我猜想连接 Aurora 数据库集群的服务器代码必须指定主实例和副本的端点?由于 Replica 仅提供只读查询,因此必须在将 Replica 提升为 Primary 实例后更正代码中的端点才能进行写操作查询?

我的代码如何知道哪个端点现在是主实例的(即可以进行写操作查询)?

您通过 URL 连接到集群端点,类似于 mydbcluster.cluster-123456789012.us-east-1.rds.amazonaws.com:3306

这样,当发生故障转移时,您无需对代码进行任何更改,在 AWS 的幕后,url 现在将指向现在提升的只读副本作为主(写)节点。

Aurora 集群不仅为集群中的每个节点提供直接连接端点,还为您提供读写端点和只读端点。读写端点将始终指向主节点。只读端点将跨只读副本节点执行 DNS 循环连接。

因此,如果一个节点发生故障并且另一个节点被提升为主要节点,只要您使用的是这些端点而不是单个节点端点,您就不必更改任何内容。

If the failed Primary Instance can recover, which role will it be? I guess it will become a Replica?

写入器故障有多种情况,根据不同情况处理不同。故障转移是 Aurora 从故障中恢复的方法之一。发生故障转移时,旧的 WRITER 将重新启动为 READER。对于其他轻微故障情况,Aurora 会自动恢复而无需故障转移。同一个 WRITER 被复活了。

How does my code know which endpoint is now Primary Instance's

您的代码应始终处理集群端点而不是实例端点。集群 RW 端点将始终指向主节点,集群 RO 端点将在副本之间执行 DNS 循环。在任何时候发生故障转移时,您的客户端连接都会断开,它们应该尝试使用集群端点重新连接。

如果你真的需要知道当前作者和reader的详细信息,你可以通过查询副本状态来做到这一点table,但我认为这不是你在这里需要的.