Amazon Relational Database Service
用户指南 (API Version 2014-10-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

在 VPC 中使用 Amazon RDS 数据库实例

除非您使用的是旧的数据库实例,否则您的数据库实例会位于 Virtual Private Cloud (VPC) 中。Virtual Private Cloud 是逻辑上与 AWS 云中的其他虚拟网络隔离开的虚拟网络。利用 Amazon Virtual Private Cloud (Amazon VPC),您可在 VPC 中启动 AWS 资源,如 Amazon Relational Database Service (Amazon RDS) 或 Amazon Elastic Compute Cloud (Amazon EC2) 实例。VPC 可以是您的账户附带的默认 VPC,也可以是您创建的 VPC。所有 VPC 均与您的 AWS 账户关联。

默认 VPC 具有可用来隔离 VPC 内的资源的 3 个子网。默认 VPC 还具有一个 Internet 网关,可用来从 VPC 外部访问 VPC 内部的资源。

有关涉及 VPC 内外的 Amazon RDS 数据库实例的方案的列表,请参阅在 VPC 中访问数据库实例的方案

有关演示如何创建您可用于常见 Amazon RDS 方案的 VPC 的教程,请参阅教程:创建 Amazon VPC 以用于 Amazon RDS 数据库实例

要了解如何在 VPC 中使用 Amazon RDS 数据库实例,请参阅以下内容:

在 VPC 中使用数据库实例

下面是一些有关在 VPC 中使用数据库实例的提示:

  • 在要部署数据库实例的区域中,您的 VPC 必须至少拥有其中两个可用区的一个子网。子网是 VPC 的 IP 地址范围段,您可以指定子网,利用子网并根据安全和操作需要对实例进行分组。

  • 如果要让 VPC 中的数据库实例实现公开访问,必须启用 VPC 属性“DNS 主机名”和“DNS 解析”

  • 您的 VPC 必须具有您创建的数据库子网组 (有关更多信息,请参阅下一节)。通过指定创建的子网来创建数据库子网组。然后,Amazon RDS 使用该数据库子网组和您首选的可用区来选择子网及该子网内的 IP 地址,从而将其分配给您的数据库实例。

  • 您的 VPC 必须具有允许访问数据库实例的 VPC 安全组。

  • 每个子网必须包含足够大的 CIDR 数据块,以便在维护活动 (包括故障转移和扩展计算) 期间有可供 Amazon RDS 使用的备用 IP 地址。

  • VPC 的 instance tenancy 属性可能为 defaultdedicated。所有默认 VPC 的“instance tenancy”属性设置为“default”,则默认的 VPC 可支持任何数据库实例类。

    如果您选择将数据库实例放在“instance tenancy”属性设置为“dedicated”的专用 VPC 中,则数据库实例的数据库实例类必须是已批准的 Amazon EC2 专用实例类型之一。例如,m3.medium EC2 专用实例对应于 db.m3.medium 数据库实例类。有关 VPC 中实例租期的信息,请转至 Amazon Virtual Private Cloud 用户指南中的使用 EC2 专用实例

  • 向数据库实例分配选项组后,该选项组会链接到数据库实例所在的受支持平台,即 VPC 或 EC2-Classic (非 VPC)。而且,如果数据库实例在某个 VPC 中,则与该实例关联的选项组会链接到该 VPC。此关联意味着,如果您尝试将数据库实例还原到不同的 VPC 中或不同的平台上,则无法使用分配给该实例的选项组。

  • 如果您将数据库实例还原到不同的 VPC 中或不同的平台上,则必须向该实例分配默认选项组、分配链接到该 VPC 或平台的选项组,或是创建新选项组并将其分配给数据库实例。请注意,对于持久或永久选项 (如 Oracle TDE),在将数据库实例还原到不同的 VPC 中时,您必须创建包含该持久或永久选项的新选项组。

使用数据库子网组

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

每个数据库子网组应包含给定地区中至少两个可用区的子网。 在 VPC 中创建数据库实例时,您需要选择一个数据库子网组。然后,Amazon RDS 使用该数据库子网组和您首选的可用区来选择子网及该子网内的 IP 地址,从而与您的数据库实例相关联。如果某一多可用区部署的主数据库实例出现故障,Amazon RDS 可以提升相应的备用副本,并随后在另外一个可用区中使用子网的 IP 地址创建一个新备用副本。

在 VPC 中创建数据库实例时,Amazon RDS 会使用从数据库子网组中选取的 IP 地址将网络接口分配给您的数据库实例。但是,我们强烈建议您使用 DNS 名称来连接数据库实例,因为底层 IP 地址可能会在故障转移期间发生变化。

注意

对于在 VPC 中运行的每个数据库实例,您应在数据库子网组的每个子网中预留至少一个地址,以供 Amazon RDS 执行恢复操作。

从 Internet 隐藏 VPC 中的数据库实例

一个常见的 Amazon RDS 方案是具有一个 VPC,其中有一个带有面向公众的 Web 应用程序的 EC2 实例以及一个带有不能公开访问的数据库的数据库实例。例如,您可创建包含公有子网和私有子网的 VPC。可将充当 Web 服务器的 Amazon EC2 实例部署在公有子网中,Amazon RDS 数据库实例部署在私有子网中。在此部署方案中,只有 Web 服务器才能访问数据库实例。有关此方案的说明,请参阅VPC 中的数据库实例由同一 VPC 中的 EC2 实例访问

在 VPC 中启动数据库实例时,可使用 PubliclyAccessible 参数指定所创建的数据库实例是否具有可解析为公有 IP 地址的 DNS。此参数使您可以指定是否可以公开访问数据库实例。注意,对数据库实例的访问最终受其使用的安全组控制,并且如果分配给数据库实例的安全组不允许公开访问,即不允许。

您可以通过修改 PubliclyAccessible 参数修改数据库实例以打开或关闭公开可用性。此参数的修改方式与其他数据库实例参数一样。有关更多信息,请参阅数据库引擎的修改部分。

下图显示了 Launch DB Instance Wizard 中的 Publicly Accessible 选项。

在 VPC 中创建数据库实例

下列步骤帮助您在 VPC 中创建数据库实例。如果您的账户具有默认 VPC,则可以从第 3 步开始,因为已为您创建 VPC 和数据库子网组。如果您的 AWS 账户没有默认 VPC,或者如果您想创建其他 VPC,则可创建新的 VPC。如果您不清楚是否有默认 VPC,请参阅确定您使用的是 EC2-VPC 还是 EC2-Classic 平台

注意

如果要让 VPC 中的数据库实例实现公开访问,则必须通过启用 VPC 属性 DNS 主机名DNS 解析,更新 VPC 的 DNS 信息。有关更新 VPC 实例的 DNS 信息的信息,请参阅更新对 VPC 的 DNS 支持

执行以下步骤可在 VPC 中创建数据库实例:

步骤 1:创建 VPC

如果您的 AWS 账户没有默认 VPC,或者如果您想要创建其他 VPC,请遵循有关创建新的 VPC 的说明。请参阅 Amazon RDS 文档中的创建包含公有子网和私有子网的 VPC,或参阅 Amazon VPC 文档中的步骤 1:创建 VPC

步骤 2:向 VPC 添加子网

创建 VPC 后,至少需要在两个可用区中创建子网。您在创建数据库子网组时将使用这些子网。请注意,如果您具有默认 VPC,则会在该区域中的每个可用区中自动为您创建子网。

有关如何在 VPC 中创建子网的说明,请参阅 Amazon RDS 文档中的创建包含公有子网和私有子网的 VPC

步骤 3:创建数据库子网组

数据库子网组是您为 VPC 创建然后为数据库实例指定的子网 (通常为私有子网) 的集合。数据库子网组可让您在使用 CLI 或 API 创建数据库实例时指定特定的 VPC。如果使用 Amazon RDS 控制台,您就只能选择要使用的 VPC 和子网。每个数据库子网组必须至少包含给定地区中至少两个可用区的一个子网。

注意

对于希望可公开访问的数据库实例,数据库子网组中的子网必须具有 Internet 网关。有关子网的 Internet 网关的更多信息,请转至 Amazon VPC 文档中的 Internet 网关

在 VPC 中创建数据库实例时,必须选择一个数据库子网组。然后,Amazon RDS 使用该数据库子网组和您首选的可用区来选择子网以及该子网内的 IP 地址。Amazon RDS 创建弹性网络接口,并通过该 IP 地址将其关联到您的数据库实例。对于多可用区部署,通过为区域中的两个或更多可用区定义子网,Amazon RDS 可在需求增加的情况下在另一个可用区中创建新的备用实例。即使是单一可用区部署,您也需要这样做,以防以后需要将它们转换为多可用区部署。

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

AWS 管理控制台

创建数据库子网组

  1. 通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 在导航窗格中,选择 Subnet Groups

  3. 选择 Create DB Subnet Group

  4. 对于 Name,键入您的数据库子网组的名称。

  5. 对于 Description,键入您数据库子网组的描述。

  6. 对于 VPC ID,选择已创建的 VPC。

  7. Add Subnet(s) to this Subnet Group 部分中,单击 add all the subnets 链接。

     “Create DB Subnet Group”按钮
  8. 选择 Yes, Create,然后选择 Close

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

步骤 4:创建 VPC 安全组

创建数据库实例前,必须创建与数据库实例相关联的 VPC 安全组。有关如何为数据库实例创建安全组的说明,请参阅 Amazon RDS 文档中的 为私有 Amazon RDS 数据库实例创建 VPC 安全组或 Amazon VPC 文档中的 VPC 的安全组

步骤 5:在 VPC 中创建数据库实例

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

注意

如果要让 VPC 中的数据库实例实现公开访问,必须启用 VPC 属性“DNS 主机名”和“DNS 解析”。有关对 VPC 实例的 DNS 信息进行更新的信息,请参阅为您的 VPC 更新 DNS 支持

有关如何为您的数据库引擎创建数据库实例的详细信息,请参阅以下讨论数据库引擎的主题。对于每个引擎,系统提示时,在 Launch DB Instance Wizard 中输入在之前的步骤中创建的 VPC 名称、数据库子网组和 VPC 安全组。

更新数据库实例的 VPC

您可以使用 AWS 管理控制台轻松地将您数据库实例移动到其他 VPC。

有关如何为您的数据库引擎修改数据库实例的详细信息,请参阅下表中讨论数据库引擎的主题。在修改页面的 Network & Security 部分 (如下所示) 中,为 Subnet Group 输入新的子网组。新子网组必须是新 VPC 中的子网组。

 “Modify DB Instance”面板的“Subnet Group”部分

注意

Aurora 群集当前不支持更新 VPC。

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

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

执行以下步骤可为数据库实例创建 VPC。

创建 VPC 后,执行以下步骤可将数据库实例移至 VPC 中。

以下是将数据库实例移至 VPC 中时的一些限制。

  • 当前不支持将未在 VPC 中的多可用区数据库实例移至 VPC 中。

  • 当前不支持将未在 VPC 中的带只读副本的数据库实例移至 VPC 中。

如果您将数据库实例移至 VPC 中,并且您将自定义选项组与数据库实例结合使用,则需要更改与数据库实例关联的选项组。选项组是特定于平台的,并且移动到 VPC 的操作是一种平台切换。要在这种情况下使用自定义选项组,请将默认 VPC 选项组分配给数据库实例,分配由作为移动目标的 VPC 中的其他数据库实例使用的选项组,或者创建新选项组并将它分配给数据库实例。有关更多信息,请参阅 使用选项组