Amazon RDS 在 Reader 实例和 Writer 实例之间切换服务器

Posted

技术标签:

【中文标题】Amazon RDS 在 Reader 实例和 Writer 实例之间切换服务器【英文标题】:Amazon RDS switch server between Reader instance and Writer instance 【发布时间】:2021-10-19 20:31:13 【问题描述】:

我使用的是 Amazon Aurora,默认情况下我有 2 个数据库服务器: Reader 实例和 Writer 实例。

我的应用程序正在连接到主连接端点

sample.cluster-sample.us-west-2.rds.amazonaws.com

但是,我的应用程序突然无法将数据写入数据库,我发现副本 (sample-instance-r1) 已成为 Writer 实例。

我的应用程序是使用带有 mysql 插件的 Node.js 并使用连接池进行编程的。如何避免amazon RDS切换Writer实例导致无法写入数据?

【问题讨论】:

【参考方案1】:

集群端点地址does not change due to failover:

要使用即使在故障转移提升新的主实例时也保持不变的连接字符串,请连接到集群端点。 集群端点始终代表集群中的当前主实例

因此,当您使用集群端点时,您所描述的通常不会发生(不计算故障转移竞争所需的时间)。因此,请确保您的应用程序实际上正在使用该端点,因为 Aurora 有 multiple endpoints。

【讨论】:

我正在连接主要端点。我发现数据库正在故障转移到另一个端点,因此原始数据库已成为读取实例,但似乎 node.js mysql 插件没有注意到这一点。我选择对应用程序执行健康检查,如果无法将数据写入数据库,则重新启动它。我认为这不是一个好的解决方案,但我不知道如何处理。 @KenYip 您必须使用cluster endpoint。只有此端点可以防止您所描述的内容。

以上是关于Amazon RDS 在 Reader 实例和 Writer 实例之间切换服务器的主要内容,如果未能解决你的问题,请参考以下文章

Amazon AWS RDS MySQL - 实例和定价

如何水平扩展 Amazon RDS 实例?

Amazon RDS 和 VPC 终端节点连接

Amazon Elastic Beanstalk:多个应用程序可以共享一个 Amazon RDS 数据库实例吗?

如何将数据库从 Amazon RDS MySQL 实例导出到本地实例?

我可以在单个 Amazon RDS 实例上创建多少个数据库