如何将 Amazon RDS 数据库实例从公有子网移动到同一 VPC 内的私有子网?

上次更新日期:2022 年 6 月 23 日

我有一个位于公有子网的 Amazon Relational Database Service(Amazon RDS)数据库实例。我想将我的数据库实例从公有子网移动到同一 VPC 中的私有子网,然后将我的数据库实例设为完全私有。我该如何操作?

简短描述

Amazon RDS 不提供在同一 VPC 内更改数据库实例子网组的选项。但是,您可以使用本文中的解决方法将数据库实例从公有子网移动到私有子网。执行此操作会将数据库实例设为私有实例。

这种方法具有许多优点,包括:

  • 无需创建新的数据库实例
  • 无需使用快照还原过程
  • 最大限度地减少创建新实例和转移流量所涉及的停机时间。您看到的唯一停机时间是失效转移时间。

解决方法

关闭数据库实例上的多可用区部署和公共可访问性

如果您的数据库实例已设置为单可用区,且 Public accessibility(公共可访问性)参数设置为 No(否),则跳过此步骤。

修改数据库实例以关闭多可用区部署,请执行以下步骤:

  1. 登录 Amazon RDS 控制台
  2. 从导航窗格中选择 Databases(数据库),然后选择您想要修改的数据库实例。
  3. 选择 Modify(修改)。
  4. Modify DB Instance(修改数据库实例)页面中,对于 Multi-AZ deployment(多可用区部署)和 Public accessibility(公共可访问性),选择 No(否)。
  5. 选择 Continue(继续),然后查看修改摘要。
  6. 选择 Apply immediately(立即应用)以应用您的更改。
  7. 查看您的更改,如果正确,请选择修改数据库实例以保存。

发现数据库实例的 IP 地址

在数据库实例恢复到 Available(可用)状态后,在数据库实例的端点上运行 dig 以查找其底层 IP 地址:

dig <rds-endpoint>

输出:

db-RDS-instance.xxxxxxxx.us-east-1.rds.amazonaws.com. 5 IN A 172.39.5.213

通过私有 IP,您可以找到您的主实例正在使用的子网。

在此示例中,子网 CIDR 列表如下:

  • subnet1 -> 172.39.5.0/24
  • subnet2 -> 172.39.4.0/24

由于 IP 低于 179.39.5.0/24,因此您可以得出这样的结论:该实例已放置在 subnet1 中。

移除公有子网并在数据库实例上添加私有子网

添加子网组中所需的全部私有子网。此外,从子网组中删除所有公有子网,主实例使用的子网除外。在上面的示例中,您删除了 subnet1 之外的所有内容,因为数据库实例使用该子网。

注意:私有子网是与没有互联网网关路由的路由表关联的子网。

  1. 登录 Amazon RDS 控制台。
  2. 从导航窗格中,选择子网组,然后选择与数据库实例关联的子网组。
  3. 选择 Edit(编辑)。
  4. Add subnets(添加子网)部分中,选择要添加的可用区和私有子网。
  5. 选择要删除的公有子网,然后选择 Remove(移除)。
  6. 选择 Save(保存)。

在数据库实例上开启多可用区

修改数据库实例,以开启多可用区部署。新的辅助实例会在剩余的其中一个私有子网中启动。

通过失效转移重启数据库实例并关闭多可用区部署

当数据库实例进行失效转移时,使用私有 IP 的辅助实例将成为主实例,公有子网将成为辅助子网。

使用失效转移重启数据库实例后,移除现在位于公有子网中的辅助实例。为此,请再次修改数据库实例以关闭多可用区。您可以通过将 Multi-AZ deployment(多可用区部署)设置为 No(否)来实现此目的。

移除公有子网

  1. 从子网组中移除剩余的公有子网。
    注意:从子网组中移除子网是 RDS 端的配置。它不涉及从 VPC 中删除任何子网。
  2. 检查子网组中是否只有私有子网。
  3. 如果您的数据库实例之前处于多可用区部署,则再次开启多可用区部署。

此解决方案涉及失效转移和开启/关闭多可用区,因此几乎不需要考虑。有关更多信息,请参阅多可用区数据库实例部署

注意:此方法对于 RDS 数据库实例而言非常独特。如果您的数据库实例是 Aurora 集群的一部分,则可以使用克隆选项。或者,您也可以按照本文中的步骤操作,但不应关闭多可用区,而是删除并重新创建读取器。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?