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

1 分钟阅读
0

我有一个位于公有子网的 Amazon Relational Database Service(Amazon RDS)数据库实例。我想将数据库实例移至同一虚拟私有云(VPC)内的私有子网,并将该数据库实例设为私有。

简短描述

Amazon RDS 不提供在同一 VPC 内更改数据库实例子网组的选项。但是,您可以使用以下解决方法将数据库实例从公有子网移动到私有子网。使用此解决方法时,无需创建新的数据库实例或使用快照还原过程。该解决方法还能在创建新实例并转移流量时最大限度地减少停机时间。只有失效转移才会出现明显的停机时间。

**注意:**此解决方法仅适用于 RDS 数据库实例。如果您的数据库实例属于 Aurora 集群,请使用克隆选项。或者,遵循此解决方法,但不要关闭多可用区。相反,删除并重新创建读取器。

解决方法

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

如果已将数据库实例设置为单可用区公开可访问性参数设置为,则跳过此步骤。

要关闭数据库实例的多可用区部署,请完成以下步骤:

  1. 打开 Amazon RDS 控制台
  2. 在导航窗格中,选择数据库。然后,选择数据库实例。
  3. 选择修改
  4. 修改数据库实例页面上,对于多可用区部署公开可访问性,选择
  5. 选择继续,然后查看修改摘要。
  6. 选择立即应用在下一个预定维护时段内应用
    **注意:**由于修改会导致数据库重启,因此会出现停机。有关详细信息,请参阅使用“立即应用”设置
  7. 查看您的更改,如果更改正确,请选择修改数据库实例进行保存。

找到数据库实例的 IP 地址

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

dig rds_endpoint

**注意:**将 rds_endpoint 替换为数据库实例的端点。

输出示例:

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

从私有 IP 地址中,可以找到主实例使用的子网。

在此示例中可以找到以下子网:

  • 子网 1: 172.39.5.0/24
  • 子网 2: 172.39.4.0/24

由于 IP 地址属于 172.39.5.0/24,因此该实例位于子网 1 中。

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

将所有私有子网添加到子网组中。此外,从子网组中删除所有公有子网,但主实例使用的子网除外。在前面的示例中,删除除子网 1 之外的所有内容,因为数据库实例使用此子网。

完成下面的步骤:

  1. 打开 Amazon RDS 控制台
  2. 在导航窗格中,选择子网组。然后,选择与您的数据库实例关联的子网组。
  3. 选择编辑
  4. 添加子网部分,选择可用区和私有子网。
  5. 选择要删除的公有子网,然后选择移除
  6. 选择保存

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

为数据库实例开启多可用区部署。新的辅助实例将在一个剩余的私有子网中启动。

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

如果数据库实例发生失效转移,辅助实例会成为主实例。因此,新的主实例会使用私有 IP 地址。通过失效转移重启数据库实例后,移除现在位于公有子网中的新辅助实例。要移除辅助实例,请将多可用区部署设置为,从而关闭多可用区。

移除公有子网

完成下面的步骤:

  1. 从子网组中移除剩余的公有子网。
    **注意:**从 RDS 端的子网组中删除子网。无需删除 VPC 中的任何子网。
  2. 检查子网组中是否只有私有子网。
  3. 如果数据库实例之前处于多可用区部署状态,请再次开启多可用区部署

相关信息

多可用区数据库集群部署