如何修复处于不兼容网络状态的 Amazon RDS 数据库

How to fix Amazon RDS database that is in an incompatible-network state

我在使用 AWS Aurora MySQL RDS 数据库时遇到一些问题。数据库实例状态为 incompatible-network 状态。该数据库未被积极使用,因此可能已被停止并稍后通过某些自动化等重新启动,我认为 RDS 数据库实例的不兼容网络状态可能是其结果(作为以下原因之一提到)文章).

我按照这篇 AWS 文章:How do I resolve issues with an Amazon RDS database that is in an incompatible-network state? 来修复它,其中说

To fix an RDS DB instance that is already in an incompatible-network state, and if you previously enabled automated backups for your RDS DB instance, temporarily stop any writes to the database, and then perform a point-in-time recovery (PITR).

然而,即使我从备份中恢复数据库,新创建的数据库仍处于相同的 Incompatible-network 状态。我怎样才能让它进入活动状态。

从备份中通过时间点还原创建的数据库


此外,如果我不关心数据库中的数据,是否有另一种方法可以使数据库处于 Available/Active 状态?

此数据库是通过 CloudFormation 堆栈创建的,由于此问题导致堆栈更新失败并导致 CF 堆栈处于 UPDATE_ROLLBACK_FAILED 状态。本质上,我需要数据库与创建它的 CloudFormation 堆栈同步。

以下是有关问题的根本原因和解决方案的详细信息:

根本原因:
我从 Marcin 的评论中得到帮助,在确认问题的根本原因方面朝着正确的方向前进。 正如我提到的,这个数据库没有被积极使用,因此可能已经被停止,后来被一些自动化等重新启动,当它重新启动时,由于子网中缺少可用的 IP 地址,它进入 incompatible-network状态。

解析:
由于没有可用的 IP 地址,point-in-time 从备份恢复 (PITR)(this aws article 中建议)也导致新数据库处于 incompatible-network 状态。

因此,我继续在提到的子网中释放一些 IP。对我来说,还有一些其他未使用的 RDS 数据库也使用相同的子网(和 AZ),因此删除了它们。 释放上述子网中的 IP 后。

  1. 通过 PIT 还原旧数据库(处于 incompatible-network 状态)创建了新数据库。这次是Available状态。
  2. 删除了旧数据库并用原始名称重命名了新数据库cluster/instance
  3. continue-update-rollback UPDATE_ROLLBACK_FAILED 中的 CloudFormation 堆栈。这样堆栈就进入了稳定状态‘UPDATE_ROLLBACK_COMPLETE’
  4. 运行 CF 堆栈更新具有相同的原始更改并且运行良好。