

# 还原到数据库实例
<a name="USER_RestoreFromSnapshot"></a><a name="restore_snapshot"></a>

本节说明如何还原到数据库实例。此页面说明如何从数据库快照还原到 Amazon RDS 数据库实例。

Amazon RDS 创建数据库实例的存储卷快照，并备份整个数据库实例而不仅仅是单个数据库。您可以通过从数据库快照还原来创建新的数据库实例。您可以提供用于还原的数据库快照的名称，然后提供还原后新建的数据库实例的名称。您无法从数据库快照还原到现有数据库实例；还原快照时将创建新的数据库实例。

您可以使用已还原的数据库实例，只要其状态为 `available`。数据库实例继续在后台加载数据。这称为*延迟加载*。如果您的访问数据尚未加载，数据库实例会立即从 Amazon S3 下载请求的数据，然后在后台继续加载数据的剩余部分。有关更多信息，请参阅 [Amazon EBS 快照](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html)。

为了帮助减轻延迟加载对需要快速访问的表的影响，您可以执行涉及全表扫描的操作，例如 `SELECT *`。这样，Amazon RDS 就可以从 S3 下载所有备份表数据。

您可以还原数据库实例并使用与源数据库快照不同的存储类型。在这种情况下，由于将数据迁移到新的存储类型需要额外的工作，还原过程会更慢。在还原到磁性存储或从其中还原时，迁移过程最慢。这是因为磁性存储不具备预置 IOPS 或通用型 (SSD) 存储的 IOPS 功能。

您可以使用 CloudFormation从数据库实例快照还原数据库实例。有关更多信息，请参阅《*AWS CloudFormation 用户指南*》中的 [AWS::RDS::DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html)。

**注意**  
您无法从共享并且加密的数据库快照恢复数据库实例。您可以改为创建数据库快照副本，并从该副本还原数据库实例。有关更多信息，请参阅 [复制 Amazon RDS 的数据库快照](USER_CopySnapshot.md)。

有关使用 RDS 扩展支持版本还原数据库实例的信息，请参阅[使用 Amazon RDS 扩展支持还原数据库实例或多可用区集群](extended-support-restoring-db-instance.md)。

## 从快照还原
<a name="USER_RestoreFromSnapshot.Restoring"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 从数据库快照中还原数据库实例。

**注意**  
还原数据库实例时，无法减少存储量。当您增加分配的存储空间时，必须至少增加 10%。如果您尝试将该值增加不到 10％，则会得到错误。您无法在还原 RDS for SQL Server 数据库实例时增加分配的存储。

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

**要从数据库快照还原数据库实例，请执行以下操作：**

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

1. 在导航窗格中，选择**快照**。

1. 选择要从其还原的数据库快照。

1. 对于**操作**，选择**还原快照**。

1. 在 **Restore snapshot**（还原快照）页面上，对于 **DB instance identifier**（数据库实例标识符），输入还原的数据库实例的名称。

1. 指定其他设置，如分配的存储大小。

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

1. 选择**还原数据库实例**。

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

要从数据库快照还原数据库实例，请使用 AWS CLI 命令 [restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)。

在该示例中，您将从先前创建的名为 `mydbsnapshot` 的数据库快照中进行还原。还原为名为 `mynewdbinstance` 的新数据库实例。此示例还设置分配的存储大小。

您可以指定其他设置。有关每项设置的信息，请参阅 [数据库实例的设置](USER_CreateDBInstance.Settings.md)。

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

```
1. aws rds restore-db-instance-from-db-snapshot \
2.     --db-instance-identifier mynewdbinstance \
3.     --db-snapshot-identifier mydbsnapshot \
4.     --allocated-storage 100
```
对于：Windows  
   

```
1. aws rds restore-db-instance-from-db-snapshot ^
2.     --db-instance-identifier mynewdbinstance ^
3.     --db-snapshot-identifier mydbsnapshot ^
4.     --allocated-storage 100
```
该命令会返回类似以下内容的输出：  

```
1. DBINSTANCE  mynewdbinstance  db.t3.small  MySQL     50       sa              creating  3  n  8.0.28  general-public-license
```

**Example**  
以下示例显示如何还原快照，同时向新创建的实例添加附加存储卷。快照包括附加卷 `rdsdbdata2`。还原操作添加 `rdsdbdata3`，使新创建的实例中共有三个卷。还原快照时无法删除卷。  

```
1. aws rds restore-db-instance-from-db-snapshot \
2.      --db-instance-identifier my-restored-instance \
3.      --db-snapshot-identifier my-asv-snapshot \
4.      --additional-storage-volumes '[{ \
5.              "VolumeName": "rdsdbdata3", \
6.              "StorageType":"gp3", \
7.              "AllocatedStorage": 5000, \
8.              "IOPS": 12000 \
9.          }]'
```

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

