AWS Aurora / Python:仅连接到写入实例

时间:2018-07-02 15:52:44

标签: amazon-web-services sqlalchemy amazon-rds-aurora

我有一个带有主要写实例和两个只读副本实例的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代码中进行配置?

2 个答案:

答案 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并使用某种限制控制。