

# 暂时停止 Amazon RDS 数据库实例
<a name="USER_StopInstance"></a>

您可以间歇性地停止数据库实例，来进行临时测试或执行日常开发活动，最长可以连续停止 7 天。最常见的使用案例是成本优化。停止数据库实例的时间取决于多种因素。有关更多信息，请参阅[使用案例](#USER_StopInstance.Benefits)和[时间注意事项](#USER_StopInstance.Time)。

**警告**  
启动数据库实例需要实例恢复，且可能需要几分钟到几小时的时间。因此，如果担心实例可用性，请谨慎处理临时停止生产实例的事宜。有关更多信息，请参阅 [启动之前停止的 Amazon RDS 数据库实例](USER_StartInstance.md)。

要在相同的操作中停止和启动数据库实例，请重启该数据库实例。有关更多信息，请参阅 [重启数据库实例](USER_RebootInstance.md)。

**Topics**
+ [停止数据库实例的使用案例](#USER_StopInstance.Benefits)
+ [停止数据库实例时的时间注意事项](#USER_StopInstance.Time)
+ [支持的数据库引擎、实例类和区域](#USER_StopInstance.Supported)
+ [停止多可用区部署中的数据库实例](#USER_StopInstance.MAZ)
+ [停止数据库实例的工作原理](#USER_StopInstance.Operation)
+ [停止数据库实例的限制](#USER_StopInstance.Limitations)
+ [选项和参数组注意事项](#USER_StopInstance.OGPG)
+ [公有 IP 地址注意事项](#USER_StopInstance.PublicIPAddress)
+ [暂时停止数据库实例：基本步骤](#USER_StopInstance.Stopping)

## 停止数据库实例的使用案例
<a name="USER_StopInstance.Benefits"></a>

与创建数据库快照、删除数据库实例、然后在需要访问实例时恢复快照相比，停止和启动数据库实例要更加快速、更加高效。停止实例的常见使用案例包括：
+ **成本优化** – 对于非生产数据库，您可以暂时停止 Amazon RDS 数据库实例以节省资金。实例停止后，您无需为所用数据库实例的小时数付费。
**重要**  
当数据库实例停止后，您需要为预调配的存储（包括预调配 IOPS）付费。您还需要为备份存储付费，包括指定保留时段内的手动快照和自动备份。此外，如果您的数据库实例可公开访问，则将继续向您收取公有 IPv4 地址的费用。但是，您无需为所用数据库实例小时数付费。有关更多信息，请参阅[账单常见问题](https://aws.amazon.com/rds/faqs/#billing)。
+ **日常开发** – 如果您出于开发目的维护数据库实例，则可以在需要时启动该实例，然后在不需要时将其关闭。
+ **测试** – 您可能需要一个临时数据库实例来测试备份和恢复程序、迁移、应用程序升级或相关活动。在这些使用案例中，您可以在不需要数据库实例时将其停止。
+ **培训** – 如果您在 RDS 中进行培训，则可能需要在培训期间启动数据库实例，然后再将其关闭。

## 停止数据库实例时的时间注意事项
<a name="USER_StopInstance.Time"></a>

停止数据库实例的时间因实例类、网络状态、数据库引擎类型、数据库状态和工作负载等因素而异。此过程可能需要几分钟甚至长达一小时时间。即使您不选择拍摄最终快照，服务也必须执行内部操作以确保数据一致性。这些操作可能会延长停止时间。它们不能被跳过。在所有操作完成之前，数据库实例的状态一直处于停止状态。这些操作可能包括以下各项：
+ 关闭数据库引擎进程。
+ 关闭 RDS 平台进程。
+ 分离与数据库实例关联的 EBS 存储卷。
+ 终止底层 Amazon EC2 实例。

为了更大限度地减少延迟，请考虑采取以下措施：
+ 手动备份。
+ 在活动较少时段内停止数据库实例。
+ 保留最近的自动备份。

## 支持的数据库引擎、实例类和区域
<a name="USER_StopInstance.Supported"></a>

您可以停止和启动运行以下数据库引擎的 Amazon RDS 数据库实例：
+ Db2
+ MariaDB
+ Microsoft SQL Server，包括 RDS Custom for SQL Server
+ MySQL
+ Oracle
+ PostgreSQL

所有数据库实例类和所有 AWS 区域都支持停止并启动数据库实例。

## 停止多可用区部署中的数据库实例
<a name="USER_StopInstance.MAZ"></a>

您可以停止和启动多可用区部署中的数据库实例。请注意以下限制：
+ 您只能在数据库引擎支持的情况下创建多可用区部署。有关引擎版本的更多信息，请参阅[支持 Amazon RDS 中多可用区数据库集群的区域和数据库引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.MultiAZDBClusters.md)。
+ RDS for SQL Server 不支持停止多可用区部署中的数据库实例。有关更多信息，请参阅 [Microsoft SQL Server 多可用区部署限制、说明和建议](USER_SQLServerMultiAZ.Recommendations.md)。
+ 停止数据库实例可能需要较长的时间。

## 停止数据库实例的工作原理
<a name="USER_StopInstance.Operation"></a>

停止操作分为以下几个阶段：

1. 数据库实例启动正常关闭过程。

   数据库实例的状态更改为 `stopping`。

1. 实例停止运行，最多连续 7 天。

   数据库实例的状态更改为 `stopped`。

### 已停止数据库实例的特征
<a name="USER_StopInstance.Operation.characteristics"></a>

处于停止状态时，数据库实例具有以下特征：
+ 当您停止数据库实例时，它会保留以下行为：
  + 实例 ID
  + 域名服务器（DNS）端点
  + 参数组
  + 安全组
  + 选项组
  + Amazon S3 事务日志（时间点还原所必需）

  当您重启数据库实例时，它的配置与您停止它时相同。
+ 所有存储卷仍附加到数据库实例，而且其数据将会保留。RDS 删除存储在数据库实例的 RAM 中的所有数据。

  当数据库实例停止后，您需要为预调配的存储（包括预调配 IOPS）付费。您还需要为备份存储付费，包括指定保留时段内的手动快照和自动备份。
+ RDS 将删除待处理的操作（包括计划进行的维护更新），但针对数据库实例的选项组或数据库参数组的待处理操作除外。

**注意**  
有时，RDS for PostgreSQL 数据库实例不会完全关闭。如果发生这种情况，您将看到实例在稍后重启时会经历恢复过程。这是数据库引擎的预期行为，旨在保护数据库完整性。一些基于内存的统计数据和计数器不会保留历史记录，重启后会重新初始化，以便捕获接下来的操作工作负载。

### 自动重启已停止的数据库实例
<a name="USER_StopInstance.Operation.restart"></a>

如果您的数据库实例在停止连续七天后没有手动启动，RDS 会自动为您启动数据库实例。这样，您的实例就可以及时获得任何所需的维护更新。要了解如何按计划停止和启动您的实例，请参阅[如何使用 Step Functions 将 Amazon RDS 实例停止 7 天以上？](https://repost.aws/knowledge-center/rds-stop-seven-days-step-functions)。

## 停止数据库实例的限制
<a name="USER_StopInstance.Limitations"></a>

以下是停止操作的一些限制：
+ 您无法停止具有只读副本或作为只读副本的数据库实例。
+ 您无法修改已停止的数据库实例。
+ 您无法删除与停止的数据库实例关联的选项组。
+ 您无法删除与已停止的数据库实例关联的数据库参数组。
+ 在多可用区部署中，请注意以下限制：
  + 无法停止 RDS for SQL Server 数据库实例。
  + 在启动数据库实例后，主要可用区和辅助可用区可能会切换。

其他限制适用于 RDS Custom for SQL Server。有关更多信息，请参阅 [启动和停止 RDS Custom for SQL Server 数据库实例](custom-managing-sqlserver.startstop.md)。

## 选项和参数组注意事项
<a name="USER_StopInstance.OGPG"></a>

如果存在与一个选项组关联的数据库实例，则无法从该选项组中删除持久选项 (包括永久选项)。该功能也适用于状态为 `stopping`、`stopped` 或 `starting` 的任何数据库实例。

您可以更改与已停止的数据库实例关联的选项组或数据库参数组。但是，直到下次启动数据库实例时，才会发生更改。如果您选择立即应用更改，则更改将在您启动数据库实例时生效。否则，更改将在下个维护时段内您启动数据库实例之后才会生效。

## 公有 IP 地址注意事项
<a name="USER_StopInstance.PublicIPAddress"></a>

当您停止一个数据库实例时，它将保留其 DNS 端点。如果您停止具有公有 IP 地址的数据库实例，Amazon RDS 将保留该公有 IP 地址。重新启动数据库实例时，它具有相同的公有 IP 地址。

**注意**  
您应始终使用 DNS 端点而不是 IP 地址来连接到数据库实例。

## 暂时停止数据库实例：基本步骤
<a name="USER_StopInstance.Stopping"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 停止数据库。

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

**停止数据库实例**

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

1. 在导航窗格中，选择 **Databases (数据库)**，然后选择要停止的数据库实例。

1. 对于 **Actions**（操作），选择 **Stop temporarily**（临时停止）。

1. 在 **Stop DB instance temporarily**（临时停止数据库实例）窗口中，选择确认数据库实例将在 7 天后自动重启。

1. （可选）选择 **Save the DB instance in a snapshot**（在快照中保存数据库实例），然后为 **Snapshot name**（快照名称）输入快照名称。如果要在停止数据库实例之前创建其快照，请选择此选项。

1. 选择 **Stop temporarily**（临时停止）以停止数据库实例，或选择 **Cancel**（取消）以取消该操作。

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

要使用 AWS CLI 停止数据库实例，请使用以下选项调用 [stop-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/stop-db-instance.html) 命令：
+ `--db-instance-identifier` – 数据库实例的名称。

**Example**  

```
1. aws rds stop-db-instance --db-instance-identifier mydbinstance
```

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

要使用 Amazon RDS API 停止数据库实例，请使用以下参数调用 [StopDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_StopDBInstance.html) 操作：
+ `DBInstanceIdentifier` – 数据库实例的名称。