我有一个带有主要写实例和两个只读副本实例的AWS Aurora(Postgres)设置。我通过使用python来连接数据库,如下所示。
from sqlalchemy import create_engine
DATABASE_URL = 'postgresql://' + username + ":" + password + "@" + host + ":" + str(port) + "/" + database
engine = create_engine(DATABASE_URL, echo=DEBUG)
上述设置不能保证我可以连接到写实例,有时不能连接到只读副本,这在我需要向数据库中写入内容时会引起问题。
我的问题是,如何始终连接到写入实例? 我是在AWS端还是在Python代码中进行配置?
答案 0 :(得分:0)
您可以在代码的host
值中使用的AWS Aurora exposes the following endpoints:
集群端点
集群端点是Aurora数据库的端点 连接到该数据库的当前主实例的集群 簇。每个Aurora数据库集群都有一个集群终结点和一个主集群 实例。
阅读器端点
读取器端点是Aurora DB的端点 群集连接到该群集的可用Aurora副本之一 数据库集群。每个Aurora数据库集群都有一个读取器端点。如果有 多个Aurora副本,阅读器端点指导每个副本 到一个Aurora副本的连接请求。
实例端点
实例端点是数据库的端点 连接到该特定数据库的Aurora数据库集群中的实例 实例。数据库群集中的每个数据库实例,无论实例如何 类型,具有自己的唯一实例端点。因此,有一个实例 数据库集群的当前主实例的端点,在那里 是数据库中每个Aurora副本的一个实例终结点 集群。
我尚不清楚您当前正在使用哪个端点。您的代码中获得host
值的部分,或用于手动设置该值的方法,是所讨论的代码中唯一相关的部分,但并未包括在内。听起来好像您正在使用Instance端点指向主实例,但是如果发生故障转移,该实例将成为只读副本,这会导致您的问题。
您应该使用Cluster端点,这将确保您的连接将连接到主要的读/写实例。
答案 1 :(得分:0)
实际问题我使CPU过载,并且重新配置了DNS。 我需要增加CPU并使用某种限制控制。