我们必须(想要..)重命名 AWS 上的 DB 子网组,因此我创建了一个与旧子网组具有相同设置的新 DB 子网组。当我想在 AWS GUI 中的“修改选项卡”上切换组并点击应用时,AWS 返回:
您无法将数据库实例 XXX 移动到子网组 XXX。指定的数据库子网组和数据库实例位于同一 VPC 中。请选择与指定数据库实例位于不同 VPC 中的数据库子网组,然后重试。(服务:AmazonRDS;状态代码:400;错误代码:InvalidVPCNetworkStateFault;请求 ID:7d46c84c-b22a-11e6-be20-b5bb6bd6cc6d)
有什么建议吗?或者如果不重建整个实例就不可能吗?
答案1
几个月前我也遇到过同样的问题,最后联系了 AWS(我有企业支持)。结果如下:
遗憾的是,目前不支持将数据库实例子网组移动到同一 VPC 中的另一个子网组。我知道我们的文档说它受支持,但这是一个错误。我们目前正在更新我们的文档以反映这一点,对于沟通不畅,我深表歉意。
但是,我确实有一个解决方法,您可以创建一个新的临时 VPC,更新子网组以指向该临时 VPC,然后一旦该过程完成,将子网组更改为指向回您的新子网组。
或者,另一种方法是创建数据库快照,然后从快照启动新实例。
您可能需要查看这两种方法。这两种方法都可能导致您停机,除非您能够在只读模式下运行应用程序一段时间,或者有在恢复的快照上重放事务的方法。
答案2
可以执行以下步骤来更改 VPC 内的子网组,
将生产数据库实例转换为单个可用区(如果启用了多可用区)
通过选择任何默认/其他 VPC 子网组来修改子网组,然后继续立即应用
之后,再次修改子网组,选择要
另外,选择相关的安全组并继续立即应用
检查服务器的连接性
然后将其转换回多可用区
注意:执行上述步骤大约需要 40 分钟到 50 分钟
答案3
我所做的 -> 创建快照、恢复快照并选择仅包含公共子网或所需子网的新子网组,然后...瞧
aurora 的子网组选项只能在实例构建时设置,之后无法更改它。
答案4
我有一个位于公有子网中的 Amazon Relational Database Service (Amazon RDS) 数据库实例。我想将我的数据库实例从公有子网移至同一 VPC 内的私有子网,并使我的数据库实例完全私有。我该怎么做?
简短的介绍
Amazon RDS 不提供更改具有相同 VPC 的数据库实例子网组的选项。但是,您可以使用本文中的解决方法将数据库实例从公有子网移动到私有子网,并将数据库实例设为私有。
使用此方法的优点包括:
- 无需创建新的数据库实例
- 避免使用快照恢复过程
- 最大限度地减少创建新实例和转移流量所涉及的停机时间。您看到的唯一停机时间是故障转移时间。
解决
禁用数据库实例上的多可用区部署和公共可访问性
如果您的数据库实例已设置为单可用区,且公共可访问性参数设置为否,则您可以跳过此步骤并继续下一步来发现您的 IP 地址。
要修改数据库实例以禁用多可用区部署,请按照以下步骤操作:
- 登录 AWS RDS 控制台。
- 从导航窗格中,选择数据库,然后选择要修改的数据库实例。
- 选择修改。
- 在修改数据库实例页面中,对于多可用区部署和公共可访问性,选择否。
- 选择继续,并查看修改摘要。
- 选择立即应用以应用您的更改。
- 检查您的更改,如果正确,请选择修改数据库实例进行保存。
发现数据库实例的 IP 地址
数据库实例返回到可用的状态,运行挖在数据库实例的终端节点上查找其底层 IP 地址:
dig <rds-endpoint>
输出:
db-RDS-instance.xxxxxxxx.us-east-1.rds.amazonaws.com. 5 IN A 172.39.5.213
从私有 IP 中,您可以找到它正在使用的子网。这是您的主实例使用的子网。
在此示例中,子网 CIDR 列表如下:
- 子网 1 -> 172.39.5.0/24
- 子网 2 -> 172.39.4.0/24
由于 IP 属于 179.39.5.0/24,因此您可以得出结论,实例位于子网 1 中。
在数据库实例上删除公有子网并添加私有子网
在子网组中添加所有必需的私有子网。此外,从子网组中删除除主子网使用的子网之外的所有公共子网。在上面的示例中,您删除了除子网 1因为它正在被您的数据库实例使用。
笔记:私有子网是与没有 Internet 网关路由的路由表关联的子网。
- 登录 Amazon RDS 控制台。
- 从导航窗格中,选择子网组,然后选择与您的数据库实例关联的子网组。
- 选择编辑。
- 从添加子网部分,选择要添加的可用区域和私有子网。
- 选择要删除的公有子网,然后选择删除。
- 选择保存。
在数据库实例上启用多可用区
修改数据库实例以启用多可用区部署。新的辅助实例将在剩余的私有子网之一中启动。
使用故障转移重启数据库实例并禁用多可用区部署
当您的数据库实例发生故障转移时,使用私有 IP 的辅助实例将成为主实例,而公有子网将成为辅助实例。
在您使用故障转移重新启动数据库实例后,您需要删除现在位于公有子网中的辅助实例。为此,请修改数据库实例以再次禁用多可用区。您可以通过设置多可用区部署至 No.
删除公共子网
- 从子网组中删除剩余的公共子网。
笔记:从子网组中删除子网是 RDS 端的配置。它不涉及从 VPC 中删除任何子网。
检查子网组中是否仅存在私有子网。
如果您的数据库实例之前处于多可用区部署中,请再次启用它。
此解决方案涉及故障转移和禁用/启用多可用区,因此需要考虑的事项很少。有关更多信息,请参阅将数据库实例修改为多可用区部署。
笔记:此方法非常适用于 RDS DB 实例。如果您的 DB 实例是 Aurora 集群的一部分,则可以使用克隆选项。或者您可以按照本文中的步骤操作,但不要禁用多可用区,而应该删除并重新创建读取器。