

# 创建 Amazon RDS 数据库实例
<a name="USER_CreateDBInstance"></a>

Amazon RDS 的基本构建块是您在其中创建数据库的数据库实例。在创建数据库实例时，您可以选择其特定于引擎的特征。您还可以选择运行数据库服务器的 AWS 实例的存储容量、CPU、内存等。

**Topics**
+ [数据库实例先决条件](#USER_CreateDBInstance.Prerequisites)
+ [创建数据库实例](#USER_CreateDBInstance.Creating)
+ [数据库实例的设置](USER_CreateDBInstance.Settings.md)

## 数据库实例先决条件
<a name="USER_CreateDBInstance.Prerequisites"></a>

**重要**  
在创建 Amazon RDS 数据库实例之前，请先完成[设置 Amazon RDS 环境](CHAP_SettingUp.md)中的任务。

以下是创建 RDS 数据库实例的先决条件。

**Topics**
+ [为数据库实例配置网络](#USER_CreateDBInstance.Prerequisites.VPC)
+ [其他先决条件](#USER_CreateDBInstance.Prerequisites.Additional)

### 为数据库实例配置网络
<a name="USER_CreateDBInstance.Prerequisites.VPC"></a>

您只能在虚拟私有云（VPC）中基于 Amazon VPC 服务创建 Amazon RDS 数据库实例。此外，它必须位于至少有两个可用区的 AWS 区域中。为数据库实例选择的数据库子网组必须涵盖至少两个可用区。此配置可确保您在创建数据库实例时可以配置多可用区部署，或者将来可以轻松迁移到多可用区部署。

要在同一 VPC 中的新数据库实例和 Amazon EC2 实例之间设置连接，可以在创建数据库实例时执行此操作。要从同一 VPC 中的 EC2 实例以外的资源连接到数据库实例，请手动配置网络连接。

**Topics**
+ [配置与 EC2 实例的自动网络连接](#USER_CreateDBInstance.Prerequisites.VPC.Automatic)
+ [手动配置网络](#USER_CreateDBInstance.Prerequisites.VPC.Manual)

#### 配置与 EC2 实例的自动网络连接
<a name="USER_CreateDBInstance.Prerequisites.VPC.Automatic"></a>

创建 RDS 数据库集群时，可以使用 AWS 管理控制台在 EC2 实例和新数据库实例之间设置连接。当您这样做时，RDS 会自动配置您的 VPC 和网络设置。数据库实例与 EC2 实例在同一 VPC 中创建，以便 EC2 实例可以访问该数据库实例。

以下是将 EC2 实例与数据库实例连接的要求：
+ 在创建数据库实例之前，EC2 实例必须存在于 AWS 区域中。

  如果 AWS 区域中不存在任何 EC2 实例，控制台将提供创建一个此类实例的链接。
+ 创建数据库实例的用户必须具有执行以下操作的权限：
  + `ec2:AssociateRouteTable` 
  + `ec2:AuthorizeSecurityGroupEgress` 
  + `ec2:AuthorizeSecurityGroupIngress` 
  + `ec2:CreateRouteTable` 
  + `ec2:CreateSubnet` 
  + `ec2:CreateSecurityGroup` 
  + `ec2:DescribeInstances` 
  + `ec2:DescribeNetworkInterfaces` 
  + `ec2:DescribeRouteTables` 
  + `ec2:DescribeSecurityGroups` 
  + `ec2:DescribeSubnets` 
  + `ec2:ModifyNetworkInterfaceAttribute` 
  + `ec2:RevokeSecurityGroupEgress` 

使用此选项创建私有数据库实例。数据库实例使用仅包含私有子网的数据库子网组，来限制对 VPC 内资源的访问。

要将 EC2 实例连接到数据库实例，请在 **Create database**（创建数据库）页面上的 **Connectivity**（连接）部分中，选择 **Connect to an EC2 compute resource**（连接到 EC2 计算资源）。

![\[连接 EC2 实例\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/ec2-set-up-connection-create.png)


当您选择 **Connect to an EC2 compute resource**（连接到 EC2 计算资源）时，RDS 会自动设置以下选项。除非您通过选择 **Don't connect to an EC2 compute resource**（不要连接到 EC2 计算资源）来选择不与 EC2 实例建立连接，否则您无法更改这些设置。


****  

| 控制台选项 | 自动设置 | 
| --- | --- | 
|  **网络类型**  |  RDS 将网络类型设置为 **IPv4**。当前，在 EC2 实例和数据库实例之间设置连接时，不支持双堆栈模式。  | 
|  **虚拟私有云（VPC）**。  |  RDS 将 VPC 设置为与 EC2 实例关联的 VPC。  | 
|  **DB subnet group**（数据库子网组）  | RDS 要求在与 EC2 实例相同的可用区中具有带私有子网的数据库子网组。如果存在符合此要求的数据库子网组，则 RDS 将使用现有的数据库子网组。默认情况下，此选项设置为 Automatic setup（自动设置）。当您选择 **Automatic setup**（自动设置）但没有满足此要求的数据库子网组时，将执行以下操作。RDS 在三个可用区中使用三个可用的私有子网，其中一个可用区与 EC2 实例相同。如果私有子网在可用区中不可用，则 RDS 会在可用区中创建私有子网。然后，RDS 创建数据库子网组。当私有子网可用时，RDS 使用与该子网关联的路由表，并将它创建的任何子网添加到该路由表中。当没有可用的私有子网时，RDS 会创建一个没有互联网网关访问权限的路由表，并将它创建的子网添加到该路由表中。RDS 还允许您使用现有的数据库子网组。如果您想使用您选择的现有数据库子网组，请选择 **Choose existing**（选择现有）。  | 
|  **公有访问权限**  |  RDS 选择 **No**（否），以使数据库实例不可供公开访问。 出于安全考虑，最好实践是保持数据库为私有，并确保不能从互联网访问数据库。  | 
|  **VPC security group (firewall) [VPC 安全组（防火墙）**]  |  RDS 创建一个与数据库实例关联的新安全组。安全组命名为 `rds-ec2-n`，其中 `n` 是一个数值。该安全组包含一条以 EC2 VPC 安全组（防火墙）作为源的入站规则。这个与数据库实例关联的安全组允许 EC2 实例访问数据库实例。 RDS 还会创建一个与 EC2 实例关联的新安全组。安全组命名为 `ec2-rds-n`，其中 `n` 是一个数值。该安全组包含一条以数据库实例的 VPC 安全组作为源的出站规则。该安全组允许 EC2 实例向数据库实例发送流量。 您可以通过选择 **Create new**（新建）并键入新安全组的名称，添加另一个新安全组。 您可以通过选择 **Choose existing**（选择现有）并选择要添加的安全组，添加现有安全组。  | 
|  **可用区**  |  当您在 **Availability & durability**（可用性和持久性）（单可用区部署）中选择 **Single DB instance**（单数据库实例）时，RDS 将选择 EC2 实例的可用区。 当您在 **Availability & durability**（可用性和耐久性）（多可用区数据库实例部署）中选择 **Multi-AZ DB instance**（多可用区数据库实例）时，RDS 将为部署中的一个数据库实例选择 EC2 实例的可用区。RDS 为另一个数据库实例随机选择不同的可用区。在 EC2 实例所在的同一个可用区中创建主数据库实例或备用副本。当您选择 **Multi-AZ DB instance**（多可用区数据库实例）时，如果数据库实例和 EC2 实例位于不同的可用区，则可能会产生跨可用区成本。  | 

有关这些设置的更多信息，请参阅 [数据库实例的设置](USER_CreateDBInstance.Settings.md)。

如果您在创建数据库实例后更改这些设置，则这些更改可能会影响 EC2 实例与数据库实例之间的连接。

#### 手动配置网络
<a name="USER_CreateDBInstance.Prerequisites.VPC.Manual"></a>

要从同一 VPC 中的 EC2 实例以外的资源连接到数据库实例，请手动配置网络连接。如果您使用 AWS 管理控制台创建数据库实例，您可以让 Amazon RDS 自动为您创建 VPC。或者，您也可以使用现有 VPC 或为数据库实例创建新的 VPC。无论采用哪种方法，您的 VPC 都要求在至少两个可用区的每个可用区中至少有一个子网，以与 RDS 数据库实例一起使用。

原定设置情况下，Amazon RDS 会在可用区中自动为您创建数据库实例。要选择特定可用区，需要将 **Availability & durability**（可用性和耐用性）设置更改为 **Single DB instance**（单数据库实例）。这样做会公开 **Availability Zone**（可用区）设置，此设置可让您从 VPC 内的可用区中进行选择。但是，如果您选择多可用区部署，则 RDS 会自动选择主数据库实例或写入器数据库实例的可用区，而不显示 **Availability Zone**（可用区）设置。

在某些情况下，您可能没有原定设置 VPC 或尚未创建 VPC。在这些情况下，您可以在使用控制台创建数据库实例时，让 Amazon RDS 自动为您创建 VPC。否则，请执行以下操作：
+ 在要部署数据库实例的 AWS 区域中，创建在最少两个可用区中均至少有一个子网的 VPC。有关更多信息，请参阅[在 VPC 中使用数据库实例](USER_VPC.WorkingWithRDSInstanceinaVPC.md#Overview.RDSVPC.Create)和[教程：创建 VPC 以用于数据库实例（仅限 IPv4）](CHAP_Tutorials.WebServerDB.CreateVPC.md)。
+ 指定授权与您的数据库实例的连接的 VPC 安全组。有关更多信息，请参阅[通过创建安全组提供对 VPC 中的数据库实例的访问](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup)和[使用安全组控制访问权限](Overview.RDSSecurityGroups.md)。
+ 指定 RDS 数据库子网组，该子网组在 VPC 中定义至少两个可由数据库实例使用的子网。有关更多信息，请参阅 [使用数据库子网组](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.Subnets)。

如果您想连接到与数据库实例不在同一 VPC 中的资源，请参阅[在 VPC 中访问数据库实例的场景](USER_VPC.Scenarios.md)中的相应方案。

### 其他先决条件
<a name="USER_CreateDBInstance.Prerequisites.Additional"></a>

在创建数据库实例之前，请考虑以下附加先决条件：
+ 如果使用 AWS Identity and Access Management（IAM）凭证连接到 AWS，您的 AWS 账户必须具有特定的 IAM policy。这些策略授予执行 Amazon RDS 操作所需的权限。有关更多信息，请参阅 [Amazon RDS 的 Identity and Access Management](UsingWithRDS.IAM.md)。

  要使用 IAM 访问 RDS 控制台，请使用您的 IAM 用户凭证登录 AWS 管理控制台。然后通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。
+ 要定制数据库实例的配置参数，请通过所需的参数设置指定数据库参数组。有关创建或修改数据库参数组的信息，请参阅[Amazon RDS 的参数组](USER_WorkingWithParamGroups.md)。
**重要**  
如果您对 Amazon RDS for Db2 使用 BYOL 模型，则在创建数据库实例之前，必须先创建一个包含您的 IBM Site ID 和 IBM Customer ID 的自定义参数组。有关更多信息，请参阅 [Db2 的自带许可（BYOL）](db2-licensing.md#db2-licensing-options-byol)。
+ 确定要为数据库实例指定的 TCP/IP 端口号。有些公司的防火墙阻止连接到 RDS 数据库实例的原定设置端口。如果您公司的防火墙阻止原定设置端口，请为数据库实例选择其他端口。Amazon RDS 数据库引擎的原定设置端口为：    
<a name="dbengineports"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html)

  对于 RDS for SQL Server，预留以下端口，您不能在创建数据库实例时使用它们：`1234, 1434, 3260, 3343, 3389, 47001,` 和 `49152-49156`。

## 创建数据库实例
<a name="USER_CreateDBInstance.Creating"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 创建 Amazon RDS 数据库实例。

**注意**  
对于 RDS for Db2，建议您在创建 RDS for Db2 数据库实例之前设置许可模式所需的项。有关更多信息，请参阅 [Amazon RDS for Db2 许可选项](db2-licensing.md)。

### 控制台
<a name="USER_CreateDBInstance.CON"></a>

您可以在启用或未启用 **Easy create (轻松创建)** 的情况下使用 AWS 管理控制台 创建数据库实例。启用 **Easy create (轻松创建)** 的情况下，您可以仅指定数据库引擎类型、数据库实例大小和数据库实例标识符。**Easy create (轻松创建)** 为其他配置选项使用默认设置。未启用 **Easy create (轻松创建)** 的情况下，您在创建数据库时需要指定更多配置选项，包括用于可用性、安全性、备份和维护的选项。

**注意**  
在以下过程中，启用了 **Standard create (标准创建)**，并且未启用 **Easy create (轻松创建)**。此过程使用 Microsoft SQL Server 作为示例。  
有关使用 **Easy create (轻松创建)** 引导您完成为每个引擎创建和连接示例数据库实例的例子，请参阅[开始使用 Amazon RDS](CHAP_GettingStarted.md)。

**创建数据库实例**

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

1. 在 Amazon RDS 控制台的右上角，选择要在其中创建数据库实例的AWS区域。

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

1. 选择**创建数据库**，然后选择**标准创建**。

1. 在**引擎选项**中，选择 IBM Db2、MariaDB、Microsoft SQL Server、MySQL、Oracle 或 PostgreSQL。

   此处显示了 **Microsoft SQL Server**。  
![\[引擎选择\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/create-instance-sqlserver.png)

1. 对于**数据库管理类型**，如果您使用的是 Oracle 或 SQL Server，请选择 **Amazon RDS** 或 **Amazon RDS Custom**。

   此处显示了 **Amazon RDS**。有关 RDS Custom 的更多信息，请参阅 [Amazon RDS Custom](rds-custom.md)。

1. 对于**版本**，如果您使用的是 Db2、Oracle 或 SQL Server，请选择要使用的数据库引擎版本。

   MySQL 针对该版本只有一个选项，而 MariaDB 和 PostgreSQL 没有选项。

1. 对于 **Version (版本)**，选择引擎版本。

1. 在 **Templates (模板)** 中，选择与您的使用案例匹配的模板。如果您选择**生产**，则将在后面的步骤中预选以下内容：
   + **多可用区**故障转移选项
   + **Provisioned IOPS SSD (io1)** [预调配 IOPS SSD（io1）] 存储选项
   + **启用删除保护**选项

   我们建议将这些功能用于任何生产环境。
**注意**  
模板选择因版本而异。

1. 在**设置**部分中，打开**凭证设置**。然后执行以下操作：

   1. （可选）更改 **Master username**（主用户名）的值。

   1. 选择以下任一其它凭证管理选项：
      + **在 AWS Secrets Manager 管理**

        在**选择加密密钥**中，选择 Secrets Manager 创建的 KMS 密钥或您已创建的密钥。
**注意**  
我们建议将 AWS Secrets Manager 作为管理凭证的最安全的方法。将收取额外费用。有关更多信息，请参阅 [使用 Amazon RDS 和 AWS Secrets Manager 管理密码](rds-secrets-manager.md)。
      + **自行管理**

        要指定密码，请清除**自动生成密码**复选框（如果已选中）。在**主密码**和**确认主密码**中输入相同的密码。

1. （可选）为该数据库实例设置与计算资源的连接。

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

1. 在**连接**部分的 **VPC 安全组（防火墙）**下，如果您选择**新建**，则会创建一个 VPC 安全组，其入站规则允许本地计算机的 IP 地址访问该数据库。

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

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

   如果选择使用自动生成的密码，则**数据库**页面上将显示**查看凭证详细信息**按钮。

   要查看数据库实例的主用户名和密码，请选择**查看凭证详细信息**。

   要以主用户身份连接到数据库实例，请使用显示的用户名和密码。
**重要**  
您无法再次查看主用户密码。如果您不记录它，您可能需要更改它。如果需要在数据库实例可用后更改主用户密码，则可以修改数据库实例以执行此操作。有关修改 数据库实例的更多信息，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

1. 对于 **Databases (数据库)**，选择新数据库实例的名称。

   在 RDS 控制台上，将显示新数据库实例的详细信息。数据库实例具有 **Creating (正在创建)** 状态，直到该数据库实例完成创建并可供使用。当状态变为 **Available (可用)** 时，您可以连接到该数据库实例。根据所分配的数据库实例类和存储的不同，新实例可能需要数分钟时间才能变得可用。  
![\[我的数据库实例详细信息\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/SQLSvr-Launch05.png)

### AWS CLI
<a name="USER_CreateDBInstance.CLI"></a>



**注意**  
如果您想采用“通过 AWS Marketplace 获得 Db2 许可证”模式，则必须先使用 AWS 管理控制台订阅 AWS Marketplace 并注册 IBM。有关更多信息，请参阅 [订阅 Db2 Marketplace 清单并注册 IBM](db2-licensing.md#db2-marketplace-subscribing-registering)。

要使用 AWS CLI 创建数据库实例，请使用以下参数调用 [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 命令：
+ `--db-instance-identifier`
+ `--db-instance-class`
+ `--vpc-security-group-ids`
+ `--db-subnet-group`
+ `--engine`
+ `--master-username`
+ `--master-user-password` 或 `--manage-master-user-password`
+ `--allocated-storage`
+ `--backup-retention-period`

有关每项设置的信息，请参阅[数据库实例的设置](USER_CreateDBInstance.Settings.md)。

此示例使用 Microsoft SQL Server。

**Example**  
对于 Linux、macOS 或 Unix：  

```
 1. aws rds create-db-instance \
 2.     --engine sqlserver-se \
 3.     --db-instance-identifier mymsftsqlserver \
 4.     --allocated-storage 250 \
 5.     --db-instance-class db.t3.large \
 6.     --vpc-security-group-ids mysecuritygroup \
 7.     --db-subnet-group mydbsubnetgroup \
 8.     --master-username masterawsuser \
 9.     --manage-master-user-password \
10.     --backup-retention-period 3
```
对于：Windows  

```
 1. aws rds create-db-instance ^
 2.     --engine sqlserver-se ^
 3.     --db-instance-identifier mydbinstance ^
 4.     --allocated-storage 250 ^
 5.     --db-instance-class db.t3.large ^
 6.     --vpc-security-group-ids mysecuritygroup ^
 7.     --db-subnet-group mydbsubnetgroup ^
 8.     --master-username masterawsuser ^ 
 9.     --manage-master-user-password ^
10.     --backup-retention-period 3
```
此命令生成类似于下述信息的输出。  

```
1. DBINSTANCE  mydbinstance  db.t3.large  sqlserver-se  250  sa  creating  3  ****  n  10.50.2789
2. SECGROUP  default  active
3. PARAMGRP  default.sqlserver-se-14  in-sync
```

### RDS API
<a name="USER_CreateDBInstance.API"></a>

**注意**  
如果您想采用“通过 AWS Marketplace 获得 Db2 许可证”模式，则必须先使用 AWS 管理控制台订阅 AWS Marketplace 并注册 IBM。有关更多信息，请参阅 [订阅 Db2 Marketplace 清单并注册 IBM](db2-licensing.md#db2-marketplace-subscribing-registering)。

要使用 Amazon RDS API 创建数据库实例，请调用 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) 操作。

有关每项设置的信息，请参阅[数据库实例的设置](USER_CreateDBInstance.Settings.md)。