

# Amazon VPC 和 Amazon RDS
配合使用 Amazon RDS 和 Amazon VPC

利用 Amazon Virtual Private Cloud（Amazon VPC），您可能能够在虚拟私有云（VPC）中启动 Amazon 资源，如 Amazon RDS 数据库实例。

使用 VPC 时，您的虚拟联网环境完全由您控制。您可以选择自己的 IP 地址范围、创建子网以及配置路由和访问控制列表。无需其他成本即可在 VPC 中运行数据库实例。

账户具有原定设置 VPC。除非您另行指定，否则所有新的数据库实例都将在原定设置 VPC 中创建。

**Topics**
+ [

# 在 VPC 中使用数据库实例
](USER_VPC.WorkingWithRDSInstanceinaVPC.md)
+ [

# 更新数据库实例的 VPC
](USER_VPC.VPC2VPC.md)
+ [

# 在 VPC 中访问数据库实例的场景
](USER_VPC.Scenarios.md)
+ [

# 教程：创建 VPC 以用于数据库实例（仅限 IPv4）
](CHAP_Tutorials.WebServerDB.CreateVPC.md)
+ [

# 教程：创建 VPC 以用于数据库实例（双堆栈模式）
](CHAP_Tutorials.CreateVPCDualStack.md)
+ [

# 将不在 VPC 中的数据库实例移动到 VPC 中
](USER_VPC.Non-VPC2VPC.md)

