Amazon web services AWS Aurora/Python:仅连接到写实例

Amazon web services AWS Aurora/Python:仅连接到写实例,amazon-web-services,sqlalchemy,amazon-aurora,Amazon Web Services,Sqlalchemy,Amazon 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=D

我有一个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)
上面的设置并不能保证我可以连接到写实例,有时它会连接到读副本,这在我需要向数据库写入内容时会导致问题

我这里的问题是如何始终连接到write实例? 我是在AWS端配置,还是在Python代码中配置

您可以在代码中的
主机
值中使用的AWS Aurora:

群集端点

集群端点是Aurora DB的端点 连接到该数据库当前主实例的群集 簇每个Aurora DB集群都有一个集群端点和一个主节点 例如

读卡器端点

读卡器端点是Aurora DB的端点 连接到该服务器的可用Aurora副本之一的群集 数据库集群。每个Aurora DB集群都有一个读卡器端点。如果有 多个Aurora复制副本,读卡器端点指示每个复制副本 到其中一个Aurora副本的连接请求

实例端点

实例端点是数据库的端点 连接到特定数据库的Aurora DB集群中的实例 例如。DB集群中的每个DB实例,而不考虑实例 类型,具有其自己的唯一实例终结点。因此,有一个例子 数据库集群的当前主实例的端点,并且 是数据库中每个Aurora副本的一个实例端点 集群

我不完全清楚您当前使用的端点。获取主机值的代码部分,或者您用来手动设置该值的方法,是您的代码中唯一相关的部分,并且您没有包括该部分。听起来您可能正在使用实例端点指向主实例,但在发生故障转移时,该实例将成为读取副本,这会导致您的问题


您应该使用群集终结点,这将保证您的连接到主读/写实例。

实际问题我使CPU过载,DNS被重新配置。
我需要增加CPU和一些限制控制

如果您使用的是集群端点,那么您不应该获得到只读实例的连接。您得到的实际错误是什么?我得到:
ProgrammingError:
FYI:Mark B上面的评论不正确。群集终结点“…在故障转移情况下跟随主实例,即当前主实例降级且其中一个Aurora复制副本在其位置升级时。”@theannouner请解释我的评论是如何不正确的。我认为你理解的报价是错误的。集群端点将始终指向当前主实例。如果一个主实例被降级,一个新实例被升级,那么集群端点将不再指向前一个主实例,而是指向新升级的实例。啊,我明白了,你说得对,我的错。这是在aws方面对“follows”的一些模糊用法,你是对的,我对文档的解释是“follows”,因为“仍然指向同一个东西”,而“not”总是指向一个作者(我不会使用“follows”这个词)。谢谢你的澄清!