

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

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

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

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

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

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

您可以使用 Amazon CloudFormation从数据库实例快照还原数据库实例。有关更多信息，请参阅《*Amazon CloudFormation 用户指南*》中的 [AWS::RDS::DBInstance](https://docs.amazonaws.cn/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>

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

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

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

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

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

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

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

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

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

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

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

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

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

要从数据库快照还原数据库实例，请使用 Amazon CLI 命令 [restore-db-instance-from-db-snapshot](https://docs.amazonaws.cn/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.amazonaws.cn/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 安全组。
+ 如果您使用 Amazon 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 数据库实例还必须与 Amazon License Manager 自行管理许可证相关联。有关更多信息，请参阅 [Db2 的自带许可（BYOL）](db2-licensing.md#db2-licensing-options-byol)。

采用“通过 Amazon Web Services Marketplace 获得 Db2 许可证”模式时，您需要对要使用的特定 IBM Db2 版本进行有效 Amazon Web Services Marketplace 订阅。如果您还没有订阅，请[在 Amazon Web Services Marketplace 中为该 IBM Db2 版本订阅 Db2](db2-licensing.md#db2-marketplace-subscribing-registering)。有关更多信息，请参阅 [通过 Amazon Web Services 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.amazonaws.cn/cli/latest/reference/rds/describe-db-snapshot-tenant-databases.html) 来检查数据库快照中的租户数据库。
+ 如果您使用 Oracle GoldenGate，请始终使用 `compatible` 参数保留参数组。从数据库快照还原数据库实例时，请指定具有匹配或更大 `compatible` 值的参数组。
+ 还原数据库快照时，您可以选择重命名数据库。如果联机重做日志的总大小超过 20GB，RDS 可能会将您的联机重做日志大小重置为其默认设置 512MB（4 x 128MB）。较小的大小允许还原操作在合理的时间内完成。您可以稍后重新创建联机重做日志并更改大小。
+ 您可以在 Amazon Secrets Manager 中管理您的主用户密码。有关更多信息，请参阅 [使用 Amazon Secrets Manager 管理主用户密码的概述](rds-secrets-manager.md#rds-secrets-manager-overview)。