要从数据库快照还原数据库实例，请使用以下参数调用 Amazon RDS API 函数 [RestoreDBInstanceFromDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)：
+ `DBInstanceIdentifier` 
+ `DBSnapshotIdentifier` 

## 注意事项
<a name="USER_RestoreFromSnapshot.Considerations"></a>

有关从数据库快照还原到数据库实例时的注意事项，请参阅以下主题。

**Topics**
+ [参数组注意事项](#USER_RestoreFromSnapshot.Parameters)
+ [安全组注意事项](#USER_RestoreFromSnapshot.Security)
+ [选项组注意事项](#USER_RestoreFromSnapshot.Options)
+ [资源标记注意事项](#restore-from-snapshot.tagging)
+ [Db2 注意事项](#USER_RestoreFromSnapshot.Db2)
+ [Microsoft SQL Server 注意事项](#USER_RestoreFromSnapshot.MSSQL)
+ [MySQL 注意事项](#USER_RestoreFromSnapshot.MySQL)
+ [Oracle Database 注意事项](#USER_RestoreFromSnapshot.Oracle)

### 参数组注意事项
<a name="USER_RestoreFromSnapshot.Parameters"></a>

我们建议您保留所创建的数据库快照的数据库参数组，以便还原的数据库实例可以与正确的参数组关联。

除非选择不同的实例，否则默认数据库参数组将与还原的实例关联。默认参数组中没有可用的自定义参数设置。

您可以在还原数据库实例时指定参数组。

有关数据库参数组的更多信息，请参阅 [Amazon RDS 的参数组](USER_WorkingWithParamGroups.md)。

### 安全组注意事项
<a name="USER_RestoreFromSnapshot.Security"></a>

还原数据库实例时，默认的虚拟私有云（VPC）、数据库子网组和 VPC 安全组将与还原的实例关联，除非您选择不同的值。
+ 如果您使用 Amazon RDS 控制台，则可以指定要与实例关联的自定义 VPC 安全组，或者创建新的 VPC 安全组。
+ 如果您使用 AWS CLI，则可以在 `restore-db-instance-from-db-snapshot` 命令中包括 `--vpc-security-group-ids` 选项，从而指定要与实例关联的自定义 VPC 安全组。
+ 如果您使用的是 Amazon RDS API，则可以在 `VpcSecurityGroupIds.VpcSecurityGroupId.N` 操作中包括 `RestoreDBInstanceFromDBSnapshot` 参数。

一旦完成还原，并且您的新数据库实例可用，您还可以通过修改数据库实例来更改 VPC 设置。有关更多信息，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

### 选项组注意事项
<a name="USER_RestoreFromSnapshot.Options"></a>

还原数据库实例时，默认的数据库选项组在大多数情况下会与还原的数据库实例相关联。

例外情况是，源数据库实例与包含持久性或永久性选项的选项组关联。例如，如果源数据库实例使用 Oracle 透明数据加密 (TDE)，则还原后的数据库实例必须使用具有 TDE 选项的选项组。

如果您将数据库实例还原到不同的 VPC 中，则必须执行以下操作之一才能分配数据库选项组：
+ 将该 VPC 组的默认选项组分配到实例。
+ 分配关联到该 VPC 的另一个选项组。
+ 创建新选项组并将其分配到数据库实例。对于持久性或永久性选项（如 Oracle TDE），您必须创建包含持久性或永久性选项的新选项组。

有关数据库选项组的更多信息，请参阅 [使用选项组](USER_WorkingWithOptionGroups.md)。

### 资源标记注意事项
<a name="restore-from-snapshot.tagging"></a>

从数据库快照还原数据库实例时，RDS 会检查您是否指定新标签。如果是，新标签将添加到还原的数据库实例中。如果没有新的标签，RDS 会在创建快照时将源数据库实例中的标签添加到还原的数据库实例中。

有关更多信息，请参阅 [将标签复制到数据库快照](USER_Tagging.md#USER_Tagging.CopyTags)。

### Db2 注意事项
<a name="USER_RestoreFromSnapshot.Db2"></a>



使用 BYOL 模型时，您的 Amazon RDS for Db2 数据库实例必须与包含您的 IBM Site ID 和 IBM Customer ID 的自定义参数组相关联。否则，尝试从快照还原数据库实例将失败。Amazon RDS for Db2 数据库实例还必须与 AWS License Manager 自行管理许可证相关联。有关更多信息，请参阅 [Db2 的自带许可（BYOL）](db2-licensing.md#db2-licensing-options-byol)。

采用“通过 AWS Marketplace 获得 Db2 许可证”模式时，您需要对要使用的特定 IBM Db2 版本进行有效 AWS Marketplace 订阅。如果您还没有订阅，请[在 AWS Marketplace 中为该 IBM Db2 版本订阅 Db2](db2-licensing.md#db2-marketplace-subscribing-registering)。有关更多信息，请参阅 [通过 AWS Marketplace 获得 Db2 许可证](db2-licensing.md#db2-licensing-options-marketplace)。

### Microsoft SQL Server 注意事项
<a name="USER_RestoreFromSnapshot.MSSQL"></a>

如果您要将 RDS for Microsoft SQL Server 数据库快照还原为新实例，总是可以还原为与快照相同的版本。在某些情况下，您还可以更改数据库实例的版本。以下是更改版本的限制应用：
+ 数据库快照必须为新版本分配足够的存储。
+ 只支持以下版本更改：
  + 从标准版更改为企业版
  + 从 Web 版更改为标准版或企业版
  + 从速成版更改为 Web 版、标准版或企业版

如果您希望从一个版本更改为另一个新版本，但还原快照不支持，您可以尝试使用本机备份和还原功能。SQL Server 根据数据库已启用的 SQL Server 功能，验证您的数据库是否与新版本兼容。有关更多信息，请参阅 [使用本机备份和还原导入和导出 SQL Server 数据库](SQLServer.Procedural.Importing.md)。

### MySQL 注意事项
<a name="USER_RestoreFromSnapshot.MySQL"></a>

要使用不支持的引擎版本从 RDS for MySQL 数据库快照进行还原，可能必须多次升级数据库快照。有关升级选项的更多信息，请参阅[使用 RDS for MySQL 不支持的引擎版本的数据库快照的升级选项](mysql-upgrade-snapshot.upgrade-options.md)。

有关升级 RDS For MySQL 数据库快照的引擎版本的更多信息，请参阅[升级 MySQL 数据库快照引擎版本](mysql-upgrade-snapshot.md)。

### Oracle Database 注意事项
<a name="USER_RestoreFromSnapshot.Oracle"></a>

从数据库快照还原 Oracle 数据库时，请注意以下事项：
+ 还原数据库快照之前，您可以将其升级到更高版本的 Oracle 数据库。有关更多信息，请参阅 [升级 Oracle 数据库快照](USER_UpgradeDBSnapshot.Oracle.md)。
+ 如果还原使用单租户配置的 CDB 实例的快照，则可以更改 PDB 名称。当您的 CDB 实例使用多租户配置时，则无法更改 PDB 名称。有关更多信息，请参阅 [备份和还原 CDB](Oracle.Concepts.single-tenant.snapshots.md)。
+ 无法更改 CDB 名称，始终为 `RDSCDB`。对于所有 CDB 实例，此 CDB 名称是相同的。
+ 您无法直接与数据库快照中的租户数据库进行交互。如果还原使用多租户配置的 CDB 实例的快照，则将还原其所有租户数据库。在还原数据库快照之前，您可以使用 [describe-db-snapshot-tenant-databases](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-snapshot-tenant-databases.html) 来检查数据库快照中的租户数据库。
+ 如果您使用 Oracle GoldenGate，请始终使用 `compatible` 参数保留参数组。从数据库快照还原数据库实例时，请指定具有匹配或更大 `compatible` 值的参数组。
+ 还原数据库快照时，您可以选择重命名数据库。如果联机重做日志的总大小超过 20GB，RDS 可能会将您的联机重做日志大小重置为其默认设置 512MB（4 x 128MB）。较小的大小允许还原操作在合理的时间内完成。您可以稍后重新创建联机重做日志并更改大小。
+ 您可以在 AWS Secrets Manager 中管理您的主用户密码。有关更多信息，请参阅 [使用 AWS Secrets Manager 管理主用户密码的概述](rds-secrets-manager.md#rds-secrets-manager-overview)。

# 将 Amazon RDS 的数据库实例还原到指定时间
<a name="USER_PIT"></a>

可以将数据库实例还原到特定时间点，创建一个新的数据库实例而无需修改源数据库实例。

将数据库实例还原到某个时间点时，您可以选择默认的 Virtual Private Cloud (VPC) 安全组，也可以将自定义 VPC 安全组应用于数据库实例。

还原的数据库实例自动与默认数据库参数和选项组关联。但是，您可以通过在还原期间指定自定义参数组和选项组来应用它们。

如果请求中提供了标签，则所提供的标签将应用于还原的数据库实例。如果请求中未提供标签，并且源数据库实例在区域内处于活动状态并且具有标签，则 RDS 会将源数据库实例中的最新标签添加到还原的数据库实例。

RDS 每隔 5 分钟将数据库实例的事务日志上传到 Amazon S3。要查看某个数据库实例的最近可还原时间，请使用 AWS CLI [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 命令，并查看该数据库实例的 `LatestRestorableTime` 字段中返回的值。要在 Amazon RDS 控制台中查看每个数据库实例的最近可还原时间，请选择**自动备份**。

您可以还原至备份保留期内的任何时间点。要查看每个数据库实例的最早可还原时间，请在 Amazon RDS 控制台中选择**自动备份**。

![\[自动备份\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/automated-backups.png)


**注意**  
如果使用预置 IOPS 存储作为源数据库实例，我们建议您恢复到相同或相似的数据库实例大小和 IOPS。例如，如果您选择具有不兼容 IOPS 值的数据库实例大小，则可能会出现错误。

有关使用 RDS Extended Support 版本还原数据库实例的信息，请参阅[使用 Amazon RDS 扩展支持还原数据库实例或多可用区集群](extended-support-restoring-db-instance.md)。

从某个时间点进行还原时，某些 Amazon RDS 数据库引擎有一些特殊的注意事项：
+ 如果您对 Amazon RDS for Db2 数据库实例使用密码身份验证，则日志中不会捕获用户管理操作（包括 `rdsadmin.add_user`）。这些操作需要完整快照备份。

  使用 BYOL 模型时，您的 RDS for Db2 数据库实例必须与包含您的 IBM Site ID 和 IBM Customer ID 的自定义参数组相关联。否则，尝试将数据库实例还原到特定时间点将失败。Amazon RDS for Db2 数据库实例还必须与 AWS License Manager 自行管理许可证相关联。有关更多信息，请参阅 [Db2 的自带许可（BYOL）](db2-licensing.md#db2-licensing-options-byol)。

  采用“通过 AWS Marketplace 获得 Db2 许可证”模式时，您需要对要使用的特定 IBM Db2 版本进行有效 AWS Marketplace 订阅。如果您还没有订阅，请[在 AWS Marketplace 中为该 IBM Db2 版本订阅 Db2](db2-licensing.md#db2-marketplace-subscribing-registering)。有关更多信息，请参阅 [通过 AWS Marketplace 获得 Db2 许可证](db2-licensing.md#db2-licensing-options-marketplace)。
+ 将 RDS for Oracle 数据库实例还原到某个时间点时，可以为还原的数据库实例指定不同的数据库引擎、许可模式和 DBName（SID）。也可以指定 RDS 应在 AWS Secrets Manager 中存储和管理主用户密码。有关更多信息，请参阅 [使用 AWS Secrets Manager 管理主用户密码的概述](rds-secrets-manager.md#rds-secrets-manager-overview)。
+ 将 Microsoft SQL Server 数据库实例还原到某个时间点时，该实例中的每个数据库均还原到与实例中每个其他数据库相差 1 秒以内的时间点。对于实例内跨多个数据库的事务，还原时可能会发生不一致的情况。
+ 对于 SQL Server 数据库实例，`OFFLINE`、`EMERGENCY` 和 `SINGLE_USER` 模式不受支持。将任何数据库设置成上述模式之一，会导致整个实例的最近可还原时间停滞不前。
+ 某些操作 (如更改 SQL Server 数据库的恢复模式) 可中断用于时间点恢复的日志序列。在某些情况下，Amazon RDS 可以检测到此问题，最近的可恢复时间将无法向前推进。在其他情况下，例如在 SQL Server 数据库使用 `BULK_LOGGED` 恢复模型时，无法检测到日志序列中断。如果日志序列中断，则可能无法将 SQL Server 数据库实例还原到某个时间点。出于这些原因，Amazon RDS 不支持更改 SQL Server 数据库的恢复模式。

您也可以使用 AWS Backup 管理 Amazon RDS 数据库实例的备份。如果您的数据库实例与 AWS Backup 中的备份计划关联，则该备份计划用于时间点恢复。使用 AWS Backup 创建的备份的名称以 `awsbackup:AWS-Backup-job-number` 结尾。有关 AWS Backup 的更多信息，请参阅 [https://docs.aws.amazon.com/aws-backup/latest/devguide](https://docs.aws.amazon.com/aws-backup/latest/devguide)。

**注意**  
本主题中的信息适用于 Amazon RDS。有关还原 Amazon Aurora 数据库集群的更多信息，请参阅[将数据库集群还原到指定时间](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-pitr.html)。

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 将数据库实例还原到某个时间点。

**注意**  
还原数据库实例时，无法减少存储量。当您增加分配的存储空间时，必须至少增加 10%。如果您尝试将该值增加不到 10％，则会得到错误。您无法在还原 RDS for SQL Server 数据库实例时增加分配的存储。

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

**将数据库实例还原至指定时间**

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

1. 在导航窗格中，选择 **Automated backups (自动备份)**。

   自动备份便会显示在 **Current Region**（当前区域）选项卡上。

1. 选择要还原的数据库实例。

1. 对于 **Actions (操作)**，选择 **Restore to point in time (还原到时间点)**。

   此时会显示**还原到时间点**窗口。

1. 选择**最近可还原时间**以还原到可能的最近时间，或选择**自定义**来选择时间。

   如果您选择 **Custom**（自定义），请输入要将实例集群还原到的日期和时间。
**注意**  
时间以您的本地时区显示，表示为协调世界时 (UTC) 的偏移量。例如，UTC-5 是东部标准时间/中部夏令时。

1. 对于**数据库实例标识符**，请输入目标还原后的数据库实例的名称。名称必须唯一。

1. 根据需要选择其他选项，例如数据库实例类、存储，以及是否要使用存储自动扩展。

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

1. 选择**还原到时间点**。

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

要将数据库实例还原到指定的时间，请使用 AWS CLI 命令 [restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) 创建新的数据库实例。此示例还设置了分配的存储大小并启用存储自动扩缩。

此操作支持资源标记。使用 `--tags` 选项时，将忽略源数据库实例标签，并使用提供的标签。否则，将使用源实例的最新标签。

您可以指定其他设置。有关每项设置的信息，请参阅 [数据库实例的设置](USER_CreateDBInstance.Settings.md)。

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

```
1. aws rds restore-db-instance-to-point-in-time \
2.     --source-db-instance-identifier mysourcedbinstance \
3.     --target-db-instance-identifier mytargetdbinstance \
4.     --restore-time 2017-10-14T23:45:00.000Z \
5.     --allocated-storage 100 \
6.     --max-allocated-storage 1000
```
对于：Windows  

```
1. aws rds restore-db-instance-to-point-in-time ^
2.     --source-db-instance-identifier mysourcedbinstance ^
3.     --target-db-instance-identifier mytargetdbinstance ^
4.     --restore-time 2017-10-14T23:45:00.000Z ^
5.     --allocated-storage 100 ^
6.     --max-allocated-storage 1000
```

**Example**  
以下示例展示了将实例还原到某个时间点时添加卷的情况。  
对于 Linux、macOS 或 Unix：  

```
 1. aws rds restore-db-instance-to-point-in-time \
 2.      --source-db-instance-identifier my-asv-instance \
 3.      --target-db-instance-identifier my-pitr-instance \
 4.      --use-latest-restorable-time \
 5.      --additional-storage-volumes '[{ \
 6.              "VolumeName": "rdsdbdata2", \
 7.              "StorageType":"gp3", \
 8.              "AllocatedStorage": 5000, \
 9.              "IOPS": 12000 \
10.          }]'
```
对于：Windows  

```
 1. aws rds restore-db-instance-to-point-in-time ^
 2.      --source-db-instance-identifier my-asv-instance ^
 3.      --target-db-instance-identifier my-pitr-instance ^
 4.      --use-latest-restorable-time ^
 5.      --additional-storage-volumes '[{ ^
 6.              "VolumeName": "rdsdbdata2", ^
 7.              "StorageType":"gp3", ^
 8.              "AllocatedStorage": 5000, ^
 9.              "IOPS": 12000 ^
10.          }]'
```

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

要将数据库实例还原到指定时间，请结合以下参数调用 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) 操作：
+ `SourceDBInstanceIdentifier`
+ `TargetDBInstanceIdentifier`
+ `RestoreTime`

# 将多可用区数据库集群还原到指定时间
<a name="USER_PIT.MultiAZDBCluster"></a>

您可以将多可用区数据库集群还原到特定时间点，从而创建新的多可用区数据库集群。

RDS 会不断将多可用区数据库集群的事务日志上载到 Amazon S3。您可以还原至备份保留期内的任何时间点。要查看多可用区数据库集群的最早可还原时间，请使用 AWS CLI [describe-db-clusters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html) 命令。查看在数据库集群的 `EarliestRestorableTime` 字段中返回的值。要查看某个多可用区数据库集群的最晚可还原时间，请查看该数据库集群的 `LatestRestorableTime` 字段中返回的值。

在将多可用区数据库集群还原到某个时间点时，您可以选择该多可用区数据库集群的默认 VPC 安全组或将自定义 VPC 安全组应用到该多可用区数据库集群。



经过还原的多可用区数据库集群会自动与原定设置数据库集群参数组关联。但是，您可以通过在还原期间指定自定义数据库集群参数组来应用该参数组。

如果源数据库实例具有资源标签，RDS 会向已还原的数据库集群中添加最新标签。

**注意**  
我们建议您还原到与源数据库集群相同或相似的多可用区数据库集群大小。如果您使用 预置 IOPS 存储，我们还建议您使用相同或类似的 IOPS 值还原。例如，如果您选择具有不兼容 IOPS 值的数据库集群大小，则可能会出现错误。  
如果源多可用区数据库集群使用通用型 SSD（gp3）存储并且分配的存储空间低于 400 GiB，则无法修改已还原数据库集群的预调配 IOPS。

有关使用 RDS 扩展支持版本还原多可用区数据库集群的信息，请参阅[使用 Amazon RDS 扩展支持还原数据库实例或多可用区集群](extended-support-restoring-db-instance.md)。

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 将多可用区数据库集群还原到某个时间点。

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

**要将多可用区数据库集群还原到指定的时间点**

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

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

1. 选择要还原的多可用区数据库集群。

1. 对于 **Actions (操作)**，选择 **Restore to point in time (还原到时间点)**。

   此时会显示**还原到时间点**窗口。

1. 选择**最近可还原时间**以还原到可能的最近时间，或选择**自定义**来选择时间。

   如果您选择 **Custom**（自定义），请输入要将多可用区数据库集群还原到的日期和时间。
**注意**  
时间以您的本地时区显示，表示为协调世界时 (UTC) 的偏移量。例如，UTC-5 是东部标准时间/中部夏令时。

1. 对于 **DB cluster identifier**（数据库集群标识符），请输入您还原的多可用区数据库集群的名称。

1. 在 **Availability and durability**（可用性与持久性）中，选择 **Multi-AZ DB cluster**（多可用区数据库集群）。  
![\[多可用区数据库集群选择\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/multi-az-db-cluster-create.png)

1. 在 **DB instance class**（数据库实例类）中，请选择数据库实例类。

   目前，多可用区数据库集群仅支持 db.m6gd 和 db.r6gd 数据库实例类。有关数据库实例类的更多信息，请参阅 [数据库实例类](Concepts.DBInstanceClass.md)。

1. 对于其余部分，请指定数据库集群设置。有关每项设置的信息，请参阅 [创建多可用区数据库集群的设置](create-multi-az-db-cluster.md#create-multi-az-db-cluster-settings)。

1. 选择**还原到时间点**。

## AWS CLI
<a name="USER_PIT.MultiAZDBCluster.CLI"></a>

要将多可用区数据库集群还原到指定时间，请使用 AWS CLI 命令 [restore-db-cluster-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-to-point-in-time.html) 以创建新的多可用区数据库集群。

目前，多可用区数据库集群仅支持 db.m6gd 和 db.r6gd 数据库实例类。有关数据库实例类的更多信息，请参阅 [数据库实例类](Concepts.DBInstanceClass.md)。

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

```
1. aws rds restore-db-cluster-to-point-in-time \
2.     --source-db-cluster-identifier mysourcemultiazdbcluster \
3.     --db-cluster-identifier mytargetmultiazdbcluster \
4.     --restore-to-time 2021-08-14T23:45:00.000Z \
5.     --db-cluster-instance-class db.r6gd.xlarge
```
对于 Windows：  

```
1. aws rds restore-db-cluster-to-point-in-time ^
2.     --source-db-cluster-identifier mysourcemultiazdbcluster ^
3.     --db-cluster-identifier mytargetmultiazdbcluster ^
4.     --restore-to-time 2021-08-14T23:45:00.000Z ^
5.     --db-cluster-instance-class db.r6gd.xlarge
```

## RDS API
<a name="USER_PIT.MultiAZDBCluster.API"></a>

要将数据库集群还原到指定时间，请调用 Amazon RDS API [RestoreDBClusterToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html) 操作，并使用以下参数：
+ `SourceDBClusterIdentifier`
+ `DBClusterIdentifier`
+ `RestoreToTime`

# 从快照还原到多可用区数据库集群
<a name="USER_RestoreFromMultiAZDBClusterSnapshot.Restoring"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 将快照还原为多可用区数据库集群。您可以将以下每种类型的快照还原到多可用区数据库集群：
+ 单可用区部署的快照
+ 具有单个数据库实例的多可用区数据库集群部署的快照
+ 多可用区数据库集群的快照

有关多可用区部署的信息，请参阅 [配置和管理 Amazon RDS 的多可用区部署](Concepts.MultiAZ.md)。

**提示**  
您可以通过还原快照，将单可用区部署或多可用区数据库集群部署迁移到多可用区数据库集群部署。

有关使用 RDS 扩展支持版本还原多可用区数据库集群的信息，请参阅[使用 Amazon RDS 扩展支持还原数据库实例或多可用区集群](extended-support-restoring-db-instance.md)。

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

**要将快照还原到多可用区数据库集群**

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

1. 在导航窗格中，选择**快照**。

1. 选择要从其还原的快照。

1. 对于**操作**，选择**还原快照**。

1. 在 **Restore snapshot**（还原快照）页面的 **Availability and durability**（可用性与持久性）下，选择 **Multi-AZ DB cluster**（多可用区数据库集群）。  
![\[多可用区数据库集群选择\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/multi-az-db-cluster-create.png)

1. 对于 **DB cluster identifier**（数据库集群标识符），请输入您还原的多可用区数据库集群的名称。

1. 对于其余部分，请指定数据库集群设置。有关每项设置的信息，请参阅 [创建多可用区数据库集群的设置](create-multi-az-db-cluster.md#create-multi-az-db-cluster-settings)。

1. 选择**还原数据库实例**。

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

要从快照还原多可用区数据库集群，请使用 AWS CLI 命令 [restore-db-cluster-from-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-from-snapshot.html)。

在下面的示例中，您将从先前创建的名为 `mysnapshot` 的快照中进行还原。您将还原为名为 `mynewmultiazdbcluster` 的新多可用区数据库集群。您还可以指定多可用区数据库集群中数据库实例使用的数据库实例类。为数据库引擎指定 `mysql` 或 `postgres`。

对于 `--snapshot-identifier` 选项，您可以使用名称或 Amazon Resource Name (ARN) 指定数据库集群快照。但是，您只能使用 ARN 指定数据库快照。

对于 `--db-cluster-instance-class` 选项，为新的多可用区数据库集群指定数据库实例类。多可用区数据库集群仅支持特定的数据库实例类，如 DB.m6gd 和 DB.r6gd 数据库实例类。有关数据库实例类的更多信息，请参阅[数据库实例类](Concepts.DBInstanceClass.md)。

您也可以指定其他选项。

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

```
1. aws rds restore-db-cluster-from-snapshot \
2.     --db-cluster-identifier mynewmultiazdbcluster \
3.     --snapshot-identifier mysnapshot \
4.     --engine mysql|postgres \
5.     --db-cluster-instance-class db.r6gd.xlarge
```
对于：Windows  

```
1. aws rds restore-db-cluster-from-snapshot ^
2.     --db-cluster-identifier mynewmultiazdbcluster ^
3.     --snapshot-identifier mysnapshot ^
4.     --engine mysql|postgres ^
5.     --db-cluster-instance-class db.r6gd.xlarge
```

还原数据库集群后，可以将多可用区数据库集群添加到与用于创建快照的数据库集群或数据库实例关联的安全组（如果适用）。完成此操作可提供与之前的数据库集群或数据库实例相同的功能。

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

要从快照还原多可用区数据库集群，请调用 RDS API 操作 [RestoreDBClusterFromSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterFromSnapshot.html)，并采用以下参数：
+ `DBClusterIdentifier` 
+ `SnapshotIdentifier` 
+ `Engine` 

您还可以选择指定以下参数。

还原数据库集群后，可以将多可用区数据库集群添加到与用于创建快照的数据库集群或数据库实例关联的安全组（如果适用）。完成此操作可提供与之前的数据库集群或数据库实例相同的功能。

# 从多可用区数据库集群快照还原到数据库实例
<a name="USER_RestoreFromMultiAZDBClusterSnapshot"></a>

*多可用区数据库集群快照*是数据库集群的存储卷快照，并备份整个数据库集群而不仅仅是单个数据库。您可以将多可用区数据库集群快照还原到单可用区部署或多可用区数据库实例部署。有关多可用区部署的信息，请参阅 [配置和管理 Amazon RDS 的多可用区部署](Concepts.MultiAZ.md)。

**注意**  
您还可以将多可用区数据库集群快照还原到新的多可用区数据库集群。有关说明，请参阅[从快照还原到多可用区数据库集群](USER_RestoreFromMultiAZDBClusterSnapshot.Restoring.md)。

有关使用 RDS 扩展支持版本还原多可用区数据库集群的信息，请参阅[使用 Amazon RDS 扩展支持还原数据库实例或多可用区集群](extended-support-restoring-db-instance.md)。

使用 AWS 管理控制台、AWS CLI 或 RDS API 将多可用区数据库集群快照还原到单可用区部署或多可用区数据库实例部署。

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

**将多可用区数据库集群快照还原到单可用区部署或多可用区数据库实例部署**

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

1. 在导航窗格中，选择**快照**。

1. 选择要从中进行还原的多可用区数据库集群快照。

1. 对于**操作**，选择**还原快照**。

1. 在 **Restore snapshot**（还原快照）页面的 **Availability and durability**（可用性和持久性）中，选择以下选项之一：
   + **Single DB instance**（单个数据库实例）- 将快照还原到一个没有备用数据库实例的数据库实例。
   + **Multi-AZ DB instance**（多可用区数据库实例）– 将快照还原到具有一个主数据库实例和一个备用数据库实例的多可用区数据库实例部署。

1. 对于 **DB instance identifier**（数据库实例标识符），请输入还原后的数据库实例的名称。

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

1. 选择**还原数据库实例**。

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

要将多可用区数据库集群快照还原到数据库实例部署，请使用 AWS CLI 命令 [restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)。

在下面的示例中，您将从先前创建的名为 `myclustersnapshot` 的多可用区数据库集群快照中进行还原。您可以使用名为 `mynewdbinstance` 的主数据库实例还原到新的多可用区数据库实例部署。对于 `--db-cluster-snapshot-identifier` 选项，请指定多可用区数据库集群快照的名称。

对于 `--db-instance-class` 选项，请为新的数据库实例部署指定数据库实例类。有关数据库实例类的更多信息，请参阅[数据库实例类](Concepts.DBInstanceClass.md)。

您也可以指定其他选项。

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

```
1. aws rds restore-db-instance-from-db-snapshot \
2.     --db-instance-identifier mynewdbinstance \
3.     --db-cluster-snapshot-identifier myclustersnapshot \
4.     --engine mysql \
5.     --multi-az \
6.     --db-instance-class db.r6g.xlarge
```
对于：Windows  

```
1. aws rds restore-db-instance-from-db-snapshot ^
2.     --db-instance-identifier mynewdbinstance ^
3.     --db-cluster-snapshot-identifier myclustersnapshot ^
4.     --engine mysql ^
5.     --multi-az ^
6.     --db-instance-class db.r6g.xlarge
```

还原数据库实例后，可以将其添加到与用于创建快照的多可用区数据库集群关联的安全组（如果适用）。完成此操作可提供与先前多可用区数据库集群相同的功能。

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

要将多可用区数据库集群快照还原到数据库实例部署，请使用以下参数调用 RDS API 操作 [RestoreDBInstanceFromDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)：
+ `DBInstanceIdentifier` 
+ `DBClusterSnapshotIdentifier` 
+ `Engine` 

您还可以选择指定以下参数。

还原数据库实例后，可以将其添加到与用于创建快照的多可用区数据库集群关联的安全组（如果适用）。完成此操作可提供与先前多可用区数据库集群相同的功能。

# 教程：从数据库快照还原 Amazon RDS 数据库实例
<a name="CHAP_Tutorials.RestoringFromSnapshot"></a>

通常，在使用 Amazon RDS 时，您可能有一个偶尔使用而不是一直使用的数据库实例。例如，假设您有一个季度客户调查，该调查使用一个 Amazon EC2 实例来托管客户调查网站。您还有一个用于存储调查结果的数据库实例。在此类情况下节省资金的一种方法是在完成调查后创建数据库实例的数据库快照。然后，您可以删除数据库实例，并在需要再次进行调查时将其还原。

在还原数据库实例时，您需要提供要从中进行还原的数据库快照的名称。然后，为通过还原操作创建的新数据库实例提供名称。

有关从快照还原数据库实例的更多详细信息，请参阅 [还原到数据库实例](USER_RestoreFromSnapshot.md)。

有关 Amazon RDS 的 AWS KMS 密钥管理的信息，请参阅 [AWS KMS key 管理](Overview.Encryption.Keys.md)。

## 从数据库快照还原数据库实例
<a name="tut-restore-snapshot.console"></a>

按照以下过程在 AWS 管理控制台 中从快照还原。

**要从数据库快照还原数据库实例，请执行以下操作：**

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

1. 在导航窗格中，选择**快照**。

1. 选择要从其还原的数据库快照。

1. 对于**操作**，选择**还原快照**。  
![\[RDS 控制台操作菜单中的还原快照选项\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/tut-restore-instance1.png)

   此时会显示**还原快照**页面。  
![\[还原快照页面\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/tut-restore-instance2.png)

1. 在 **DB instance settings**（数据库实例设置）项下，使用 **DB engine**（数据库引擎）和 **License model**（许可模式）（适用于 Oracle 或 Microsoft SQL Server）的默认设置。

1. 在 **Settings**（设置）项下的 **DB instance identifier**（数据库实例标识符）中，输入要用于还原的数据库实例的唯一名称，如 **mynewdbinstance**。

   如果您要从在创建数据库快照之后删除的数据库实例还原，则可以使用该数据库实例的名称。

1. 在**可用性与持久性**下，选择是否在另一个可用区中创建备用实例。

   在本教程中，不创建备用实例。

1. 在 **Connectivity**（连接）项下，使用以下各项的默认设置：
   + **Virtual Private Cloud (VPC)**
   + **DB subnet group**（数据库子网组）
   + **公有访问权限**
   + **VPC security group (firewall)** [VPC 安全组（防火墙）]

1. 选择 **DB instance class**（数据库实例类）。

   在本教程中，请选择 **Burstable classes (includes t classes)**（突增型类（包括 t 类）），然后选择 **db.t3.small**。

1. 使用 **Encryption**（加密）项的默认设置。

   如果快照的源数据库实例已加密，则还原的数据库实例也会加密。您无法将其设置为未加密。

1. 展开页面底部的 **Additional configuration**（其他配置）。  
![\[其他配置\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/tut-restore-instance3.png)

1. 在 **Database options**（数据库选项）下执行以下操作：

   1. 选择 **DB parameter group**（数据库参数组）。

      在本教程中，请使用默认参数组。

   1. 选择 **Option group**（选项组）。

      在本教程中，请使用默认选项组。
**重要**  
在某些情况下，您可能会从使用持久或永久选项的数据库实例的数据库快照进行还原。如果是这样，请确保选择使用相同选项的选项组。

   1. 为 **Deletion protection**（删除保护）选择 **Enable deletion protection**（启用删除保护）复选框。

1. 选择**还原数据库实例**。

**Databases**（数据库）页面会显示状态为 `Creating` 的还原数据库实例。

![\[“数据库”页面上还原的数据库实例\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/tut-restore-instance4.png)