接下来，您可以查找与 Amazon RDS 数据库实例相关的 VPC 功能的讨论。有关 Amazon VPC 的更多信息，请参阅 [Amazon VPC 入门指南](https://docs.amazonaws.cn/AmazonVPC/latest/GettingStartedGuide/)和 [Amazon VPC 用户指南](https://docs.amazonaws.cn/vpc/latest/userguide/)。

# 在 VPC 中使用数据库实例
在 VPC 中使用数据库实例

您的数据库实例位于虚拟私有云（VPC）内。Amazon VPC 是一个虚拟网络，在逻辑上与Amazon云中的其他虚拟网络相互隔离。使用 Amazon VPC，您可能能够将 Amazon 资源（例如，Amazon RDS 数据库实例或 Amazon EC2 实例），启动到 VPC 中。VPC 可以是您的账户附带的默认 VPC，也可以是您创建的 VPC。所有 VPC 均与您的 Amazon 账户关联。

默认 VPC 具有可用来隔离 VPC 内资源的三个子网。默认 VPC 还具有一个互联网网关，可用来从 VPC 外部访问 VPC 内部的资源。

有关涉及 VPC 内和 VPC 外的 Amazon RDS 数据库实例的场景的列表，请参阅[在 VPC 中访问数据库实例的场景](USER_VPC.Scenarios.md)。

**Topics**
+ [

## 在 VPC 中使用数据库实例
](#Overview.RDSVPC.Create)
+ [

## VPC 加密控制
](#USER_VPC.EncryptionControl)
+ [

## 使用数据库子网组
](#USER_VPC.Subnets)
+ [

## 共享子网
](#USER_VPC.Shared_subnets)
+ [

## Amazon RDS IP 寻址
](#USER_VPC.IP_addressing)
+ [

## 对互联网隐藏 VPC 中的数据库实例
](#USER_VPC.Hiding)
+ [

## 在 VPC 中创建数据库实例
](#USER_VPC.InstanceInVPC)

在以下教程中，您可以学习创建可用于常见 Amazon RDS 场景的 VPC：
+ [教程：创建 VPC 以用于数据库实例（仅限 IPv4）](CHAP_Tutorials.WebServerDB.CreateVPC.md)
+ [教程：创建 VPC 以用于数据库实例（双堆栈模式）](CHAP_Tutorials.CreateVPCDualStack.md)

## 在 VPC 中使用数据库实例


下面是一些有关在 VPC 中使用数据库实例的提示：
+ 您的 VPC 必须至少有两个子网。这些子网必须位于要部署数据库实例的 Amazon Web Services 区域中两个不同的可用区。*子网* 是 VPC 的 IP 地址范围段，您可以指定子网，利用子网并根据安全和操作需要对数据库实例进行分组。

  对于多可用区部署，通过为 Amazon Web Services 区域中的两个或更多可用区定义子网，Amazon RDS 可在根据需要在另一个可用区中创建新的备用实例。即使是单可用区部署，您也确保要这样做，以防以后需要将它们转换为多可用区部署。
**注意**  
本地扩展区的数据库子网组只能有一个子网。
+ 如果要让 VPC 中的数据库实例实现公开访问，请确保开启 VPC 属性 *DNS hostnames*（DNS 主机名）和 *DNS resolution*（DNS 解析）。
+ 您的 VPC 必须具有您创建的数据库子网组。您可通过指定创建的子网来创建数据库子网组。Amazon RDS 选择要与数据库实例关联的子网和该子网组中的 IP 地址。数据库实例使用包含该子网的可用区。
+ 您的 VPC 必须具有允许访问数据库实例的 VPC 安全组。

  有关更多信息，请参阅 [在 VPC 中访问数据库实例的场景](USER_VPC.Scenarios.md)。
+ 每个子网必须包含足够大的 CIDR 数据块，以便在维护活动（包括故障转移和扩展计算）期间有可供 Amazon RDS 使用的备用 IP 地址。例如，诸如 10.0.0.1.0/24 和 10.0.1.0/24 的范围通常足够大。
+ VPC 的 *instance tenancy* 属性可能为 *default* 或 *dedicated*。所有默认 VPC 的“instance tenancy”属性设置为“default”，则默认的 VPC 可支持任何数据库实例类。

  如果您选择将数据库实例放在“instance tenancy”属性设置为“dedicated”的专用 VPC 中，则数据库实例的数据库实例类必须是已批准的 Amazon EC2 专用实例类型之一。例如，r5.large EC2 专用实例对应于 db.r5.large 数据库实例类。有关 VPC 中实例租期的信息，请参阅 *Amazon Elastic Compute Cloud 用户指南* 中的[专用实例](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/dedicated-instance.html)。
**注意**  
当您将实例租赁属性设置为专用于数据库实例时，它不能保证数据库实例将在专属主机上运行。
+ 将选项组分配给数据库实例时，它与该数据库实例的 VPC 相关联。这种关联意味着，如果您尝试将数据库实例还原到不同的 VPC 中，则无法使用分配给该数据库实例的选项组。
+ 如果将数据库实例还原到不同的 VPC，请确保将默认选项组分配给数据库实例，分配与该 VPC 关联的选项组，或创建新选项组并将其分配给数据库实例。对于持久性或永久性选项（如 Oracle TDE），在将数据库实例还原到不同的 VPC 中时，您必须创建包含该持久性或永久性选项的新选项组。

## VPC 加密控制
加密控制

VPC 加密控制支持您对 VPC 内的所有网络流量强制执行传输中加密。通过确保在指定的 VPC 中只能配置支持加密功能的基于 Nitro 的硬件，使用加密控制来满足监管合规要求。加密控制还会在 API 请求时而不是在预置期间发现兼容性问题。您的现有工作负载会继续运行，只有新的不兼容请求才会被阻止。

通过将 VPC 控制模式设为下面的设置，设置您的 VPC 加密控制：
+ *禁用*（默认）
+ *监控*
+ *强制实施*

要检查 VPC 的当前控制模式，请使用 Amazon Web Services 管理控制台或 [DescribeVpcs](https://docs.amazonaws.cn//AWSEC2/latest/APIReference/API_DescribeVpcs.html) CLI 或 API 命令。

如果 VPC 强制实施加密，您只能预置支持在该 VPC 中进行传输中加密的基于 Nitro 的数据库实例。有关更多信息，请参阅[数据库实例类类型](Concepts.DBInstanceClass.Types.md)。有关 Nitro 实例的信息，请参阅《Amazon EC2 用户指南》**中的[在 Amazon Nitro 系统上构建的实例](https://docs.amazonaws.cn/ec2/latest/instancetypes/ec2-nitro-instances.html)。

**注意**  
如果您尝试在强制实施加密的 VPC 中预置不兼容的数据库实例，Amazon RDS 会返回 `VpcEncryptionControlViolationException` 异常。

## 使用数据库子网组


*子网* 是您指定的用来根据安全和操作需要对资源进行分组的 VPC 的 IP 地址范围段。*数据库子网组* 是您在 VPC 中创建并随后指定给数据库实例的子网（通常为私有子网）的集合。使用数据库子网组，您可以在使用 Amazon CLI 或 RDS API 创建数据库实例时指定特定的 VPC。如果您使用控制台，则可以选择要使用的 VPC 和子网组。

每个数据库子网组应包含给定 Amazon Web Services 区域中至少两个可用区的子网。在 VPC 中创建数据库实例时，为其选择数据库子网组。从数据库子网组中，Amazon RDS 会选择子网和该子网中的 IP 地址（与数据库集群中的相关联）。数据库使用包含该子网的可用区。Amazon RDS 始终从具有可用 IP 地址空间的子网中分配 IP 地址。

如果某一多可用区部署的主数据库实例出现故障，Amazon RDS 可以提升相应的备用实例，并随后在另外一个可用区中使用子网的 IP 地址来创建一个新的备用实例。

数据库子网组中的子网要么是公有子网，要么是私有子网。根据您为网络访问控制列表（网络 ACL）和路由表设置的配置，这些子网是公有子网或私有子网。要使数据库实例可公开访问，其数据库子网组中的所有子网必须均为公有子网。如果与可公开访问的数据库实例关联的子网从公有更改为私有，则可能会影响数据库实例的可用性。

要创建支持双栈模式的数据库子网组，请确保添加到该数据库子网组的每个子网都有一个与之关联的互联网协议版本 6（IPv6）CIDR 数据块。有关更多信息，请参阅 *Amazon VPC 用户指南*中的 [Amazon RDS IP 寻址](#USER_VPC.IP_addressing)和[迁移到 IPv6](https://docs.amazonaws.cn/vpc/latest/userguide/vpc-migrate-ipv6.html)。

**注意**  
本地扩展区的数据库子网组只能有一个子网。

Amazon RDS 在 VPC 中创建数据库实例时，它使用数据库子网组中的 IP 地址将网络接口分配给数据库实例。不过，我们强烈建议您使用域名系统（DNS）名称来连接数据库实例。之所以建议这样做，是因为底层 IP 地址在失效转移期间会发生变化。

**注意**  
对于在 VPC 中运行的每个数据库实例，请确保数据库子网组的每个子网中预留至少一个地址，以供 Amazon RDS 用来执行恢复操作。

## 共享子网
共享子网

您可以在共享 VPC 中创建数据库实例。

使用共享 VPC 时需要记住的一些注意事项：
+ 您可以将数据库实例从共享 VPC 子网移动到非共享 VPC 子网，反之亦然。
+ 共享 VPC 中的参与者必须在 VPC 中创建安全组，才能允许他们创建数据库实例。
+ 共享 VPC 中的拥有者和参与者可以使用 SQL 查询访问数据库。但是，只有资源的创建者才能对该资源进行任何 API 调用。



## Amazon RDS IP 寻址
IP 寻址

IP 地址使 VPC 中的资源能够相互通信以及与 Internet 上的资源进行通信。Amazon RDS 同时支持 IPv4 和 IPv6 寻址协议。默认情况下，Amazon RDS 和 Amazon VPC 使用 IPv4 寻址协议。您无法关闭这种行为。创建 VPC 时，请确保指定 IPv4 CIDR 块 (一系列私有 IPv4 地址)。您可以选择将 IPv6 CIDR 块分配给您的 VPC 和子网，并将来自该块的 IPv6 地址分配给您子网中的数据库实例。

对 IPv6 协议的支持扩展了支持的 IP 地址数量。通过使用 IPv6 协议，您可以确保有足够的可用地址来应对 Internet 的未来发展。新的和现有 RDS 资源可以在 VPC 内使用 IPv4 和 IPv6 地址。在应用程序不同部分使用的两个协议之间配置、保护和转换网络流量可能会产生运营开销。您可以对 Amazon RDS 资源的 IPv6 协议进行标准化，以简化网络配置。

**Topics**
+ [

### IPv4 地址
](#USER_VPC.IP_addressing.IPv4)
+ [

### IPv6 地址
](#USER_VPC.IP_addressing.IPv6)
+ [

### 双栈模式
](#USER_VPC.IP_addressing.dual-stack-mode)

### IPv4 地址


创建 VPC 时，您必须以 CIDR 块（如 `10.0.0.0/16`）的形式为 VPC 指定一个 IPv4 地址范围。*数据库子网组* 定义此 CIDR 块中可供数据库实例使用的 IP 地址范围。这些 IP 地址可以是私有地址，也可以是公有地址。

私有 IPv4 地址是指无法通过 Internet 访问的 IP 地址。您可以使用私有 IPv4 地址在同一 VPC 中的数据库实例和其他资源（如 Amazon EC2 实例）之间进行通信。每个数据库实例都有一个用于在 VPC 中通信的私有 IP 地址。

公有 IP 地址是指可通过 Internet 访问的 IPv4 地址。您可以使用公有地址在数据库实例和 Internet 上的资源（如 SQL 客户端）之间进行通信。您可以控制数据库实例是否接收公有 IP 地址。

Amazon RDS 将 EC2 的公有 IPv4 地址池中的公有弹性 IPv4 地址用于可公开访问的数据库实例。当使用 `describe-addresses` CLI、API 或在 Amazon Web Services 管理控制台中查看弹性 IP（EIP）部分时，这些 IP 地址会在您的 Amazon 账户中可见。每个 RDS 管理的 IP 地址都标有设置为 `"rds"` 的 `service_managed` 属性。

虽然这些 IP 在您的账户中可见，但它们仍完全由 Amazon RDS 管理，无法修改或释放。当 IP 不再使用时，Amazon RDS 会将其释放回公有 IPv4 地址池中。

CloudTrail 记录与 RDS 的 EIP 相关的 API 调用，例如 `AllocateAddress`。这些 API 调用由服务主体 `rds.amazonaws.com` 调用。

**注意**  
Amazon RDS 分配的 IP 不计入您账户的 EIP 限制。

有关说明如何创建可用于常见 Amazon RDS 场景的 VPC（只有私有 IPv4 地址）的教程，请参阅 [教程：创建 VPC 以用于数据库实例（仅限 IPv4）](CHAP_Tutorials.WebServerDB.CreateVPC.md)。

### IPv6 地址


您可以选择向 VPC 和子网关联 IPv6 CIDR 块，然后将此块中的 IPv6 地址分配给 VPC 中的资源。每个 IPv6 地址都是全局唯一的。

我们将自动从 Amazon 的 IPv6 地址池中为您的 VPC 分配 IPv6 CIDR 块。您不能自行选择范围。

连接到 IPv6 地址时，请确保满足以下条件：
+ 客户端配置为允许通过 IPv6 进行客户端到数据库的通信。
+ 数据库实例使用的 RDS 安全组已正确配置，允许通过 IPv6 进行客户端到数据库的通信。
+ 客户端操作系统堆栈允许 IPv6 地址上有流量，操作系统驱动程序和库已配置为选择正确的默认数据库实例终端节点（IPv4 或 IPv6）。

有关 IPv6 的更多信息，请参阅 *Amazon VPC 用户指南*中的 [IP 寻址](https://docs.amazonaws.cn/vpc/latest/userguide/vpc-ip-addressing.html)。

### 双栈模式


当数据库实例可以通过 IPv4 和 IPv6 寻址协议进行通信时，它在双栈模式下运行。然后，资源可以使用 IPv4 和/或 IPv6 协议与数据库实例进行通信。私有双栈模式数据库实例具有 IPv6 端点，在这种情况下 RDS 仅限于 VPC 访问，这样可以确保您的 IPv6 端点保持私有状态。公共双栈模式数据库实例提供 IPv4 和 IPv6 端点，您可以从互联网访问这些端点。

**Topics**
+ [

#### 双栈模式和数据库子网组
](#USER_VPC.IP_addressing.dual-stack-db-subnet-groups)
+ [

#### 使用双栈模式数据库实例
](#USER_VPC.IP_addressing.dual-stack-working-with)
+ [

#### 修改仅限 IPv4 的数据库实例以使用双栈模式
](#USER_VPC.IP_addressing.dual-stack-modifying-ipv4)
+ [

#### 区域和版本可用性
](#USER_VPC.IP_addressing.RegionVersionAvailability)
+ [

#### 双栈网络数据库实例的限制
](#USER_VPC.IP_addressing.dual-stack-limitations)

有关说明如何创建您可用于常见 Amazon RDS 场景的 VPC（具有 IPv4 和 IPv6 地址）的教程，请参阅 [教程：创建 VPC 以用于数据库实例（双堆栈模式）](CHAP_Tutorials.CreateVPCDualStack.md)。

#### 双栈模式和数据库子网组


要使用双栈模式，请确保与数据库实例关联的数据库子网组中的每个子网都具有与之关联的 IPv6 CIDR 数据块。您可以创建新的数据库子网组或修改现有数据库子网组来满足此要求。当数据库实例处于双栈模式后，客户端可以与它正常连接。确保准确配置客户端安全防火墙和 RDS 数据库实例安全组，以允许通过 IPv6 的流量。要进行连接，客户端使用数据库实例的端点。。客户端应用程序可以指定连接到数据库时首选哪种协议。在双栈模式下，数据库实例会检测客户端的首选网络协议（IPv4 或 IPv6），并使用该协议进行连接。

如果某数据库子网组因子网删除或 CIDR 断开关联而停止支持双栈模式，则与该数据库子网组关联的数据库实例存在网络状态不兼容的风险。此外，创建新的双栈模式数据库实例时，您不能使用数据库子网组。

要使用 Amazon Web Services 管理控制台 确定数据库子网组是否支持双栈模式，请查看数据库子网组的详细信息页面上的**网络类型**。要使用 Amazon CLI 确定数据库子网组是否支持双栈模式，请运行 [describe-db-subnet-groups](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-db-subnet-groups.html) 命令并查看输出中的 `SupportedNetworkTypes`。

只读副本被视为独立的数据库实例，并且可以具有与主数据库实例不同的网络类型。如果您更改只读副本的主数据库实例的网络类型，则只读副本不会受到影响。当您还原数据库实例时，可以将其还原为支持的任何网络类型。

#### 使用双栈模式数据库实例


创建或修改数据库实例时，您可以指定双栈模式，以支持您的资源通过 IPv4 和/或 IPv6 与数据库实例进行通信。

当您使用 Amazon Web Services 管理控制台 创建或修改数据库实例时，可以在**网络类型**部分中指定双栈模式。下图显示了控制台中的 **Network type**（网络类型）部分。

![\[控制台中的网络类型部分，已选中双栈模式。\]](http://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/images/dual-stack-mode.png)


当您使用 Amazon CLI 创建或修改数据库实例时，请将 `--network-type` 选项设置为 `DUAL` 以使用双栈模式。当您使用 RDS API 创建或修改数据库实例时，请将 `NetworkType` 参数设置为 `DUAL` 以使用双栈模式。当您修改数据库实例的网络类型时，可能会出现停机。如果指定的数据库引擎版本或数据库子网组不支持双栈模式，则返回 `NetworkTypeNotSupported` 错误。

有关创建数据库实例的更多信息，请参阅 [创建 Amazon RDS 数据库实例](USER_CreateDBInstance.md)。有关修改数据库实例的更多信息，请参阅[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

要使用控制台确定数据库实例是否处于双栈模式，请查看数据库实例的**连接和安全**选项卡上的**网络类型**。

#### 修改仅限 IPv4 的数据库实例以使用双栈模式


您可以修改仅限 IPv4 的数据库实例以使用双栈模式。为此，请更改数据库实例的网络类型。修改可能会导致停机。

建议您在维护时段内更改 Amazon RDS 数据库实例的网络类型。目前，不支持将新实例的网络类型设置为双栈模式。您可以使用 `modify-db-instance` 命令手动设置网络类型。

修改数据库实例以使用双栈模式之前，请确保其数据库子网组支持双栈模式。如果与数据库实例关联的数据库子网组不支持双栈模式，请在修改数据库实例时指定支持该模式的其他数据库子网组。修改数据库实例的数据库子网组可能会导致停机。

如果在将数据库实例更改为使用双栈模式之前，修改数据库实例的数据库子网组，请确保该数据库子网组在更改前后对数据库实例有效。

对于 RDS for PostgreSQL、RDS for MySQL、RDS for Oracle 和 RDS for MariaDB 单可用区实例，我们建议您只使用设置为 `DUAL` 的 `--network-type` 参数运行 [modify-db-instance](https://docs.amazonaws.cn/cli/latest/reference/rds/modify-db-instance.html) 命令，以将网络更改为双栈模式。在同一 API 调用中将其他参数与 `--network-type` 参数一起添加可能会导致停机。要修改多个参数，请确保网络类型修改已成功完成，然后使用其他参数发送另一个 `modify-db-instance` 请求。

如果您仅使用 `--network-type` 参数或在 modify-db-instance 命令中组合使用参数，则修改 RDS for PostgreSQL、RDS for MySQL、RDS for Oracle 和 RDS for MariaDB 多可用区数据库实例的网络类型会导致短暂停机并触发失效转移。

如果仅使用 `--network-type` 参数或在 `modify-db-instance` 命令中组合使用参数，则修改 RDS for SQL Server 单可用区或多可用区数据库实例上的网络类型会导致停机。网络类型修改会导致 SQL Server 多可用区实例发生失效转移。

如果更改后无法连接到数据库实例，请确保已准确配置客户端和数据库安全防火墙和路由表，以允许流量流向选定网络（IPv4 或 IPv6）上的数据库。您可能还需要修改操作系统参数、库或驱动程序才能使用 IPv6 地址进行连接。

当您将数据库实例修改为使用双栈模式时，不能存在从单可用区部署到多可用区部署或从多可用区部署到单可用区部署的待处理更改。

**修改仅限 IPv4 的数据库实例以使用双栈模式**

1. 修改数据库子网组以支持双栈模式，或者创建支持双栈模式的数据库子网组：

   1. 将 IPv6 CIDR 块与 VPC 关联。

      有关说明，请参阅《Amazon VPC 用户指南》**中的[将 IPv6 CIDR 块添加到 VPC](https://docs.amazonaws.cn/vpc/latest/userguide/modify-vpcs.html#vpc-associate-ipv6-cidr)。

   1. 将 IPv6 CIDR 块附加到数据库子网组中的所有子网。

      有关说明，请参阅《Amazon VPC 用户指南》**中的[将 IPv6 CIDR 块添加到子网](https://docs.amazonaws.cn/vpc/latest/userguide/modify-subnets.html#subnet-associate-ipv6-cidr)。

   1. 确认数据库子网组支持双栈模式。

      如果您使用 Amazon Web Services 管理控制台，请选择数据库子网组，并确保 **Supported network types**（支持的网络类型）值为 **Dual, IPv4**（双，IPv4）。

      如果您使用 Amazon CLI，请运行 [describe-db-subnet-groups](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-db-subnet-groups.html) 命令，并确保数据库实例的 `SupportedNetworkType` 值为 `Dual, IPv4`。

1. 修改与数据库实例关联的安全组以允许与数据库建立 IPv6 连接，或者新建允许 IPv6 连接的安全组。

   有关说明，请参阅 *Amazon VPC 用户指南*中的[安全组规则](https://docs.amazonaws.cn/vpc/latest/userguide/security-group-rules.html)。

1. 修改数据库实例以支持双栈模式。为此，请将**网络类型**设置为**双栈模式**。

   如果您使用控制台，请确保以下设置正确：
   + **网络类型** – **双栈模式**  
![\[控制台中的网络类型部分，已选中双栈模式。\]](http://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/images/dual-stack-mode.png)
   + **DB subnet group**（数据库子网组）– 在上一步中配置的数据库子网组
   + **Security group**（安全组）– 在上一步中配置的安全组

   如果您使用 Amazon CLI，请确保以下设置正确：
   + `--network-type` – `dual`
   + `--db-subnet-group-name` – 在上一步中配置的数据库子网组
   + `--vpc-security-group-ids` – 在上一步中配置的 VPC 安全组

   例如：

   ```
   aws rds modify-db-instance --db-instance-identifier my-instance --network-type "DUAL"
   ```

1. 确认数据库实例支持双栈模式。

   如果您使用控制台，请对于数据库实例选择 **Connectivity & security**（连接和安全）选项卡。在该选项卡上，确保**网络类型**值为**双栈模式**。

   如果您使用 Amazon CLI，请运行 [describe-db-instances](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-db-instances.html) 命令，并确保数据库实例的 `NetworkType` 值为 `dual`。

   在数据库实例端点上运行 `dig` 命令，以标识与其关联的 IPv6 地址。

   ```
   dig db-instance-endpoint AAAA
   ```

   使用数据库实例端点（而不是 IPv6 地址）连接到数据库实例。

#### 区域和版本可用性
区域和版本可用性

功能可用性和支持因每个数据库引擎的特定版本以及 Amazon Web Services 区域而异。有关双栈模式下版本和区域可用性的更多信息，请参阅[支持 Amazon RDS 中双堆栈模式的区域和数据库引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.DualStackMode.md)。

#### 双栈网络数据库实例的限制


以下限制适用于双栈网络数据库实例：
+ 数据库实例不能仅使用 IPv6 协议。它们可以仅使用 IPv4，也可以同时使用 IPv4 和 IPv6 协议（双栈模式）。
+ Amazon RDS 不支持本机 IPv6 子网。
+ 对于 RDS for SQL Server，使用 Always On AG 可用性组侦听器端点的双栈模式数据库实例仅显示 IPv4 地址。
+ 不能将 RDS 代理与双栈模式数据库实例一起使用。
+ 不能将双栈模式与 RDS on Amazon Outposts 数据库实例一起使用。
+ 不能将双栈模式与本地区域中的数据库实例一起使用。

## 对互联网隐藏 VPC 中的数据库实例


一个常见的 Amazon RDS 场景是具有一个 VPC，其中有一个 Amazon EC2 实例（具有一个面向公众的 Web 应用程序）和一个数据库实例（具有一个不能公开访问的数据库）。例如，您可创建包含公有子网和私有子网的 VPC。可将充当 Web 服务器的 EC2 实例部署在公有子网中。数据库实例部署在私有子网中。在此部署方案中，只有 Web 服务器才能访问数据库实例。有关此方案的说明，请参阅 [VPC 中的数据库实例由同一 VPC 中的 Amazon EC2 实例访问](USER_VPC.Scenarios.md#USER_VPC.Scenario1)。

当您在 VPC 中启动数据库实例时，该数据库实例具有用于 VPC 内流量的私有 IP 地址。此私有 IP 地址不可公开访问。您可以使用 **Public access**（公有访问权限）选项指定数据库实例除了私有 IP 地址之外是否还具有公有 IP 地址。如果将数据库实例指定为可公开访问，则其 DNS 端点解析为 VPC 内部的私有 IP 地址。它从 VPC 外部解析为公有 IP 地址。对数据库实例的访问最终由它使用的安全组控制。如果分配给数据库实例的安全组不包含允许公有访问的入站规则，则不允许该公有访问。此外，要使数据库实例可公开访问，其数据库子网组中的子网必须具有互联网网关。有关更多信息，请参阅[无法连接到 Amazon RDS 数据库实例](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)

您可以通过修改 **Public access**（公开访问）选项，修改数据库实例来开启或关闭公开可访问性。下图显示了**其他连接配置**部分中的**公开访问**选项。要设置此选项，请打开**连接**部分中的**其他连接配置**部分。

![\[将其他连接配置部分中的数据库公共访问选项设置为否。\]](http://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/images/VPC-example4.png)


有关修改数据库实例以设置**公开访问**选项的信息，请参阅[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

## 在 VPC 中创建数据库实例


以下过程帮助您在 VPC 中创建数据库实例。要使用默认 VPC，可以从步骤 2 开始，并使用已经为您创建的 VPC 和数据库子网组。如果您想创建其他 VPC，则可创建新的 VPC。

**注意**  
如果要让 VPC 中的数据库实例实现公开访问，则必须通过启用 VPC 属性 *DNS hostnames*（DNS 主机名）和 *DNS resolution*（DNS 解析）更新 VPC 的 DNS 信息。有关更新 VPC 实例的 DNS 信息的信息，请参阅[更新对 VPC 的 DNS 支持](https://docs.amazonaws.cn/vpc/latest/userguide/vpc-dns.html)。

执行以下步骤可在 VPC 中创建数据库实例：
+ [步骤 1：创建 VPC](#USER_VPC.CreatingVPC) 
+  [步骤 2：创建数据库子网组](#USER_VPC.CreateDBSubnetGroup)
+  [步骤 3：创建 VPC 安全组](#USER_VPC.CreateVPCSecurityGroup)
+  [步骤 4：在 VPC 中创建数据库实例](#USER_VPC.CreateDBInstanceInVPC) 

### 步骤 1：创建 VPC


创建一个 VPC，该 VPC 具有的子网位于至少两个可用区内。您在创建数据库子网组时将使用这些子网。如果您拥有默认 VPC，则系统会在该 Amazon Web Services 区域中的每个可用区中自动为您创建子网。

有关更多信息，请参阅[创建包含公有子网和私有子网的 VPC](CHAP_Tutorials.WebServerDB.CreateVPC.md#CHAP_Tutorials.WebServerDB.CreateVPC.VPCAndSubnets)，或参阅《Amazon VPC 用户指南》**中的[创建 VPC](https://docs.amazonaws.cn/vpc/latest/userguide/working-with-vpcs.html#Create-VPC)。

### 步骤 2：创建数据库子网组


数据库子网组是您为 VPC 创建、然后为数据库实例指定的子网（通常为私有子网）的集合。数据库子网组可让您在使用 Amazon CLI 或 RDS API 创建数据库实例时指定特定的 VPC。如果您使用控制台，您就只能选择要使用的 VPC 和子网。每个数据库子网组必须至少包含给定 Amazon Web Services 区域中至少两个可用区的一个子网。作为最佳实践，每个数据库子网组应至少包含 Amazon Web Services 区域中每个可用区的一个子网。

对于多可用区部署，为 Amazon Web Services 区域中的所有可用区定义子网，使得 Amazon RDS 可以在必要时在另一个可用区中创建新的备用副本。即使是单可用区部署，您也可以遵循此最佳实践，因为将来可能会将其转换为多可用区部署。

为使数据库实例可公开访问，数据库子网组中的子网必须具有互联网网关。有关子网的互联网网关的更多信息，请参阅《Amazon VPC 用户指南》**中的[使用互联网网关连接到互联网](https://docs.amazonaws.cn/vpc/latest/userguide/VPC_Internet_Gateway.html)。

**注意**  
本地扩展区的数据库子网组只能有一个子网。

在 VPC 中创建数据库实例时，您可以选择数据库子网组。Amazon RDS 会选择要与数据库实例关联的子网和该子网中的 IP 地址。如果不存在数据库子网组，Amazon RDS 会在您创建数据库实例时创建默认子网组。Amazon RDS 使用该 IP 地址创建弹性网络接口并将其关联到您的数据库实例。数据库实例使用包含该子网的可用区。

对于多可用区部署，通过为 Amazon Web Services 区域 中的两个或更多可用区定义子网，Amazon RDS 可在需求增加时在另一个可用区中创建新的备用实例。即使是单可用区部署，您也需要这样做，以防以后需要将它们转换为多可用区部署。

在此步骤中，您创建一个数据库子网组，然后添加为 VPC 创建的子网。

**创建数据库子网组**

1. 通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.amazonaws.cn/rds/)。

1. 在导航窗格中，选择**子网组**。

1. 选择**创建数据库子网组**。

1. 对于**名称**，键入您的数据库子网组的名称。

1. 对于**描述**，键入您的数据库子网组的描述。

1. 对于 **VPC**，选择默认 VPC 或您创建的 VPC。

1. 在**添加子网**部分中，从**可用区**中选择包含子网的可用区，然后从**子网**中选择子网。  
![\[创建数据库子网组。\]](http://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/images/RDSVPC101.png)
**注意**  
如果已启用本地扩展区，则可以在**创建数据库子网组**页面上选择可用区组。在这种情况下，请选择**可用区组**、**可用区**和**子网**。

1. 选择**创建**。

   您的新数据库子网组显示在 RDS 控制台的数据库子网组列表中。可选择该数据库子网组，在窗口底部的详细信息窗格中查看详细信息，其中包括与该组关联的所有子网。

### 步骤 3：创建 VPC 安全组


创建数据库实例前，您可以创建要与数据库实例相关联的 VPC 安全组。如果您不创建 VPC 安全组，则可以在创建数据库实例时使用默认安全组。有关如何为数据库实例创建安全组的说明，请参阅[为私有数据库实例创建 VPC 安全组](CHAP_Tutorials.WebServerDB.CreateVPC.md#CHAP_Tutorials.WebServerDB.CreateVPC.SecurityGroupDB)，或参阅《Amazon VPC 用户指南》**中的[使用安全组控制到资源的流量](https://docs.amazonaws.cn/vpc/latest/userguide/VPC_SecurityGroups.html)。

### 步骤 4：在 VPC 中创建数据库实例


在此步骤中，创建一个数据库实例，并使用在之前的步骤中创建的 VPC 名称、数据库子网组和 VPC 安全组。

**注意**  
如果要让 VPC 中的数据库实例实现公开访问，必须启用 VPC 属性 *DNS hostnames*（DNS 主机名）和 *DNS resolution*（DNS 解析）。有关更多信息，请参阅《Amazon VPC 用户指南》**中的 [VPC 的 DNS 属性](https://docs.amazonaws.cn/vpc/latest/userguide/vpc-dns.html)。

有关如何创建数据库实例的详细信息，请参阅[创建 Amazon RDS 数据库实例](USER_CreateDBInstance.md)。

在 **Connectivity**（连接）部分出现提示时，输入 VPC 名称、数据库子网组和 VPC 安全组。

# 更新数据库实例的 VPC
更新数据库实例的 VPC

您可以使用 Amazon Web Services 管理控制台将您的数据库实例移动到其他 VPC。

有关修改 数据库实例的信息，请参阅[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。在修改页面的 **Connectivity**（连接）部分（如下所示）中，为 **DB subnet group**（数据库子网组）输入新的数据库子网组。新子网组必须是新 VPC 中的子网组。

![\[修改数据库实例子网组。\]](http://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/images/EC2-VPC.png)


如果满足以下条件，便无法更改数据库实例的 VPC：
+ 数据库实例位于多个可用区中。您可以将数据库实例转换为单个可用区，将其移动到新的 VPC，然后将其转换回多可用区数据库实例。有关更多信息，请参阅 [配置和管理 Amazon RDS 的多可用区部署](Concepts.MultiAZ.md)。
+ 数据库实例拥有一个或多个只读副本。您可以删除只读副本，将数据库实例移动到新 VPC，然后再次添加只读副本。有关更多信息，请参阅 [使用数据库实例只读副本](USER_ReadRepl.md)。
+ 数据库实例为只读副本。您可以提升只读副本，然后将独立数据库实例移动到新 VPC。有关更多信息，请参阅 [将只读副本提升为独立的数据库实例](USER_ReadRepl.Promote.md)。
+ 目标 VPC 中的子网组在数据库实例的可用区中没有子网。您可以将数据库实例可用区中的子网添加到数据库子网组，然后将数据库实例移动到新 VPC。有关更多信息，请参阅 [使用数据库子网组](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.Subnets)。

# 在 VPC 中访问数据库实例的场景


Amazon RDS 支持以下在 VPC 中访问数据库实例的场景：
+ [同一 VPC 中的 Amazon EC2 实例](#USER_VPC.Scenario1)
+ [不同 VPC 中的 EC2 实例](#USER_VPC.Scenario3)
+ [通过 Internet 访问的客户端应用程序](#USER_VPC.Scenario4)
+ [私有网络](#USER_VPC.NotPublic)

## VPC 中的数据库实例由同一 VPC 中的 Amazon EC2 实例访问
同一 VPC 中的 Amazon EC2 实例

VPC 中的数据库实例的常见用途是与在相同 VPC 的 Amazon EC2 实例中运行的应用程序服务器共享数据。

下图说明了此情形。

![\[带有公有 Web 服务器和私有数据库的 VPC 场景。\]](http://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/images/con-VPC-sec-grp.png)


管理相同 VPC 中 EC2 实例与数据库实例之间的访问的最简单方法是执行以下操作：
+ 创建数据库实例将位于其中的 VPC 安全组。此安全组可用于限制对数据库实例的访问权限。例如，您可以为该安全组创建自定义规则。该规则可能允许使用您创建数据库实例时分配给它的端口以及您用来访问数据库实例的 IP 地址（用于开发或其他目的）进行 TCP 访问。
+ 创建您的 EC2 实例（Web 服务器和客户端）将位于其中的 VPC 安全组。如果需要，此安全组可允许使用 VPC 的路由表从 Internet 访问 EC2 实例。例如，您可设置此安全组的规则以允许通过端口 22 对 EC2 实例进行 TCP 访问。
+ 为数据库实例的安全组创建自定义规则，这些规则允许从您为 EC2 实例创建的安全组进行连接。这些规则将允许安全组的任何成员访问数据库实例。

在单独的可用区中还有一个额外的公有和私有子网。RDS 数据库子网组需要位于至少两个可用区中的一个子网。额外的子网使将来很容易切换到多可用区数据库实例部署。

有关说明如何为此方案创建包含公有子网和私有子网的 VPC 的教程，请参阅[教程：创建 VPC 以用于数据库实例（仅限 IPv4）](CHAP_Tutorials.WebServerDB.CreateVPC.md)。

**提示**  
创建数据库实例时，您可以在 Amazon EC2 实例和数据库实例之间自动设置网络连接。有关更多信息，请参阅 [配置与 EC2 实例的自动网络连接](USER_CreateDBInstance.md#USER_CreateDBInstance.Prerequisites.VPC.Automatic)。

**要在 VPC 安全组中创建允许从另一安全组连接的规则，请执行以下操作：**

1.  登录到Amazon Web Services 管理控制台并打开 Amazon VPC 控制台，网址：[https://console.aws.amazon.com/vpc](https://console.amazonaws.cn/vpc)。

1.  在导航窗格中，选择 **Security groups**（安全组）。

1. 选择或创建要允许另一个安全组的成员访问的安全组。在前面的场景中，这是您用于数据库实例的安全组。选择 **Inbound rules**（入站规则）选项卡，然后选择 **Edit inbound rules**（编辑入站规则）。

1. 在 **Edit inbound rules**（编辑入站规则）页面上，选择 **Add rule**（添加规则）。

1. 对于**类型**，选择与创建数据库实例时使用的端口相对应的条目，如 **MYSQL/Aurora**。

1. 在**源**框中，开始键入安全组的 ID，其中列出了匹配的安全组。选择您希望其成员可以访问此安全组保护的资源的安全组。在前面的方案中，这是您用于 EC2 实例的安全组。

1. 如果需要，可通过在**源**框中创建**类型**为**所有 TCP** 的规则以及安全组，对 TCP 协议重复这些步骤。如果您打算使用 UDP 协议，请在 **Source**（源）框中创建 **Type**（类型）为 **All UDP**（所有 UDP）的规则以及安全组。

1. 选择**保存规则**。

以下屏幕显示了包含其来源的安全组的入站规则。

![\[将安全组添加到另一安全组的规则。\]](http://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/images/con-vpc-add-sg-rule.png)


有关从 EC2 实例连接到数据库实例的更多信息，请参阅[连接到 Amazon RDS 数据库实例](CHAP_CommonTasks.Connect.md)。

## VPC 中的数据库实例由另一 VPC 中的 EC2 实例访问
不同 VPC 中的 EC2 实例

当您的数据库实例与您用来访问它的 EC2 实例位于不同的 VPC 中时，可使用 VPC 对等连接来访问数据库实例。

下图说明了此情形。

![\[VPC 中的数据库实例由另一 VPC 中的 Amazon EC2 实例访问。\]](http://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/images/RDSVPC2EC2VPC.png)


VPC 对等连接是两个 VPC 之间的网络连接，通过此连接，您可以使用私有 IP 地址在这两个 VPC 之间路由流量。这两个 VPC 中的资源可以彼此通信，就像它们在同一网络中一样。您可以在自己的 VPC 之间、自己的 VPC 与另一个 Amazon 账户中的 VPC 或与其他 Amazon Web Services 区域中的 VPC 之间创建 VPC 对等连接。要了解有关 VPC 对等的更多信息，请参阅 *Amazon Virtual Private Cloud 用户指南* 中的 [VPC 对等](https://docs.amazonaws.cn/vpc/latest/userguide/vpc-peering.html)。

## VPC 中的数据库实例由客户端应用程序通过互联网访问
通过 Internet 访问的客户端应用程序

要从客户端应用程序通过互联网访问 VPC 中的数据库实例，您可配置包含单个公有子网的 VPC 以及一个互联网网关，以实现通过互联网通信。

下图说明了此情形。

![\[VPC 中的数据库实例由客户端应用程序通过互联网访问。\]](http://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/images/GS-VPC-network.png)


推荐以下配置：

 
+ 大小为 /16 的 VPC (例如，CIDR：10.0.0.0/16)。此大小提供了 65536 个私有 IP 地址。
+ 大小为 /24 的子网 (例如，CIDR：10.0.0.0/24)。此大小提供了 256 个私有 IP 地址。
+ 与 VPC 和子网关联的 Amazon RDS 数据库实例。Amazon RDS 将子网内的 IP 地址分配给您的数据库实例。
+ 将 VPC 连接到 Internet 和其他 Amazon 产品的互联网网关。
+ 与数据库实例关联的安全组。安全组的入站规则允许客户端应用程序访问数据库实例。

有关在 VPC 中创建数据库实例的信息，请参阅[在 VPC 中创建数据库实例](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.InstanceInVPC)。

## VPC 中由私有网络访问的数据库实例
私有网络

如果您的数据库实例不可公开访问，可通过以下选项从私有网络进行访问：
+ 一个Amazon Site-to-Site VPN 连接。有关更多信息，请参阅[什么是 Amazon Site-to-Site VPN？](https://docs.amazonaws.cn/vpn/latest/s2svpn/VPC_VPN.html)
+ 一个 Amazon Direct Connect 连接。有关更多信息，请参阅[什么是 Amazon Direct Connect？](https://docs.amazonaws.cn/directconnect/latest/UserGuide/Welcome.html)
+ 一个 Amazon Client VPN 连接。有关更多信息，请参阅[什么是 Amazon Client VPN？](https://docs.amazonaws.cn//vpn/latest/clientvpn-admin/what-is.html)

下图显示了一个具有Amazon Site-to-Site VPN 连接的场景。

![\[VPC 中的数据库实例通过私有网络访问。\]](http://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/images/site-to-site-vpn-connection.png)


有关更多信息，请参阅 [互联网络流量隐私](inter-network-traffic-privacy.md)。

# 教程：创建 VPC 以用于数据库实例（仅限 IPv4）
教程：创建 VPC 以用于数据库实例（仅限 IPv4）

一种常见的场景包括虚拟私有云（VPC）中基于 Amazon VPC 服务的数据库实例。此 VPC 与在同一 VPC 中运行的 Web 服务器共享数据。在本教程中，针对此场景创建 VPC。

下图说明了此情形。有关其他方案的信息，请参阅[在 VPC 中访问数据库实例的场景](USER_VPC.Scenarios.md)。

![\[单个 VPC 场景\]](http://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/images/con-VPC-sec-grp.png)


数据库实例只需对 Web 服务器可用，而无需对公共互联网可用。因此，请创建包含公有子网和私有子网的 VPC。Web 服务器托管在公有子网中，以便它可访问公共互联网。数据库实例托管于私有子网中。Web 服务器可以连接到数据库实例，因为它托管在同一 VPC 内。但是，数据库实例不可用于公共互联网，从而提高了安全性。

本教程在单独的可用区中配置额外的公有和私有子网。本教程未使用这些子网。RDS 数据库子网组需要位于至少两个可用区中的一个子网。额外的子网使将来更容易切换到多可用区数据库实例部署。

本教程介绍为 Amazon RDS 数据库实例配置 VPC。有关向您说明如何为此 VPC 方案创建 Web 服务器的教程，请参阅[教程：创建 Web 服务器和 Amazon RDS 数据库实例](TUT_WebAppWithRDS.md)。有关 Amazon VPC 的更多信息，请参阅 [Amazon VPC 入门指南](https://docs.amazonaws.cn/AmazonVPC/latest/GettingStartedGuide/)和 [Amazon VPC 用户指南](https://docs.amazonaws.cn/vpc/latest/userguide/)。

**提示**  
创建数据库实例时，您可以在 Amazon EC2 实例和数据库实例之间自动设置网络连接。网络配置类似于本教程中描述的配置。有关更多信息，请参阅[配置与 EC2 实例的自动网络连接](USER_CreateDBInstance.md#USER_CreateDBInstance.Prerequisites.VPC.Automatic)。

## 创建包含公有子网和私有子网的 VPC


使用以下步骤创建包含公有和私有子网的 VPC。

**创建 VPC 和子网**

1. 通过 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/) 打开 Amazon VPC 控制台。

1. 在 Amazon Web Services 管理控制台 的右上角，选择要在其中创建 VPC 的区域。此示例使用 美国西部（俄勒冈） 区域。

1. 在左上角，选择 **VPC Dashboard**（VPC 控制面板）。要开始创建 VPC，请选择 **Create VPC**（创建 VPC）。

1. 对于 **VPC Settings**（VPC 设置）下的 **Resources to create**（要创建的资源），选择 **VPC and more**（VPC 及更多）。

1. 对于 **VPC settings**（VPC 设置），请设置以下值：
   + **Name tag auto-generation**（名称标签自动生成）– **tutorial**
   + **IPv4 CIDR block**（IPv4 CIDR 块）– **10.0.0.0/16**
   + **IPv6 CIDR block**（IPv6 CIDR 块）– **No IPv6 CIDR block**（无 IPv6 CIDR 块）
   + **Tenancy**（租赁）– **Default**（原定设置）
   + **Number of Availability Zones (AZs)** [可用区（AZ）数量] – **2**
   + **Customize AZs**（自定义可用区）– 保留原定设置值。
   + **Number of public subnet**（公有子网的数量）– **2**
   + **Number of private subnets**（私有子网的数量）– **2**
   + **Customize subnets CIDR blocks**（自定义子网 CIDR 块）– 保留原定设置值。
   + **NAT gateways (\$1)** [NAT 网关（\$1）]– **None**（无）
   + **VPC endpoints**（VPC 端点）– **None**（无）
   + **DNS options**（DNS 选项）– 保留原定设置值。
**注意**  
Amazon RDS 至少需要位于两个不同可用区中的两个子网，才能支持多可用区数据库实例部署。本教程创建了单可用区部署，但这项要求使得将来可以更轻松地转换为多可用区数据库实例部署。

1. 选择**创建 VPC**。

## 为公共 Web 服务器创建 VPC 安全组


接下来创建安全组以便公共访问。要连接到 VPC 中的公有 EC2 实例，请将入站规则添加到 VPC 安全组。这些规则允许流量从互联网进行连接。

**创建 VPC 安全组**

1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/)。

1. 依次选择 **VPC 控制面板)**、**安全组**和**创建安全组**。

1. 在**创建安全组**页面上，设置以下值：
   + **安全组名称：****tutorial-securitygroup**
   + **说明：****Tutorial Security Group**
   + **VPC**：选择您之前创建的 VPC，例如：**vpc-*identifier* (tutorial-vpc)** 

1. 将入站规则添加到安全组。

   1. 确定要用来通过 Secure Shell（SSH）连接到 VPC 中的 EC2 实例的 IP 地址。要确定您的公有 IP 地址，请在新的浏览器窗口或标签页中，使用 [https://checkip.amazonaws.com](https://checkip.amazonaws.com) 上的服务。IP 地址的一个示例为 `203.0.113.25/32`。

      在许多情况下，您可能通过互联网服务提供商（ISP）进行连接，或者在不使用静态 IP 地址的情况下从防火墙之后进行连接。如果是这样，请找出客户端计算机使用的 IP 地址范围。
**警告**  
如果您使用 `0.0.0.0/0` 进行 SSH 访问，则所有 IP 地址可能能够使用 SSH 访问您的公有实例。在测试环境下短时间内，此方法尚可接受，但它对于生产环境并不安全。在生产环境中，将仅向特定 IP 地址或地址范围授权使用 SSH 访问您的实例。

   1. 在**入站规则**部分中，选择**添加规则**。

   1. 为新入站规则设置以下值，以允许 SSH 访问 Amazon EC2 实例。如果这样做，您就可以连接到 Amazon EC2 实例，以便安装 Web 服务器和其他实用程序。您还可以连接到 EC2 实例，以便上载 Web 服务器的内容。
      + **类型：** **SSH**
      + **源：**步骤 a 中的 IP 地址或范围，例如：**203.0.113.25/32**。

   1. 选择 **Add rule**。

   1. 为新入站规则设置以下值以允许针对 Web 服务器的 HTTP 访问：
      + **类型：** **HTTP**
      + **源：****0.0.0.0/0**

1. 请选择 **Create security group**（创建安全组）以创建安全组。

   请记下安全组 ID，因为本教程的后面将需要它。

## 为私有数据库实例创建 VPC 安全组


要保持您的数据库实例为私有，请创建第二个安全组进行私有访问。要连接到 VPC 中的私有数据库实例，请将入站规则添加到 VPC 安全组，以仅支持来自 Web 服务器的流量。

**创建 VPC 安全组**

1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/)。

1. 依次选择 **VPC 控制面板)**、**安全组**和**创建安全组**。

1. 在**创建安全组**页面上，设置以下值：
   + **安全组名称：****tutorial-db-securitygroup**
   + **说明：****Tutorial DB Instance Security Group**
   + **VPC**：选择您之前创建的 VPC，例如：**vpc-*identifier* (tutorial-vpc)**

1. 将入站规则添加到安全组。

   1. 在**入站规则**部分中，选择**添加规则**。

   1. 为新入站规则设置以下值，以允许 Amazon EC2 实例中端口 3306 上的 MySQL 流量。如果这样做，您就可以从 Web 服务器连接到数据库实例。这样，您就可以从 Web 应用程序将数据存储和检索到数据库。
      + **类型：****MySQL/Aurora**
      + **Source**（源）：您在本教程的前面部分创建的 **tutorial-securitygroup** 安全组的标识符，例如 **sg-9edd5cfb**。

1. 请选择 **Create security group**（创建安全组）以创建安全组。

## 创建数据库子网组


*数据库子网组* 是您在 VPC 中创建并随后指定给数据库实例的子网集合。通过数据库子网组，您可能能够在创建数据库实例时指定特定的 VPC。

**创建数据库子网组**

1. 在 VPC 中识别数据库的私有子网。

   1. 通过 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/) 打开 Amazon VPC 控制台。

   1. 选择 **VPC Dashboard**（VPC 控制面板），然后选择 **Subnets**（子网）。

   1. 记下名为 **tutorial-subnet-private1-us-west-2a** 和 **tutorial-subnet-private2-us-west-2b** 的子网的子网 ID。

      创建数据库子网组时需要子网 ID。

1. 通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.amazonaws.cn/rds/)。

   确保您连接到 Amazon RDS 控制台，而不是 Amazon VPC 控制台。

1. 在导航窗格中，选择**子网组**。

1. 选择 **Create DB subnet group**（创建数据库子网组）。

1. 在**创建数据库子网组**页面的**子网组详细信息**中设置以下值：
   + **名称：****tutorial-db-subnet-group**
   + **说明：****Tutorial DB Subnet Group**
   + **VPC**：**tutorial-vpc (vpc-*identifier*)** 

1. 在**添加子网**部分中，选择**可用区**和**子网**。

   对于本教程，请为 **Availability Zones**（可用区）选择 **us-west-2a** 和 **us-west-2b**。对于 **Subnets**（子网），选择您在上一步中确定的私有子网。

1. 选择**创建**。

   您的新数据库子网组显示在 RDS 控制台的数据库子网组列表中。可选择该数据库子网组，以在窗口底部的详细信息窗格中查看详细信息。这些详细信息包括与该组关联的所有子网。

**注意**  
如果您已创建此 VPC 以完成 [教程：创建 Web 服务器和 Amazon RDS 数据库实例](TUT_WebAppWithRDS.md)，请按照 [创建 Amazon RDS 数据库实例](CHAP_Tutorials.WebServerDB.CreateDBInstance.md) 中的说明创建数据库实例。

## 删除 VPC


为本教程创建 VPC 和其他资源后，如果不再需要 VPC 和其他资源，可以将其删除。

**注意**  
如果您在为本教程创建的 VPC 中添加了资源，则可能需要先删除这些资源，然后才能删除 VPC。例如，这些资源可能包括 Amazon EC2 实例或 Amazon RDS 数据库实例。有关更多信息，请参阅 *Amazon VPC 用户指南*中的[您的 VPC 的安全性](https://docs.amazonaws.cn/vpc/latest/userguide/working-with-vpcs.html#VPC_Deleting)。

**删除 VPC 和相关资源**

1. 删除数据库子网组。

   1. 通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.amazonaws.cn/rds/)。

   1. 在导航窗格中，选择**子网组**。

   1. 选择要删除的数据库子网组，例如 **tutorial-db-subnet-group**。

   1. 选择 **Delete (删除)**，然后在确认窗口中选择 **Delete (删除)**。

1. 记下 VPC ID。

   1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/)。

   1. 选择 **VPC 控制面板**，然后选择 **VPC**。

   1. 在列表中，确定您创建的 VPC，例如 **tutorial-vpc**。

   1. 记下所创建 VPC 的 **VPC ID**。在后面的步骤中，您需要此 VPC ID。

1. 删除安全组。

   1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/)。

   1. 选择 **VPC 控制面板**，然后选择**安全组**。

   1. 选择 Amazon RDS 数据库实例的安全组，例如 **tutorial-db-securitygroup**。

   1. 对于 **Actions**（操作），请选择 **Delete security groups**（删除安全组），然后在确认页面上选择 **Delete**（删除）。

   1. 在**安全组**页面上，选择 Amazon EC2 实例的安全组，例如 **tutorial-securitygroup**。

   1. 对于 **Actions**（操作），请选择 **Delete security groups**（删除安全组），然后在确认页面上选择 **Delete**（删除）。

1. 删除 VPC

   1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/)。

   1. 选择 **VPC 控制面板**，然后选择 **VPC**。

   1. 选择要删除的 VPC，例如 **tutorial-vpc**。

   1. 对于 **Actions (操作)**，请选择 **Delete VPC (删除 VPC)**。

      确认页面显示与 VPC 关联的其他资源，这些资源也将被删除，包括与其关联的子网。

   1. 在确认页面上，输入 **delete** 并选择 **Delete (删除)**。

# 教程：创建 VPC 以用于数据库实例（双堆栈模式）
教程：创建 VPC 以用于数据库实例（双堆栈模式）

一种常见的场景包括虚拟私有云（VPC）中基于 Amazon VPC 服务的数据库实例。此 VPC 与在同一 VPC 中运行的公有 Amazon EC2 实例共享数据。

在本教程中，您将为此场景创建 VPC，该 VPC 与在双堆栈模式下运行的数据库一起使用。双堆栈模式，用于启用基于 IPv6 寻址协议的连接。有关 IP 地址的更多信息，请参阅 [Amazon RDS IP 寻址](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.IP_addressing)。

大多数区域支持双堆栈网络实例。有关更多信息，请参阅 [区域和版本可用性](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.IP_addressing.RegionVersionAvailability)。要查看双堆栈模式的限制，请参阅 [双栈网络数据库实例的限制](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.IP_addressing.dual-stack-limitations)。

下图说明了此情形。

 

![\[双堆栈模式的 VPC 场景\]](http://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/images/con-VPC-sec-grp-dual-stack.png)


有关其他方案的信息，请参阅[在 VPC 中访问数据库实例的场景](USER_VPC.Scenarios.md)。

数据库实例只需对 Amazon EC2 实例可用，而无需对公共互联网可用。因此，请创建包含公有子网和私有子网的 VPC。Amazon EC2 实例托管在公有子网中，以便它可访问公共 Internet。数据库实例托管于私有子网中。Amazon EC2 实例可以连接到数据库实例，因为它托管在同一 VPC 内。但是，数据库实例不可用于公共互联网，从而提高了安全性。

本教程在单独的可用区中配置额外的公有和私有子网。本教程未使用这些子网。RDS 数据库子网组需要位于至少两个可用区中的一个子网。额外的子网使将来很容易切换到多可用区数据库实例部署。

要创建使用双堆栈模式的数据库实例，请为 **Network type**（网络类型）设置指定 **Dual-stack mode**（双堆栈模式）。您也可以使用相同的设置修改数据库实例。有关更多信息，请参阅[创建 Amazon RDS 数据库实例](USER_CreateDBInstance.md)和[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

本教程介绍为 Amazon RDS 数据库实例配置 VPC。有关 Amazon VPC 的更多信息，请参阅 [Amazon VPC 用户指南](https://docs.amazonaws.cn/vpc/latest/userguide/)。

## 创建包含公有子网和私有子网的 VPC


使用以下步骤创建包含公有和私有子网的 VPC。

**创建 VPC 和子网**

1. 通过 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/) 打开 Amazon VPC 控制台。

1. 在 Amazon Web Services 管理控制台 的右上角，选择要在其中创建 VPC 的区域。此示例使用美国东部（俄亥俄州）区域。

1. 在左上角，选择 **VPC Dashboard**（VPC 控制面板）。要开始创建 VPC，请选择 **Create VPC**（创建 VPC）。

1. 对于 **VPC Settings**（VPC 设置）下的 **Resources to create**（要创建的资源），选择 **VPC and more**（VPC 及更多）。

1. 对于剩下的 **VPC settings**（VPC 设置），请设置这些值：
   + **Name tag auto-generation**（名称标签自动生成）– **tutorial-dual-stack**
   + **IPv4 CIDR block**（IPv4 CIDR 块）– **10.0.0.0/16**
   + **IPv6 CIDR block**（IPv6 CIDR 块）– **Amazon-provided IPv6 CIDR block**（Amazon 提供的 IPv6 CIDR 块）
   + **Tenancy**（租赁）– **Default**（原定设置）
   + **Number of Availability Zones (AZs)** [可用区（AZ）数量] – **2**
   + **Customize AZs**（自定义可用区）– 保留原定设置值。
   + **Number of public subnet**（公有子网的数量）– **2**
   + **Number of private subnets**（私有子网的数量）– **2**
   + **Customize subnets CIDR blocks**（自定义子网 CIDR 块）– 保留原定设置值。
   + **NAT gateways (\$1)** [NAT 网关（\$1）]– **None**（无）
   + **Egress only internet gateway**（仅限出口的互联网网关）– **No**（否）
   + **VPC endpoints**（VPC 端点）– **None**（无）
   + **DNS options**（DNS 选项）– 保留原定设置值。
**注意**  
Amazon RDS 至少需要位于两个不同可用区中的两个子网，才能支持多可用区数据库实例部署。本教程创建了单可用区部署，但这项要求使得将来可以轻松转换为多可用区数据库实例部署。

1. 选择**创建 VPC**。

## 为公有 Amazon EC2 实例创建 VPC 安全组


接下来创建安全组以便公共访问。要连接到 VPC 中的公有 EC2 实例，请将入站规则添加到 VPC 安全组，以允许流量从互联网连接。

**创建 VPC 安全组**

1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/)。

1. 依次选择 **VPC 控制面板)**、**安全组**和**创建安全组**。

1. 在**创建安全组**页面上，设置以下值：
   + **安全组名称：****tutorial-dual-stack-securitygroup**
   + **说明：****Tutorial Dual-Stack Security Group**
   + **VPC**：选择您之前创建的 VPC，例如：**vpc-*identifier* (tutorial-dual-stack-vpc)** 

1. 将入站规则添加到安全组。

   1. 确定要用来通过 Secure Shell（SSH）连接到 VPC 中的 EC2 实例的 IP 地址。

      互联网协议版本 4（IPv4）地址的示例为 `203.0.113.25/32`。互联网协议版本 6（IPv6）地址范围的示例为 `2001:db8:1234:1a00::/64`。

      在许多情况下，您可能通过互联网服务提供商（ISP）进行连接，或者在不使用静态 IP 地址的情况下从防火墙之后进行连接。如果是这样，请找出客户端计算机使用的 IP 地址范围。
**警告**  
如果对 IPv4 使用 `0.0.0.0/0` 或对 IPv6 使用 `::0`，则使所有 IP 地址可能能够使用 SSH 访问您的公有实例。在测试环境下短时间内，此方法尚可接受，但它对于生产环境并不安全。在生产环境中，请仅授权特定 IP 地址或地址范围访问您的实例。

   1. 在**入站规则**部分中，选择**添加规则**。

   1. 为新入站规则设置以下值，以允许安全外壳 (SSH) 访问 Amazon EC2 实例。如果这样做，则可以连接到 EC2 实例来安装 SQL 客户端和其他应用程序。指定一个 IP 地址，以便您可以访问 EC2 实例：
      + **类型：****SSH**
      + **Source**（源）：步骤 a 中的 IP 地址或范围。IPv4 IP 地址的一个示例为 **203.0.113.25/32**。IPv6 IP 地址的一个示例为 **2001:DB8::/32**。

1. 请选择 **Create security group**（创建安全组）以创建安全组。

   请记下安全组 ID，因为本教程的后面将需要它。

## 为私有数据库实例创建 VPC 安全组


要保持您的数据库实例为私有，请创建第二个安全组进行私有访问。要连接到 VPC 中的私有数据库实例，请将入站规则添加到 VPC 安全组。它们仅允许来自 Amazon EC2 实例的流量。

**创建 VPC 安全组**

1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/)。

1. 依次选择 **VPC 控制面板)**、**安全组**和**创建安全组**。

1. 在**创建安全组**页面上，设置以下值：
   + **安全组名称：****tutorial-dual-stack-db-securitygroup**
   + **说明：****Tutorial Dual-Stack DB Instance Security Group**
   + **VPC**：选择您之前创建的 VPC，例如：**vpc-*identifier* (tutorial-dual-stack-vpc)**

1. 将入站规则添加到安全组：

   1. 在**入站规则**部分中，选择**添加规则**。

   1. 为新入站规则设置以下值，以允许 Amazon EC2 实例中端口 3306 上的 MySQL 流量。如果这样做，您就可以从 EC2 实例连接到您的数据库实例。这样做意味着您可以将数据从 EC2 实例发送到数据库。
      + **Type**（类型）：**MySQL/Aurora**
      + **Source**（源）：您在本教程的前面部分创建的 **tutorial-dual-stack-securitygroup** 安全组的标识符，例如 **sg-9edd5cfb**。

1. 要创建安全组，请选择**创建安全组**。

## 创建数据库子网组


*数据库子网组* 是您在 VPC 中创建并随后指定给数据库实例的子网集合。使用数据库子网组，您可以在创建数据库实例时指定特定的 VPC。要创建与 `DUAL` 兼容的数据库子网组，所有子网都必须与 `DUAL` 兼容。要与 `DUAL` 兼容，子网必须具有与之关联的 IPv6 CIDR。

**创建数据库子网组**

1. 在 VPC 中识别数据库的私有子网。

   1. 通过 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/) 打开 Amazon VPC 控制台。

   1. 选择 **VPC Dashboard**（VPC 控制面板），然后选择 **Subnets**（子网）。

   1. 记下名为 **tutorial-dual-stack-subnet-private1-us-west-2a** 和 **tutorial-dual-stack-subnet-private2-us-west-2b** 的子网的子网 ID。

      创建数据库子网组时需要子网 ID。

1. 通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.amazonaws.cn/rds/)。

   确保您连接到 Amazon RDS 控制台，而不是 Amazon VPC 控制台。

1. 在导航窗格中，选择**子网组**。

1. 选择 **Create DB subnet group**（创建数据库子网组）。

1. 在**创建数据库子网组**页面的**子网组详细信息**中设置以下值：
   + **名称：****tutorial-dual-stack-db-subnet-group**
   + **说明：****Tutorial Dual-Stack DB Subnet Group**
   + **VPC**：**tutorial-dual-stack-vpc (vpc-*identifier*)** 

1. 在 **Add subnets**（添加子网）部分中，选择 **Availability Zones**（可用区）和 **Subnets**（子网）选项的值。

   对于本教程，请为 **Availability Zones**（可用区）选择 **us-east-2a** 和 **us-east-2b**。对于 **Subnets**（子网），选择您在上一步中确定的私有子网。

1. 选择**创建**。

您的新数据库子网组显示在 RDS 控制台的数据库子网组列表中。您可以选择数据库子网组以查看其详细信息。其中包括支持的寻址协议、与该组关联的所有子网以及数据库子网组支持的网络类型。

## 在双堆栈模式下创建 Amazon EC2 实例


要创建 Amazon EC2 实例，请按照《Amazon EC2 用户指南》**中的[使用新启动实例向导启动实例](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html)中的说明操作。

在 **Configure Instance Details**（配置实例详细信息）页面上，设置以下值并将其他值保留为其原定设置值：
+ **网络** – 选择同时具有公有子网和私有子网的现有 VPC，如在[创建包含公有子网和私有子网的 VPC](#CHAP_Tutorials.CreateVPCDualStack.VPCAndSubnets)中创建的 **tutorial-dual-stack-vpc**（vpc-*identifier*）。
+ **Subnet**（子网）– 选择一个现有的公有子网，如在[为公有 Amazon EC2 实例创建 VPC 安全组](#CHAP_Tutorials.CreateVPCDualStack.SecurityGroupEC2)中创建的 **subnet-*identifier* \$1 tutorial-dual-stack-subnet-public1-us-east-2a \$1 us-east-2a**。
+ **Auto-assign Public IP**（自动分配公有 IP）– 选择 **Enable**（启用）。
+ **Auto-assign IPv6 IP**（自动分配 IPv6 IP）– 选择 **Enable**（启用）。
+ **Firewall (security groups)** [防火墙（安全组）] – 选择 **Select an existing security group**（选择现有安全组）。
+ **Common security groups**（常用安全组）– 选择一个现有的安全组，例如在[为公有 Amazon EC2 实例创建 VPC 安全组](#CHAP_Tutorials.CreateVPCDualStack.SecurityGroupEC2)中创建的 `tutorial-securitygroup`。确保您选择的安全组包括 Secure Shell (SSH) 和 HTTP 访问的入站规则。

## 在双堆栈模式下创建数据库实例


在此步骤中，您将创建在双堆栈模式下运行的数据库实例。

**创建数据库实例**

1. 登录 Amazon Web Services 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.amazonaws.cn/rds/)。

1. 在控制台的右上角，选择要在其中创建数据库实例的 Amazon Web Services 区域。此示例使用美国东部（俄亥俄州）区域。

1. 在导航窗格中，选择 **Databases (数据库)**。

1. 选择**创建数据库**。

1. 在 **Create database**（创建数据库）页面上，确保选择了 **Standard Create**（标准创建）选项，然后选择 MySQL 数据库引擎类型。

1. 在 **Connectivity**（连接）部分中，设置以下值：
   + **Network type**（网络类型）– 选择 **Dual-stack mode**（双堆栈模式）。  
![\[控制台中的 Network type（网络类型）部分，已选中 Dual-stack mode（双堆栈模式）\]](http://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/images/dual-stack-mode.png)
   + **Virtual Private Cloud (VPC)** [虚拟私有云（VPC）]– 选择具有公有子网和私有子网的现有 VPC，如在[创建包含公有子网和私有子网的 VPC](#CHAP_Tutorials.CreateVPCDualStack.VPCAndSubnets)中创建的 **tutorial-dual-stack-vpc** (vpc-*identifier*)。

     VPC 的子网必须位于不同的可用区中。
   + **DB subnet group**（数据库子网组）– VPC 的数据库子网组，如在[创建数据库子网组](#CHAP_Tutorials.CreateVPCDualStack.DBSubnetGroup)中创建的 **tutorial-dual-stack-db-subnet-group**。
   + **Public access**（公有访问权限）– 选择 **No**（否）。
   + **VPC security group (firewall)** [VPC 安全组（防火墙）] – 选择 **Choose existing**（选择现有）。
   + **Existing VPC security groups**（现有 VPC 安全组）– 选择为私有访问配置的现有 VPC 安全组，如 [为私有数据库实例创建 VPC 安全组](#CHAP_Tutorials.CreateVPCDualStack.SecurityGroupDB) 中创建的 **tutorial-dual-stack-db-securitygroup**。

     通过选择与其他每个安全组关联的 **X** 来删除该安全组，如默认安全组。
   + **Availability Zone**（可用区）– 选择 **us-west-2a**。

     为避免跨可用区的流量，请确保数据库实例和 EC2 实例位于同一个可用区内。

1. 对于其余部分，请指定数据库实例设置。有关每项设置的信息，请参阅 [数据库实例的设置](USER_CreateDBInstance.Settings.md)。

## 连接到 Amazon EC2 实例和数据库实例


在双堆栈模式下创建 Amazon EC2 实例和数据库实例后，您可以使用 IPv6 协议连接到每个实例。要使用 IPv6 协议连接到 Amazon EC2 实例，请按照《Amazon EC2 用户指南》**中的[连接到 Linux 实例](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/AccessingInstances.html)中的说明操作。

要从 Amazon EC2 实例连接到 RDS for MySQL 数据库实例，请按照[连接到 MySQL 数据库实例](CHAP_GettingStarted.CreatingConnecting.MySQL.md#CHAP_GettingStarted.Connecting.MySQL)中的说明进行操作。

## 删除 VPC


为本教程创建 VPC 和其他资源后，如果不再需要 VPC 和其他资源，可以将其删除。

如果您在为本教程创建的 VPC 中添加了资源，则可能需要先删除这些资源，然后才能删除 VPC。资源示例包括 Amazon EC2 实例或数据库实例。有关更多信息，请参阅 *Amazon VPC 用户指南*中的[您的 VPC 的安全性](https://docs.amazonaws.cn/vpc/latest/userguide/working-with-vpcs.html#VPC_Deleting)。

**删除 VPC 和相关资源**

1. 删除数据库子网组：

   1. 通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.amazonaws.cn/rds/)。

   1. 在导航窗格中，选择**子网组**。

   1. 选择要删除的数据库子网组，例如 **tutorial-db-subnet-group**。

   1. 选择 **Delete (删除)**，然后在确认窗口中选择 **Delete (删除)**。

1. 记下 VPC ID：

   1. 通过 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/) 打开 Amazon VPC 控制台。

   1. 选择 **VPC 控制面板**，然后选择 **VPC**。

   1. 在列表中，标识您创建的 VPC，例如 **tutorial-dual-stack-vpc**。

   1. 记下所创建 VPC 的 **VPC ID** 值。在后续步骤中，您将需要此 VPC ID。

1. 删除安全组：

   1. 通过 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/) 打开 Amazon VPC 控制台。

   1. 选择 **VPC 控制面板**，然后选择**安全组**。

   1. 选择 Amazon RDS 数据库实例的安全组，例如 **tutorial-dual-stack-db-securitygroup**。

   1. 对于 **Actions**（操作），请选择 **Delete security groups**（删除安全组），然后在确认页面上选择 **Delete**（删除）。

   1. 在 **Security Groups**（安全组）页面上，选择 Amazon EC2 实例的安全组，例如 **tutorial-dual-stack-securitygroup**。

   1. 对于 **Actions**（操作），请选择 **Delete security groups**（删除安全组），然后在确认页面上选择 **Delete**（删除）。

1. 删除 NAT 网关：

   1. 通过 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/) 打开 Amazon VPC 控制台。

   1. 选择 **VPC 控制面板**，然后选择 **NAT 网关**。

   1. 选择您创建的 VPC 的 NAT 网关。使用 VPC ID 标识正确的 NAT 网关。

   1. 对于 **Actions**（操作），请选择 **Delete NAT gateway**（删除 NAT 网关）。

   1. 在确认页面上，输入 **delete** 并选择**删除**。

1. 删除 VPC：

   1. 通过 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/) 打开 Amazon VPC 控制台。

   1. 选择 **VPC 控制面板**，然后选择 **VPC**。

   1. 选择要删除的 VPC，例如 **tutorial-dual-stack-vpc**。

   1. 对于 **Actions (操作)**，请选择 **Delete VPC (删除 VPC)**。

      确认页面显示与 VPC 关联的其他资源，这些资源也将被删除，包括与其关联的子网。

   1. 在确认页面上，输入 **delete** 并选择 **Delete (删除)**。

1. 释放弹性 IP 地址：

   1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/)。

   1. 选择 **EC2 控制面板**，然后选择**弹性 IP**。

   1. 选择要释放的弹性 IP 地址。

   1. 对于 **Actions**（操作），请选择 **Release Elastic IP addresses**（释放弹性 IP 地址）。

   1. 在确认页面上，请选择**释放**。

# 将不在 VPC 中的数据库实例移动到 VPC 中
将数据库实例移至 VPC 中

EC2-Classic 平台上一些旧的数据库实例不位于 VPC 中。如果数据库实例未在 VPC 中，可以使用 Amazon Web Services 管理控制台轻松将数据库实例移至 VPC 中。必须先创建 VPC，然后才能将未在 VPC 中的数据库实例移至 VPC 中。


|  | 
| --- |
| EC2-Classic 已于 2022 年 8 月 15 日停用。如果您尚未从 EC2-Classic 迁移到 VPC，建议您尽快迁移。有关更多信息，请参阅《Amazon EC2 用户指南》中的[从 EC2-Classic 迁移到 VPC](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/vpc-migrate.html) 和博客 [EC2-Classic Networking 即将停用 – 以下是准备方法](https://www.amazonaws.cn/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/)。 | 

**重要**  
如果您是新 Amazon RDS 客户，您之前从未创建数据库实例或您正在以前未使用的 Amazon 区域中创建数据库实例，则几乎在所有情况下，您都将位于 *EC2-VPC* 平台上并且具有默认 VPC。有关使用位于 VPC 中的数据库实例的更多信息，请参阅 [在 VPC 中使用数据库实例](USER_VPC.WorkingWithRDSInstanceinaVPC.md)。

执行以下步骤可为数据库实例创建 VPC。
+ [步骤 1：创建 VPC](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.CreatingVPC)
+  [步骤 2：创建数据库子网组](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.CreateDBSubnetGroup)
+  [步骤 3：创建 VPC 安全组](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.CreateVPCSecurityGroup)

创建 VPC 后，执行以下步骤可将数据库实例移至 VPC 中。
+ [更新数据库实例的 VPC](USER_VPC.VPC2VPC.md)

我们强烈建议您在就要迁移之前创建数据库实例的备份。这样做可确保在迁移失败时可以恢复数据。有关更多信息，请参阅“[备份、还原和导出数据](CHAP_CommonTasks.BackupRestore.md)”。

以下是将数据库实例移至 VPC 中时的一些限制。
+ **上一代数据库实例类** – 在 VPC 平台上可能不支持上一代数据库实例类。将数据库实例移到 VPC 时，请选择 db.m3 或 db.r3 数据库实例类。将数据库实例移到 VPC 后，您可以扩展数据库实例以使用更高版本的数据库实例类。有关 VPC 支持的实例类的完整列表，请参阅 [Amazon RDS 实例类型](https://www.amazonaws.cn/rds/instance-types/)。
+ **多可用区** – 当前不支持将未在 VPC 中的多可用区数据库实例移至 VPC 中。要将数据库实例移到 VPC，请首先修改数据库实例，使其成为单可用区部署。将**多可用区部署**设置更改为 **No (否)**。将数据库实例移到 VPC 后，再次对其进行修改，使其成为多可用区部署。有关更多信息，请参阅“[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)”。
+ **只读副本** – 当前不支持将未在 VPC 中的带只读副本的数据库实例移至 VPC 中。要将数据库实例移到 VPC，请首先删除其所有只读副本。将数据库实例移到 VPC 后，重新创建只读副本。有关更多信息，请参阅“[使用数据库实例只读副本](USER_ReadRepl.md)”。
+ **选项组** – 如果您将数据库实例移到 VPC，并且数据库实例正在使用自定义选项组，请更改与数据库实例关联的选项组。选项组是特定于平台的，并且移动到 VPC 的操作是一种平台切换。要在这种情况下使用自定义选项组，请将默认 VPC 选项组分配给数据库实例，分配由作为移动目标的 VPC 中的其他数据库实例使用的选项组，或者创建新选项组并将它分配给数据库实例。有关更多信息，请参阅“[使用选项组](USER_WorkingWithOptionGroups.md)”。

## 将不在 VPC 中的数据库实例移动到具最短停机时间的 VPC 中的替代方案
将不在 VPC 中的数据库实例移动到具最短停机时间的 VPC 中的替代方案

使用以下替代方案，您可以将不在 VPC 中的数据库实例移到具有最短停机时间的 VPC 中。这些替代方案对源数据库实例造成的中断最小，并允许它在迁移期间为用户流量提供服务。但是，迁移到 VPC 所需的时间会因数据库大小和实时工作负载特性而异。
+ **Amazon Database Migration Service (Amazon DMS)** – Amazon DMS 支持数据的实时迁移，同时保持源数据库实例全面运行，但它只复制一组有限的 DDL 语句。Amazon DMS 不传播索引、用户、权限、存储过程等项目以及与表数据不直接相关的其他数据库更改。此外，Amazon DMS 不会自动使用 RDS 快照创建初始数据库实例，这会增加迁移时间。有关更多信息，请参阅 [Amazon Database Migration Service](https://www.amazonaws.cn/dms/)。
+ **数据库快照还原或时间点恢复** – 您可以通过还原数据库实例的快照或将数据库实例还原到某个时间点，将数据库实例移到 VPC。有关更多信息，请参阅 [还原到数据库实例](USER_RestoreFromSnapshot.md) 和 [将 Amazon RDS 的数据库实例还原到指定时间](USER_PIT.md)。