我是AWS Aurora的新手。
在下面的this link中阅读本段时:
要提高可用性,可以使用Aurora副本作为故障转移 目标。也就是说,如果主实例失败,则将创建一个Aurora副本。 提升为主要实例
如果发生故障的主实例可以恢复,它将扮演哪个角色?我想它将成为副本?
我问这个问题,因为我猜连接Aurora数据库集群的服务器代码必须指定主实例和副本服务器的端点?由于副本服务器仅用于只读查询,因此在将副本服务器升级为主实例后,必须对代码的端点进行更正,以便进行写操作查询?
我的代码如何知道哪个端点现在是主实例的端点(即可以进行写操作查询)?
答案 0 :(得分:3)
Aurora群集不仅为您提供了群集中每个节点的直接连接端点,而且还为您提供了“读写”端点和“只读”端点。读写端点将始终指向主节点。只读端点将对只读副本节点之间的连接进行DNS轮询。
因此,如果一个节点发生故障并且另一个节点被提升为主节点,则只要您使用这些端点而不是单个节点端点,就无需进行任何更改。
答案 1 :(得分:1)
您通过URL连接到群集端点,类似于mydbcluster.cluster-123456789012.us-east-1.rds.amazonaws.com:3306
这样,当发生故障转移时,您无需对代码进行任何更改,在AWS幕后,URL现在将指向只读副本,该副本现在被提升为主要副本(写)节点。
答案 2 :(得分:1)
如果发生故障的主实例可以恢复,它将扮演哪个角色?我想它将成为副本?
有多个写入器失败的情况,并且根据情况对它们的处理方式有所不同。故障转移是Aurora从故障中恢复的方法之一。发生故障转移时,旧的WRITER将作为READER重新启动。对于其他较小的故障场景,Aurora可以自动恢复而无需故障转移。改用相同的WRITER。
我的代码如何知道哪个端点现在是主实例的
您的代码应始终处理群集端点,而不要处理实例端点。群集RW端点将始终指向主节点,而群集RO端点将在副本之间进行DNS轮询。在发生故障转移的任何时候,客户端连接都会断开,它们应尝试使用群集端点重新连接。
如果您确实需要了解当前作者和读者的详细信息,可以通过查询副本状态表来做到这一点,但是我认为这不是您所需要的。