

# 备份、还原和导出数据
<a name="CHAP_CommonTasks.BackupRestore"></a>

本节介绍如何从 Amazon RDS 数据库实例或多可用区数据库集群备份、还原和导出数据。

有关备份 Amazon RDS 数据库实例或多可用区数据库集群的信息，请参阅以下主题。
+ [备份简介](USER_WorkingWithAutomatedBackups.md)
+ [管理自动备份](USER_ManagingAutomatedBackups.md)
+ [管理手动备份](USER_ManagingManualBackups.md)

有关还原 Amazon RDS 数据库实例或多可用区数据库集群的信息，请参阅[还原到数据库实例](USER_RestoreFromSnapshot.md)。

有关复制、共享或导出数据库快照的信息，请参阅以下主题。
+ [复制 Amazon RDS 的数据库快照](USER_CopySnapshot.md)
+ [共享 Amazon RDS 的数据库快照](USER_ShareSnapshot.md)
+ [将 Amazon RDS 的数据库快照数据导出到 Amazon S3](USER_ExportSnapshot.md)

有关查看 AWS Backup 管理的自动备份的信息，请参阅[使用 AWS Backup 管理 Amazon RDS 的自动备份](AutomatedBackups.AWSBackup.md)。

# 备份简介
<a name="USER_WorkingWithAutomatedBackups"></a>

在数据库实例的备份时段中，Amazon RDS 创建并保存数据库实例或多可用区数据库集群的自动备份。RDS 创建数据库实例的存储卷快照，并备份整个数据库实例而不仅仅是单个数据库。RDS 根据您指定的备份保留期保存数据库实例的自动备份。如果需要，您可以将数据库实例恢复到备份保留期中的任意时间点。

自动备份遵循以下规则：
+ 数据库实例必须处于 `available` 状态才能进行自动备份。当数据库实例处于 `available` 之外的状态（例如 `storage_full`）时，不会进行自动备份。
+ 数据库快照副本在相同数据库的相同 AWS 区域中运行时，不会进行自动备份。

还可以通过创建数据库快照来手动备份数据库实例。有关手动创建数据库快照的更多信息，请参阅[为 Amazon RDS 的单可用区数据库实例创建数据库快照](USER_CreateSnapshot.md)。

快照和备份功能支持多卷配置。所有备份操作都包括主卷和任何附加存储卷。快照捕获整个数据库存储配置。时间点故障恢复（PITR）适用于所有存储卷。

数据库实例的第一个快照包含整个数据库的数据。相同数据库的后续快照为增量快照，这意味着仅保存在最新快照后更改的数据。

您可以复制自动和手动数据库快照，还可以共享手动数据库快照。有关复制数据库快照的更多信息，请参阅[复制 Amazon RDS 的数据库快照](USER_CopySnapshot.md)。有关共享数据库快照的更多信息，请参阅[共享 Amazon RDS 的数据库快照](USER_ShareSnapshot.md)。

## 备份存储
<a name="USER_WorkingWithAutomatedBackups.BackupStorage"></a>

您的每个 AWS 区域的 Amazon RDS 备份存储由该区域的自动备份和手动数据库快照组成。备份存储总空间相当于该区域中所有备份的存储空间之和。将数据库快照移至另一个区域将增加目标区域的备份存储。备份存储在 Amazon S3 中。

有关备份存储成本的更多信息，请参阅 [Amazon RDS 定价](https://aws.amazon.com/rds/pricing/)。

如果您在删除数据库实例时选择保留自动备份，则自动备份将保存完整的保留周期。如果您在删除数据库实例时未选择 **Retain automated backups (保留自动备份)**，则所有自动备份将随同数据库实例删除。自动备份删除后无法恢复。如果您选择让 Amazon RDS 在删除数据库实例之前创建最终数据库快照，则可以使用该快照来恢复数据库实例。（可选）您可以使用之前创建的手动快照。手动快照不会删除。您在每个区域最多可拥有 100 个手动快照。

# 管理自动备份
<a name="USER_ManagingAutomatedBackups"></a>

本节介绍如何管理数据库实例和多可用区数据库集群的自动备份。

**Topics**
+ [

## 备份时段
](#USER_WorkingWithAutomatedBackups.BackupWindow)
+ [

# 备份保留期
](USER_WorkingWithAutomatedBackups.BackupRetention.md)
+ [

# 启用自动备份
](USER_WorkingWithAutomatedBackups.Enabling.md)
+ [

# 保留自动备份
](USER_WorkingWithAutomatedBackups.Retaining.md)
+ [

# 删除保留的自动备份
](USER_WorkingWithAutomatedBackups-Deleting.md)
+ [

# 使用不支持的 MySQL 存储引擎进行自动备份
](Overview.BackupDeviceRestrictions.md)
+ [

# 使用不支持的 MariaDB 存储引擎进行自动备份
](Overview.BackupDeviceRestrictionsMariaDB.md)
+ [

# 将自动备份复制到其他 AWS 区域
](USER_ReplicateBackups.md)

## 备份时段
<a name="USER_WorkingWithAutomatedBackups.BackupWindow"></a>

自动备份在每天的首选备份时段中进行。如果备份所需的时间超过了分配给备份时段的时间，则备份将在该时段结束后继续，直至完成。备份时段不能与数据库实例或多可用区数据库集群的每周维护时段重叠。

在自动备份时段期间，启动备份进程时可能会短时间暂停存储 I/O (通常不到几秒)。在备份多可用区部署时，可能需要等待几分钟。对于 MariaDB、MySQL、Oracle 和 PostgreSQL，多可用区部署的备份期间不会暂停主数据库上的 I/O 活动，因为备份获取自备用数据库。对于 SQL Server，在单可用区和多可用区部署的备份期间，I/O 活动会短暂挂起，因为备份是从主实例进行的。对于 Db2，在备份期间，I/O 活动会短暂挂起，即使备份是从备用数据库进行的。

启动备份时，如果数据库实例或集群具有繁重的工作负载，则有时会跳过自动备份。如果跳过备份，您仍然可以执行时间点恢复（PITR），并仍在下一个备份时段尝试备份。有关 PITR 的更多信息，请参阅[将 Amazon RDS 的数据库实例还原到指定时间](USER_PIT.md)。

如果创建数据库实例或多可用区数据库集群时未指定首选备份时段，Amazon RDS 将分配 30 分钟的原定设置备份时段。此时段是从每个 AWS 区域的 8 小时时间段中随机选择出来的。下表列出了已分配默认备份时段的各个 AWS 区域的时间块。


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_ManagingAutomatedBackups.html)

# 备份保留期
<a name="USER_WorkingWithAutomatedBackups.BackupRetention"></a>

您可以在创建或还原数据库实例或多可用区数据库集群时设置备份保留期。如果您使用 Amazon RDS API 或 AWS CLI 创建数据库实例，并且未设置备份保留期，则默认备份保留期为一天。如果您使用控制台创建数据库实例，则默认备份保留期为七天。

创建数据库实例或集群后，您可以修改备份保留期。您可以将数据库实例的备份保留期设置为在 0 到 35 天之间。要禁用自动备份，请将备份保留期设置为 0。对于多可用区数据库集群，可以将备份保留期设置为在 1 到 35 天之间。手动快照限制（每个区域 100 个）不适用于自动备份。

在执行还原操作期间，您可以选择为数据库实例或多可用区数据库集群指定备份保留期。如果未明确设置此值，则还原的数据库将从源快照或实例继承备份保留期。请注意，这种继承行为是还原操作所独有的，在创建新数据库时，系统会改用默认的保留期。

**重要**  
如果将数据库实例的备份保留期从 0 更改为非零值或从非零值更改为 0，则会发生中断。

RDS 不包括计算备份保留期时处于 `stopped` 状态的时间。数据库实例或集群停止后，无法创建自动备份。如果数据库实例已停止，备份的保留时间可能会超过备份保留期。

# 启用自动备份
<a name="USER_WorkingWithAutomatedBackups.Enabling"></a>

如果数据库实例尚未启用自动备份，您可以随时启用。您可以将备份保留期设置为非零正值来启用自动备份。在开启自动备份后，您的数据库实例将脱机并立即创建备份。

**注意**  
如果在 AWS Backup 中管理备份，将无法启用自动备份。有关更多信息，请参阅 [使用 AWS Backup 管理 Amazon RDS 的自动备份](AutomatedBackups.AWSBackup.md)。

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

**立即启用自动备份**

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

1. 在导航窗格中，选择**数据库**，然后选择要修改的数据库实例或多可用区数据库集群。

1. 选择 **Modify**(修改)。

1. 对于**备份保留期**，请选择非零正值，例如三天。

1. 选择 **Continue (继续)**。

1. 选择**立即应用**。

1. 选择**修改数据库实例**或**修改集群**以保存更改并启用自动备份。

## AWS CLI
<a name="USER_WorkingWithAutomatedBackups.Enabling.CLI"></a>

要启用自动备份，请使用 AWS CLI [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 或 [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) 命令。

包括以下参数：
+ `--db-instance-identifier`（或 `--db-cluster-identifier` 用于可用区数据库集群）
+ `--backup-retention-period`
+ `--apply-immediately` 或者 `--no-apply-immediately`

在以下示例中，启用了自动备份并将备份保留期设置为三天。更改将立即应用。

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

```
aws rds modify-db-instance \
    --db-instance-identifier my_db_instance  \
    --backup-retention-period 3 \
    --apply-immediately
```
对于：Windows  

```
aws rds modify-db-instance ^
    --db-instance-identifier my_db_instance  ^
    --backup-retention-period 3 ^
    --apply-immediately
```

## RDS API
<a name="USER_WorkingWithAutomatedBackups.Enabling.API"></a>

要启用自动备份，请使用 RDS API [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 或 [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) 操作以及以下必需参数：
+ `DBInstanceIdentifier` 或 `DBClusterIdentifier`
+ `BackupRetentionPeriod`

## 查看自动备份
<a name="USER_WorkingWithAutomatedBackups.viewing"></a>

要查看自动备份，请在导航窗格中选择 **Automated backups**（自动备份）。要查看与自动备份关联的单个快照，请在导航窗格中选择 **Snapshots**（快照）。或者，您可以描述与自动备份关联的各个快照。然后，您可以直接从这些快照之一还原数据库实例。

自动快照名称遵循模式 `rds:<database-name>-yyyy-mm-dd-hh-mm`，其中 `yyyy-mm-dd-hh-mm` 表示创建快照的日期和时间。

要使用 AWS CLI 对现有的数据库实例的自动备份进行描述，请使用以下命令之一：

```
aws rds describe-db-instance-automated-backups --db-instance-identifier DBInstanceIdentifier
```

或者

```
aws rds describe-db-instance-automated-backups --dbi-resource-id DbiResourceId
```

要使用 RDS API 对现有的数据库实例的保留的自动备份进行描述，请使用以下参数之一调用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstanceAutomatedBackups.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstanceAutomatedBackups.html) 操作：
+ `DBInstanceIdentifier`
+ `DbiResourceId`

# 保留自动备份
<a name="USER_WorkingWithAutomatedBackups.Retaining"></a>

**注意**  
您只能保留数据库实例而不是多可用区数据库集群的自动备份。

删除数据库实例时，可以选择保留自动备份。自动备份可以保留的天数等于删除数据库实例时为该实例配置的备份保留期。

保留的自动备份包含系统快照和来自数据库实例的事务日志。还包括您的数据库实例属性，如分配的存储空间和数据库实例类，这些是将其还原到活动实例所必需的属性。

保留的自动备份和手动快照在被删除之前会产生账单费用。有关更多信息，请参阅 [保留成本](#USER_WorkingWithAutomatedBackups.RetentionCosts)。

您可以为运行 Db2、MariaDB、MySQL、PostgreSQL、Oracle 和 Microsoft SQL Server 引擎的 RDS 实例保留自动备份。

您可以使用 AWS 管理控制台、RDS API 和 AWS CLI 还原或移除保留的自动备份。

**Topics**
+ [

## 保留期
](#USER_WorkingWithAutomatedBackups.RetentionPeriods)
+ [

## 查看保留的备份
](#USER_WorkingWithAutomatedBackups.viewing-retained)
+ [

## 还原
](#USER_WorkingWithAutomatedBackups.Restoration)
+ [

## 保留成本
](#USER_WorkingWithAutomatedBackups.RetentionCosts)
+ [

## 限制
](#USER_WorkingWithAutomatedBackups.Limits)

## 保留期
<a name="USER_WorkingWithAutomatedBackups.RetentionPeriods"></a>

保留的自动备份中的系统快照和事务日志与源数据库实例的系统快照和事务日志以同样的方式过期。因为没有为此实例创建任何新的快照或日志，所以保留的自动备份最终将完全过期。事实上，它们的寿命与最后一个系统快照一样长，取决于源实例被删除时所具有的保留周期设置。保留的自动备份将在最后一个系统快照过期时由系统删除。

您可以通过删除数据库实例的相同方式移除保留的自动备份。您可以使用控制台或 RDS API 操作 `DeleteDBInstanceAutomatedBackup` 移除保留的自动备份。

最终快照独立于保留的自动备份。我们强烈建议您制作最终快照，即使您保留自动备份也是如此，因为保留的自动备份最终将过期。最终快照不会过期。

## 查看保留的备份
<a name="USER_WorkingWithAutomatedBackups.viewing-retained"></a>

要查看保留的自动备份，请在导航窗格中选择 **Automated backups (自动备份)**，然后选择 **Retained (保留)**。要查看与保留的自动备份关联的单个快照，请在导航窗格中选择 **Snapshots (快照)**。或者，您可以通过描述来查看与保留的自动备份关联的各个快照。然后，您可以直接从这些快照之一还原数据库实例。

要使用 AWS CLI 对保留的自动备份进行描述，请使用以下命令：

```
aws rds describe-db-instance-automated-backups --dbi-resource-id DbiResourceId
```

要使用 RDS API 对保留的自动备份进行描述，请使用 `DbiResourceId` 参数调用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstanceAutomatedBackups.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstanceAutomatedBackups.html) 操作。

## 还原
<a name="USER_WorkingWithAutomatedBackups.Restoration"></a>

有关从自动备份还原数据库实例的信息，请参阅 [将 Amazon RDS 的数据库实例还原到指定时间](USER_PIT.md)。

## 保留成本
<a name="USER_WorkingWithAutomatedBackups.RetentionCosts"></a>

保留的自动备份的成本是与之关联的系统快照的总存储空间的成本。事务日志或实例元数据没有额外费用。备份的所有其他定价规则适用于可还原的实例。

例如，假设正在运行的实例的总分配存储空间为 100 GB。此外，假设您具有 50 GB 的手动快照，另加 75 GB 与保留的自动备份关联的系统快照。在这种情况下，您将仅为额外的 25 GB 的备份存储空间付费，如下所示：(50 GB \$1 75 GB) – 100 GB = 25 GB。

## 限制
<a name="USER_WorkingWithAutomatedBackups.Limits"></a>

以下限制适用于保留的自动备份：
+ 一个 AWS 区域中保留的自动备份的最大数量为 40。这不包含在数据库实例限额中。您可以同时具有 40 个运行的数据库实例和额外的 40 个保留的自动备份。
+ 保留的自动备份不包含有关参数或选项组的信息。
+ 您可以将已删除的实例还原到删除时保留周期内的某个时间点。
+ 您无法修改保留的自动备份。这是因为它包含在您删除源实例时已存在的系统备份、事务日志和数据库实例属性。

# 删除保留的自动备份
<a name="USER_WorkingWithAutomatedBackups-Deleting"></a>

当不再需要保留的自动备份时，可以删除它们。

## 控制台
<a name="USER_WorkingWithAutomatedBackups-Deleting.CON"></a>

**删除保留的自动备份**

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

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

1. 在**保留**选项卡中，选择要删除的保留自动备份。

1. 对于 ** Actions**，选择 **Delete**。

1. 在确认页面上，输入 **delete me** 并选择 **Delete (删除)**。

## AWS CLI
<a name="USER_WorkingWithAutomatedBackups-Deleting.CLI"></a>

可以通过使用 AWS CLI 命令 [delete-db-instance-automated-backup](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-instance-automated-backup.html) 及以下选项删除保留的自动备份：
+ `--dbi-resource-id` – 源数据库实例的资源标识符。

  可以通过运行 AWS CLI 命令 [describe-db-instance-automated-backups](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instance-automated-backups.html) 查找保留自动备份的源数据库实例的资源标识符。

**Example**  
以下示例删除具有源数据库实例资源标识符 `db-123ABCEXAMPLE` 的保留自动备份。  
对于 Linux、macOS 或 Unix：  

```
1. aws rds delete-db-instance-automated-backup \
2.     --dbi-resource-id db-123ABCEXAMPLE
```
对于 Windows：  

```
1. aws rds delete-db-instance-automated-backup ^
2.     --dbi-resource-id db-123ABCEXAMPLE
```

## RDS API
<a name="USER_WorkingWithAutomatedBackups-Deleting.API"></a>

可以通过使用 Amazon RDS API 操作 [DeleteDBInstanceAutomatedBackup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBInstanceAutomatedBackup.html) 及以下参数删除保留的自动备份。
+ `DbiResourceId` – 源数据库实例的资源标识符。

  可以通过使用 Amazon RDS API 操作 [DescribeDBInstanceAutomatedBackups](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstanceAutomatedBackups.html) 查找保留自动备份的源数据库实例的资源标识符。

## 禁用自动备份
<a name="USER_WorkingWithAutomatedBackups.Disabling"></a>

在某些情况下（例如，加载大量数据时），您可能希望临时禁用自动备份。

**重要**  
我们强烈建议不要禁用自动备份，因为该操作会禁用时间点恢复。禁用数据库实例或多可用区数据库集群的自动备份将删除此数据库的所有现有自动备份。如果在禁用后又重新启用自动备份，则只能从重新启用自动备份的时间开始进行还原。

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

**立即禁用自动备份**

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

1. 在导航窗格中，选择**数据库**，然后选择要修改的数据库实例或多可用区数据库集群。

1. 选择**修改**。

1. 对于 **Backup retention period (备份保留期)**，选择 **0 days (0 天)**。

1. 选择 **Continue (继续)**。

1. 选择**立即应用**。

1. 选择**修改数据库实例**或**修改集群**以保存更改并禁用自动备份。

### AWS CLI
<a name="USER_WorkingWithAutomatedBackups.Disabling.CLI"></a>

要立即禁用自动备份，请使用 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 或 [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) 命令并使用 `--apply-immediately` 将备份保留期设置为 0。

**Example**  
以下示例立即禁用多可用区数据库集群上的自动备份。  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-cluster \
    --db-cluster-identifier mydbcluster \
    --backup-retention-period 0 \
    --apply-immediately
```
对于 Windows：  

```
aws rds modify-db-cluster ^
    --db-cluster-identifier mydbcluster ^
    --backup-retention-period 0 ^
    --apply-immediately
```

要了解修改的生效时间，请对于数据库实例调用 `describe-db-instances`（或对于多可用区数据库集群调用 `describe-db-clusters`），直至备份保留期的值为 0 且 `mydbcluster` 状态可用。

```
aws rds describe-db-clusters --db-cluster-identifier mydcluster
```

### RDS API
<a name="USER_WorkingWithAutomatedBackups.Disabling.API"></a>

要立即禁用自动备份，请使用以下参数调用 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 或 [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) 操作：
+ `DBInstanceIdentifier = mydbinstance` – 、 或 `DBClusterIdentifier = mydbcluster`
+ `BackupRetentionPeriod = 0`

**Example**  

```
https://rds.amazonaws.com/
    ?Action=ModifyDBInstance
    &DBInstanceIdentifier=mydbinstance
    &BackupRetentionPeriod=0
    &SignatureVersion=2
    &SignatureMethod=HmacSHA256
    &Timestamp=2009-10-14T17%3A48%3A21.746Z
    &AWSAccessKeyId=<&AWS; Access Key ID>
    &Signature=<Signature>
```

# 使用不支持的 MySQL 存储引擎进行自动备份
<a name="Overview.BackupDeviceRestrictions"></a>

对于 MySQL 数据库引擎，仅支持将自动备份用于 InnoDB 存储引擎。将这些功能与 MyISAM 等其他 MySQL 存储引擎配合使用，可能会导致在从备份还原时出现性能不可靠问题。具体而言，由于类似 MyISAM 的存储引擎不支持可靠的崩溃恢复，因此如果发生崩溃，就可能会损坏您的表。为此，我们建议您使用 InnoDB 存储引擎。
+ 要将现有的 MyISAM 表转换为 InnoDB 表，您可以使用 `ALTER TABLE` 命令，例如：`ALTER TABLE table_name ENGINE=innodb, ALGORITHM=COPY;`
+ 如果选择使用 MyISAM，您可以尝试使用 `REPAIR` 命令手动修复崩溃后损坏的表。有关更多信息，请参阅 MySQL 文档中的 [REPAIR TABLE 语句](https://dev.mysql.com/doc/refman/8.0/en/repair-table.html)。然而，正如 MySQL 文档所指出，您可能再也不能恢复所有数据。
+ 如果要在还原前拍摄 MyISAM 表的快照，请执行以下步骤：

  1. 停止 MyISAM 表的所有活动（即关闭所有会话）。

     可以通过为从 `SHOW FULL PROCESSLIST` 命令返回的每个进程调用 [mysql.rds\$1kill](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.MySQL.CommonDBATasks.html) 命令来关闭所有会话。

  1. 锁定并刷新每个 MyISAM 表。例如，以下命令锁定并刷新两个名为 `myisam_table1` 和 `myisam_table2` 的表：

     ```
     mysql> FLUSH TABLES myisam_table, myisam_table2 WITH READ LOCK;
     ```

  1. 创建数据库实例或多可用区数据库集群的快照。完成快照后，释放 MyISAM 表上的锁定和恢复活动。可以使用以下命令为表解锁：

     ```
     mysql> UNLOCK TABLES;
     ```

  这些步骤强制 MyISAM 将存储在内存中的数据刷新到磁盘上，这可确保从数据库快照还原后，以清空状态开始下一操作。有关创建数据库快照的更多信息，请参阅[为 Amazon RDS 的单可用区数据库实例创建数据库快照](USER_CreateSnapshot.md)。

# 使用不支持的 MariaDB 存储引擎进行自动备份
<a name="Overview.BackupDeviceRestrictionsMariaDB"></a>

对于 MariaDB 数据库引擎，仅支持将自动备份与 InnoDB 存储引擎配合使用。将这些功能与 Aria 等其他 MariaDB 存储引擎配合使用，可能会导致在从备份还原时出现性能不可靠问题。即使 Aria 是用来防止崩溃的 MyISAM 的替代品，您的表仍可能在崩溃时损坏。为此，我们建议您使用 InnoDB 存储引擎。
+ 要将现有的 Aria 表转换为 InnoDB 表，您可以使用 `ALTER TABLE` 命令。例如：`ALTER TABLE table_name ENGINE=innodb, ALGORITHM=COPY;`
+ 如果选择使用 Aria，您可以尝试使用 `REPAIR TABLE` 命令手动修复崩溃后损坏的表。有关更多信息，请参阅 [http://mariadb.com/kb/en/mariadb/repair-table/](http://mariadb.com/kb/en/mariadb/repair-table/)。
+ 如果要在还原前拍摄 Aria 表的快照，请执行以下步骤：

  1. 停止 Aria 表的所有活动 (即关闭所有会话)。

  1. 锁定并刷新每个 Aria 表。

  1. 创建数据库实例或多可用区数据库集群的快照。完成快照后，释放 Aria 表上的锁定和恢复活动。这些步骤强制 Aria 将存储在内存中的数据刷新到磁盘上，从而确保从数据库快照还原后，以清空状态开始下一操作。

# 将自动备份复制到其他 AWS 区域
<a name="USER_ReplicateBackups"></a>

要添加灾难恢复功能，您可以将 Amazon RDS 数据库实例配置为将快照和事务日志复制到所选的目标 AWS 区域。为数据库实例配置备份复制时，RDS 会在数据库实例上的所有快照和事务日志准备就绪后立刻启动跨区域副本。

数据库快照副本需支付数据传输费用。复制数据库快照后，将为目标区域的存储量收取标准费用。有关更多详细信息，请参阅 [RDS 定价](https://aws.amazon.com/rds/oracle/pricing/)。

有关使用备份复制的示例，请参阅 AWS 在线技术研讨会：[使用 Amazon RDS for Oracle 跨区域自动备份的托管式灾难恢复](https://pages.awscloud.com/Managed-Disaster-Recovery-with-Amazon-RDS-for-Oracle-Cross-Region-Automated-Backups_2021_0908-DAT_OD.html)。

**注意**  
多可用区数据库集群不支持自动备份复制功能。但是，多可用区数据库实例部署支持此功能。有关自动备份的限制的更多信息，请参阅 [Amazon RDS 的配额和限制](CHAP_Limits.md)。

有关为 Amazon RDS 配置和管理自动备份的信息，请参阅以下主题。

**主题**
+ [启用 Amazon RDS 的跨区域自动备份](AutomatedBackups.Replicating.Enable.md)
+ [查找有关 Amazon RDS 的复制备份的信息](AutomatedBackups.Replicating.Describe.md)
+ [从 Amazon RDS 的复制备份还原到指定时间](AutomatedBackups.PiTR.md)
+ [停止 Amazon RDS 的自动备份复制](AutomatedBackups.StopReplicating.md)
+ [删除 Amazon RDS 的复制备份](AutomatedBackups.Delete.md)
+ [对停止的跨区域自动备份进行故障排除](AutomatedXREGBackups.Troubleshooting.md)

## 多可用区部署支持
<a name="USER_ReplicateBackups.Multi-AZ-deployments"></a>

对于以下引擎，多可用区数据库实例部署支持跨区域自动备份复制：
+ RDS for Db2
+ RDS for MariaDB
+ RDS for MySQL
+ RDS for Oracle
+ RDS for PostgreSQL
+ RDS for SQL Server

多可用区数据库集群不支持跨区域自动备份复制。

## 区域和版本可用性
<a name="USER_ReplicateBackups.RegionVersionAvailability"></a>

功能可用性和支持因每个数据库引擎的特定版本以及 AWS 区域而异。有关跨区域自动备份的版本和区域可用性的更多信息，请参阅[支持 Amazon RDS 中跨区域自动备份的区域和数据库引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.CrossRegionAutomatedBackups.md)。

## 源和目标 AWS 区域 支持
<a name="USER_ReplicateBackups.Regions"></a>

以下 AWS 区域之间支持备份复制：


****  

| 源区域 | 可用目标区域 | 
| --- | --- | 
| 非洲（开普敦） |  欧洲地区（法兰克福）、欧洲地区（爱尔兰）、欧洲地区（伦敦）  | 
| 亚太地区（香港） | 亚太地区（新加坡）、亚太地区（东京） | 
| 亚太地区（海得拉巴） | 亚太地区（孟买） | 
| 亚太地区（雅加达） | 亚太地区（马来西亚）、亚太地区（新加坡） | 
| 亚太地区（墨尔本） | 亚太地区（悉尼） | 
| 亚太地区（马来西亚） | 亚太地区（新加坡） | 
| 亚太地区（孟买） |  亚太地区（海得拉巴）、亚太地区（新加坡） 美国东部（弗吉尼亚州北部）、美国东部（俄亥俄州）、美国西部（俄勒冈州）  | 
| 亚太地区（大阪） | 亚太区域（东京） | 
| 亚太地区 (首尔) |  亚太地区（新加坡）、亚太地区（东京） 美国东部（弗吉尼亚州北部）、美国东部（俄亥俄州）、美国西部（俄勒冈州）  | 
| 亚太地区（新加坡） |  亚太地区（香港）、亚太地区（马来西亚）、亚太地区（孟买）、亚太地区（首尔）、亚太地区（悉尼）、亚太地区（东京） 美国东部（弗吉尼亚州北部）、美国东部（俄亥俄州）、美国西部（俄勒冈州）  | 
| 亚太地区（悉尼） |  亚太地区（墨尔本）、亚太地区（新加坡） 美国东部（弗吉尼亚州北部）、美国西部（加利福尼亚北部）、美国西部（俄勒冈州）  | 
| 亚太地区（东京） |  亚太地区（香港）、亚太地区（大阪）、亚太地区（首尔）、亚太地区（新加坡） 美国东部（弗吉尼亚州北部）、美国东部（俄亥俄州）、美国西部（俄勒冈州）  | 
| 加拿大 (中部) |  加拿大西部（卡尔加里） 欧洲地区（爱尔兰） 美国东部（弗吉尼亚北部）、美国东部（俄亥俄）、美国西部（加利福尼亚北部）、美国西部（俄勒冈）  | 
| 加拿大西部（卡尔加里） | 加拿大（中部） | 
| 中国（北京） | China (Ningxia) | 
| 中国（宁夏） | 中国（北京） | 
| 欧洲地区（法兰克福） |  非洲（开普敦） 欧洲地区（爱尔兰）、欧洲地区（伦敦）、欧洲地区（巴黎）、欧洲地区（斯德哥尔摩）、欧洲（苏黎世） 美国东部（弗吉尼亚州北部）、美国东部（俄亥俄州）、美国西部（俄勒冈州）  | 
| 欧洲地区（爱尔兰） |  非洲（开普敦） 加拿大（中部） 欧洲地区（法兰克福）、欧洲地区（伦敦）、欧洲地区（巴黎）、欧洲地区（斯德哥尔摩）、欧洲（苏黎世） 美国东部（弗吉尼亚州北部）、美国东部（俄亥俄州）、美国西部（加利福尼亚北部）、美国西部（俄勒冈州）  | 
| 欧洲地区（伦敦） |  非洲（开普敦） 欧洲（法兰克福）、欧洲（爱尔兰）、欧洲（巴黎）、欧洲（斯德哥尔摩） 美国东部（弗吉尼亚州北部）  | 
| 欧洲地区（米兰） |  欧洲地区（法兰克福）  | 
| 欧洲地区（巴黎） |  欧洲（法兰克福）、欧洲（伦敦）、欧洲（巴黎）、欧洲（斯德哥尔摩） 美国东部（弗吉尼亚州北部）  | 
| 欧洲（西班牙） |  欧洲地区（爱尔兰）、欧洲地区（巴黎）  | 
| 欧洲地区（斯德哥尔摩） |  欧洲（法兰克福）、欧洲（伦敦）、欧洲（巴黎）、欧洲（斯德哥尔摩） 美国东部（弗吉尼亚州北部）  | 
| 欧洲（苏黎世） | 欧洲（法兰克福）、欧洲（爱尔兰） | 
| 以色列（特拉维夫） | 欧洲地区（爱尔兰） | 
| 中东（阿联酋） | 欧洲地区（法兰克福） | 
| 南美洲（圣保罗） | 美国东部（弗吉尼亚州北部）、美国东部（俄亥俄州） | 
| AWS GovCloud（美国东部） | AWS GovCloud（美国西部） | 
| AWS GovCloud（美国西部） | AWS GovCloud（美国东部） | 
| 美国东部（弗吉尼亚北部） |  亚太地区（孟买）、亚太地区（首尔）、亚太地区（悉尼）、亚太地区（东京） Canada (Central) 欧洲（法兰克福）、欧洲（伦敦）、欧洲（巴黎）、欧洲（斯德哥尔摩） 南美洲（圣保罗） 美国东部（弗吉尼亚州北部）、美国西部（加利福尼亚北部）、美国西部（俄勒冈州）  | 
| US East (Ohio) |  亚太地区（孟买）、亚太地区（首尔）、亚太地区（悉尼）、亚太地区（东京） Canada (Central) 欧洲（法兰克福）、欧洲（爱尔兰） 南美洲（圣保罗） 美国东部（弗吉尼亚州北部）、美国西部（加利福尼亚北部）、美国西部（俄勒冈州）  | 
| 美国西部（加利福尼亚北部） |  亚太地区（悉尼） 加拿大（中部） 欧洲（爱尔兰） 美国东部（弗吉尼亚州北部）、美国东部（俄亥俄州）、美国西部（俄勒冈州）  | 
| 美国西部（俄勒冈州） |  亚太地区（孟买）、亚太地区（首尔）、亚太地区（悉尼）、亚太地区（东京） Canada (Central) 欧洲（法兰克福）、欧洲（爱尔兰） 美国东部（弗吉尼亚州北部）、美国东部（俄亥俄州）、美国西部（加利福尼亚北部）  | 

您还可以使用 `describe-source-regions` AWS CLI 命令找出哪些 AWS 区域可以相互复制。有关更多信息，请参阅 [查找有关 Amazon RDS 的复制备份的信息](AutomatedBackups.Replicating.Describe.md)。

## 限制
<a name="USER_ReplicateBackups.Limitations"></a>

以下限制适用于 Amazon RDS 的跨区域自动备份。
+ 多可用区数据库集群不支持自动备份复制功能。
+ 默认情况下，每个 AWS 账户最多具有 20 个跨区域自动备份。

# 启用 Amazon RDS 的跨区域自动备份
<a name="AutomatedBackups.Replicating.Enable"></a>

您可以使用 Amazon RDS 控制台对新的或现有的数据库实例启用备份复制。您还可以使用 `start-db-instance-automated-backups-replication` AWS CLI 命令或 `StartDBInstanceAutomatedBackupsReplication` RDS API 操作。对于每个 AWS 区域，您可以将多达 20 个备份复制到每个目标 AWS 账户。

**注意**  
为了能够复制自动备份，请确保启用它们。有关更多信息，请参阅 [启用自动备份](USER_WorkingWithAutomatedBackups.Enabling.md)。

## 控制台
<a name="AutomatedBackups.Replicating.Enable.Console"></a>

您可以为新的或现有的数据库实例启用备份复制：
+ 对于新的数据库实例，请在启动实例时将其启用。有关更多信息，请参阅“[数据库实例的设置](USER_CreateDBInstance.Settings.md)”。
+ 对于现有数据库实例，请按以下流程操作。

**如欲为现有数据库实例启用备份复制**

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

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

1. 在**当前区域**选项卡上，选择要为其启用备份复制的数据库实例。

1. 对于**操作**，选择**管理跨区域复制**。

1. 在 **Backup replication**（备份复制）下，选择 **Enable replication to another AWS 区域**（启用复制到其他 AWS 区域）。

1. 选择**目标区域**。

1. 选择**复制备份保留期**。

1. 如果您已在源数据库实例上启用加密，请选择用于加密备份的 **AWS KMS key** 或输入密钥 ARN。

1. 选择**保存**。

在源区域中，复制备份在**自动备份**页面的**当前区域**选项卡上列出。在目标区域中，复制备份在**自动备份**页面的**复制备份**选项卡上列出。

## AWS CLI
<a name="AutomatedBackups.Replicating.Enable.CLI"></a>

使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/start-db-instance-automated-backups-replication.html](https://docs.aws.amazon.com/cli/latest/reference/rds/start-db-instance-automated-backups-replication.html) AWS CLI 命令启用备份复制。

以下 CLI 示例将自动备份从美国西部（俄勒冈州）区域中的数据库实例复制到美国东部（弗吉尼亚州北部）地区。它还使用目标区域中的 AWS KMS key 对复制的备份进行加密。

**如欲启用备份复制**
+ 运行以下命令之一。

  对于 Linux、macOS 或 Unix：

  ```
  aws rds start-db-instance-automated-backups-replication \
  --region us-east-1 \
  --source-db-instance-arn "arn:aws:rds:us-west-2:123456789012:db:mydatabase" \
  --kms-key-id "arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE" \
  --backup-retention-period 7
  ```

  对于 Windows：

  ```
  aws rds start-db-instance-automated-backups-replication ^
  --region us-east-1 ^
  --source-db-instance-arn "arn:aws:rds:us-west-2:123456789012:db:mydatabase" ^
  --kms-key-id "arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE" ^
  --backup-retention-period 7
  ```

  在 AWS GovCloud（美国东部）和 AWS GovCloud（美国西部）区域之间加密备份时需要 `--source-region` 选项。对于 `--source-region`，指定源数据库实例的 AWS 区域。

  如果未指定 `--source-region`，请务必指定 `--pre-signed-url` 值。*预签名 URL* 包含签名版本 4 签名的请求，该请求用于在源 `start-db-instance-automated-backups-replication`中调用的 AWS 区域 命令。要了解有关 `pre-signed-url` 选项的更多信息，请参阅《AWS CLI 命令参考》中的 [start-db-instance-automated-backups-replication](https://docs.aws.amazon.com/cli/latest/reference/rds/start-db-instance-automated-backups-replication.html)。

## RDS API
<a name="AutomatedBackups.Replicating.Enable.API"></a>

使用带以下参数的 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_StartDBInstanceAutomatedBackupsReplication.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_StartDBInstanceAutomatedBackupsReplication.html) RDS API 操作来启用备份复制：
+ `Region`（如果您不是从目标区域调用 API 操作）
+ `SourceDBInstanceArn`
+ `BackupRetentionPeriod`
+ `KmsKeyId`（可选）
+ `PreSignedUrl`（在您使用 时必需）`KmsKeyId`

**注意**  
如果您对备份进行加密，则还必须包含预签名 URL。有关预签名 URL 的更多信息，请参阅 *Amazon Simple Storage Service API 参考*中的[验证请求：使用查询参数（AWS签名版本 4）](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)和*AWS一般参考*中的[签名版本 4 签名流程](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。

# 查找有关 Amazon RDS 的复制备份的信息
<a name="AutomatedBackups.Replicating.Describe"></a>

您可以使用以下 CLI 命令查找有关复制备份的信息：
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-source-regions.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-source-regions.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instance-automated-backups.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instance-automated-backups.html)

以下 `describe-source-regions` 示例列出了其中的自动备份可以复制到美国西部（俄勒冈州）目标区域的源 AWS 区域。

**如欲显示有关源区域的信息**
+ 运行以下命令。

  ```
  aws rds describe-source-regions --region us-west-2
  ```

输出显示备份可以从 US East (N. Virginia) 而不能从 美国东部（俄亥俄州） 或 美国西部（加利福尼亚北部） 复制到 美国西部（俄勒冈州） 中。

```
{
    "SourceRegions": [
        ...
        {
            "RegionName": "us-east-1",
            "Endpoint": "https://rds.us-east-1.amazonaws.com",
            "Status": "available",
            "SupportsDBInstanceAutomatedBackupsReplication": true
        },
        {
            "RegionName": "us-east-2",
            "Endpoint": "https://rds.us-east-2.amazonaws.com",
            "Status": "available",
            "SupportsDBInstanceAutomatedBackupsReplication": false
        },
            "RegionName": "us-west-1",
            "Endpoint": "https://rds.us-west-1.amazonaws.com",
            "Status": "available",
            "SupportsDBInstanceAutomatedBackupsReplication": false
        }
    ]
}
```

以下 `describe-db-instances` 示例显示了数据库实例的自动备份。

**如欲显示数据库实例的复制备份**
+ 运行以下命令之一。

  对于 Linux、macOS 或 Unix：

  ```
  aws rds describe-db-instances \
  --db-instance-identifier mydatabase
  ```

  对于 Windows：

  ```
  aws rds describe-db-instances ^
  --db-instance-identifier mydatabase
  ```

输出包括复制备份。

```
{
    "DBInstances": [
        {
            "StorageEncrypted": false,
            "Endpoint": {
                "HostedZoneId": "Z1PVIF0B656C1W",
                "Port": 1521,
            ...

            "BackupRetentionPeriod": 7,
            "DBInstanceAutomatedBackupsReplications": [{"DBInstanceAutomatedBackupsArn": "arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE"}]
        }
    ]
}
```

以下 `describe-db-instance-automated-backups` 示例显示了数据库实例的自动备份。

**如欲显示数据库实例的自动备份**
+ 运行以下命令之一。

  对于 Linux、macOS 或 Unix：

  ```
  aws rds describe-db-instance-automated-backups \
  --db-instance-identifier mydatabase
  ```

  对于 Windows：

  ```
  aws rds describe-db-instance-automated-backups ^
  --db-instance-identifier mydatabase
  ```

输出显示了 美国西部（俄勒冈州） 中的源数据库实例和自动备份，且备份已复制到 US East (N. Virginia)。

```
{
    "DBInstanceAutomatedBackups": [
        {
            "DBInstanceArn": "arn:aws:rds:us-west-2:868710585169:db:mydatabase",
            "DbiResourceId": "db-L2IJCEXJP7XQ7HOJ4SIEXAMPLE",
            "DBInstanceAutomatedBackupsArn": "arn:aws:rds:us-west-2:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE",
            "BackupRetentionPeriod": 7,
            "DBInstanceAutomatedBackupsReplications": [{"DBInstanceAutomatedBackupsArn": "arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE"}]
            "Region": "us-west-2",
            "DBInstanceIdentifier": "mydatabase",
            "RestoreWindow": {
                "EarliestTime": "2020-10-26T01:09:07Z",
                "LatestTime": "2020-10-31T19:09:53Z",
            }
            ...
        }
    ]
}
```

以下 `describe-db-instance-automated-backups` 示例使用 `--db-instance-automated-backups-arn` 选项来显示目标区域中的复制备份。

**如欲显示复制备份**
+ 运行以下命令之一。

  对于 Linux、macOS 或 Unix：

  ```
  aws rds describe-db-instance-automated-backups \
  --db-instance-automated-backups-arn "arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE"
  ```

  对于 Windows：

  ```
  aws rds describe-db-instance-automated-backups ^
  --db-instance-automated-backups-arn "arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE"
  ```

输出显示了 美国西部（俄勒冈州） 中的源数据库实例，以及 US East (N. Virginia) 中的复制备份。

```
{
    "DBInstanceAutomatedBackups": [
        {
            "DBInstanceArn": "arn:aws:rds:us-west-2:868710585169:db:mydatabase",
            "DbiResourceId": "db-L2IJCEXJP7XQ7HOJ4SIEXAMPLE",
            "DBInstanceAutomatedBackupsArn": "arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE",
            "Region": "us-west-2",
            "DBInstanceIdentifier": "mydatabase",
            "RestoreWindow": {
                "EarliestTime": "2020-10-26T01:09:07Z",
                "LatestTime": "2020-10-31T19:01:23Z"
            },
            "AllocatedStorage": 50,
            "BackupRetentionPeriod": 7,
            "Status": "replicating",
            "Port": 1521,
            ...
        }
    ]
}
```

# 从 Amazon RDS 的复制备份还原到指定时间
<a name="AutomatedBackups.PiTR"></a>

您可以使用 Amazon RDS 控制台将数据库实例从复制备份还原到特定时间点。您还可以使用 `restore-db-instance-to-point-in-time` AWS CLI 命令或 `RestoreDBInstanceToPointInTime` RDS API 操作。

有关时间点恢复 (PITR) 的一般信息，请参阅 [将 Amazon RDS 的数据库实例还原到指定时间](USER_PIT.md)。

**注意**  
在跨 AWS 区域复制自动备份时，请注意以下数据库引擎限制：  
在 RDS for SQL Server 上，不会复制选项组。
在 RDS for Oracle 上，不会复制以下选项：`NATIVE_NETWORK_ENCRYPTION`、`OEM`、`OEM_AGENT` 和 `SSL`。
如果您已将自定义选项组与 数据库实例关联，则可以在目标区域中重新创建该选项组。然后在目标区域中还原数据库实例，并将自定义选项组与其关联。有关更多信息，请参阅 [使用选项组](USER_WorkingWithOptionGroups.md)。

## 控制台
<a name="AutomatedBackups.PiTR.Console"></a>

**将数据库实例从复制备份还原到指定时间**

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

1. 从区域选择器中选择目标区域（备份复制到其中的区域）。

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

1. 在**复制备份**选项卡上，选择要还原的数据库实例。

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

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

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

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

1. （可选）根据需要选择其他选项，例如启用自动扩展。

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

## AWS CLI
<a name="AutomatedBackups.PiTR.CLI"></a>

使用命令 [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) AWS CLI 创建新的数据库实例。

**将数据库实例从复制备份还原到指定时间**
+ 运行以下命令之一。

  对于 Linux、macOS 或 Unix：

  ```
  1. aws rds restore-db-instance-to-point-in-time \
  2.     --source-db-instance-automated-backups-arn "arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE" \
  3.     --target-db-instance-identifier mytargetdbinstance \
  4.     --restore-time 2020-10-14T23:45:00.000Z
  ```

  对于 Windows：

  ```
  1. aws rds restore-db-instance-to-point-in-time ^
  2.     --source-db-instance-automated-backups-arn "arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE" ^
  3.     --target-db-instance-identifier mytargetdbinstance ^
  4.     --restore-time 2020-10-14T23:45:00.000Z
  ```

## RDS API
<a name="AutomatedBackups.PiTR.API"></a>

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

# 停止 Amazon RDS 的自动备份复制
<a name="AutomatedBackups.StopReplicating"></a>

您可以使用 Amazon RDS 控制台停止数据库实例的备份复制。您还可以使用 `stop-db-instance-automated-backups-replication` AWS CLI 命令或 `StopDBInstanceAutomatedBackupsReplication` RDS API 操作。

复制备份已保留，但受创建时设置的备份保留期的限制。

## 控制台
<a name="AutomatedBackups.StopReplicating.Console"></a>

从源区域的**自动备份**页面停止备份复制。

**停止向 AWS 区域的备份复制**

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

1. 从**区域选择器**中选择源区域。

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

1. 在**当前区域**选项卡上，选择要停止备份复制的数据库实例。

1. 对于**操作**，选择**管理跨区域复制**。

1. 在 **Backup replication**（备份复制）下，清除 **Enable replication to another AWS 区域**（启用复制到其他 AWS 区域）复选框。

1. 选择**保存**。

在目标区域中，复制备份在**自动备份**页面的**保留**选项卡上列出。

## AWS CLI
<a name="AutomatedBackups.StopReplicating.CLI"></a>

使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/stop-db-instance-automated-backups-replication.html](https://docs.aws.amazon.com/cli/latest/reference/rds/stop-db-instance-automated-backups-replication.html) AWS CLI 命令停止备份复制。

以下 CLI 示例停止在 美国西部（俄勒冈州） 区域中复制数据库实例的自动备份。

**如欲停止备份复制**
+ 运行以下命令之一。

  对于 Linux、macOS 或 Unix：

  ```
  aws rds stop-db-instance-automated-backups-replication \
  --region us-east-1 \
  --source-db-instance-arn "arn:aws:rds:us-west-2:123456789012:db:mydatabase"
  ```

  对于 Windows：

  ```
  aws rds stop-db-instance-automated-backups-replication ^
  --region us-east-1 ^
  --source-db-instance-arn "arn:aws:rds:us-west-2:123456789012:db:mydatabase"
  ```

## RDS API
<a name="AutomatedBackups.StopReplicating.API"></a>

使用带以下参数的 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_StopDBInstanceAutomatedBackupsReplication.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_StopDBInstanceAutomatedBackupsReplication.html) RDS API 操作停止备份复制：
+ `Region`
+ `SourceDBInstanceArn`

# 删除 Amazon RDS 的复制备份
<a name="AutomatedBackups.Delete"></a>

您可以使用 Amazon RDS 控制台删除数据库实例的复制备份。您还可以使用 `delete-db-instance-automated-backups` AWS CLI 命令或 `DeleteDBInstanceAutomatedBackup` RDS API 操作。

## 控制台
<a name="AutomatedBackups.Delete.Console"></a>

从**自动备份**页面中删除目标区域中的复制备份。

**如欲删除复制备份**

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

1. 从**区域选择器**中选择目标区域。

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

1. 在**复制备份**选项卡上，选择要删除其复制备份的数据库实例。

1. 对于 **Actions (操作)**，选择 **Delete (删除)**。

1. 在确认页面上，输入 **delete me** 并选择 **Delete (删除)**。

## AWS CLI
<a name="AutomatedBackups.Delete.CLI"></a>

使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-instance-automated-backup.html](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-instance-automated-backup.html) AWS CLI 命令删除复制备份。

您可以使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) CLI 命令查找复制备份的 Amazon Resource Name (ARN)。有关更多信息，请参阅“[查找有关 Amazon RDS 的复制备份的信息](AutomatedBackups.Replicating.Describe.md)”。

**如欲删除复制备份**
+ 运行以下命令之一。

  对于 Linux、macOS 或 Unix：

  ```
  aws rds delete-db-instance-automated-backup \
  --db-instance-automated-backups-arn "arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE"
  ```

  对于 Windows：

  ```
  aws rds delete-db-instance-automated-backup ^
  --db-instance-automated-backups-arn "arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE"
  ```

## RDS API
<a name="AutomatedBackups.Delete.API"></a>

使用带 `DeleteDBInstanceAutomatedBackup` 参数的 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBInstanceAutomatedBackup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBInstanceAutomatedBackup.html) RDS API 操作删除复制备份。

# 对停止的跨区域自动备份进行故障排除
<a name="AutomatedXREGBackups.Troubleshooting"></a>

 在特定情况下，Amazon RDS 会自动停止跨区域自动备份复制，以保护您的数据并维护 AWS 运营要求合规性。

## 账户暂停
<a name="AutomatedXREGBackups.Troubleshooting.AccountSuspension"></a>

如果您的 AWS 账户暂停，Amazon RDS 会自动停止该账户中所有数据库实例的跨区域自动备份复制。目标 AWS 区域中已存在的复制备份将在您指定的保留期内一直保留。

账户暂停问题得到解决后，您必须手动重新启用跨区域自动备份复制，以便恢复向目标 AWS 区域复制备份。

## 选择加入区域更改
<a name="AutomatedXREGBackups.Troubleshooting.OptInRegion"></a>

当您选择退出源 AWS 区域（主数据库实例所在的区域）或目标 AWS 区域（备份复制到的区域）时，跨区域自动备份复制会自动停止。有关选择加入区域的更多信息，请参阅[管理 AWS 区域](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)。

目标 AWS 区域中已存在的复制备份将在您指定的保留期内一直保留。要恢复复制，请重新选择加入所需的 AWS 区域，然后手动重新启用跨区域自动备份复制。

## AWS KMS 密钥问题
<a name="AutomatedXREGBackups.Troubleshooting.KMSKey"></a>

对于加密的数据库实例，Amazon RDS 需要访问源和目标 AWS 区域中的 AWS KMS 密钥，才能复制备份。如果您在其中任何一个 AWS 区域中禁用或删除 AWS KMS 密钥，则跨区域自动备份复制将自动停止。目标 AWS 区域中已存在的复制备份将在您指定的保留期内一直保留。

要恢复跨区域自动备份复制，请执行以下操作：

1. 重新启用禁用的 AWS KMS 密钥，或者如果原始密钥已被删除，则创建一个新的 AWS KMS 密钥

1. 如果使用新的 AWS KMS 密钥，请删除目标 AWS 区域中使用先前密钥加密的现有复制备份。

1. 为实例重新启用跨区域自动备份复制

有关管理 AWS KMS 密钥的更多信息，请参阅 [AWS Key Management Service 文档](https://docs.aws.amazon.com/kms/latest/developerguide/)。

**注意**  
除非重新启用先前的 AWS KMS 密钥，否则您无法从目标 AWS 区域中的先前复制备份进行恢复。备份保持加密状态，如果没有有效的 AWS KMS 密钥，则无法访问。

## 监控备份复制状态
<a name="AutomatedXREGBackups.Troubleshooting.Monitoring"></a>

您可以使用 Amazon RDS 控制台、AWS CLI 或 RDS API 监控跨区域自动备份的状态。有关更多信息，请参阅 [查找有关 Amazon RDS 的复制备份的信息](AutomatedBackups.Replicating.Describe.md)。

# 管理手动备份
<a name="USER_ManagingManualBackups"></a>

本节介绍如何管理数据库实例和数据库集群的手动备份。

有关为Single-AZ数据库实例创建数据库快照的信息，请参阅[为 Amazon RDS 的单可用区数据库实例创建数据库快照](USER_CreateSnapshot.md)。

有关为多可用区数据库集群创建数据库快照的信息，请参阅[创建 Amazon RDS 的多可用区数据库集群快照](USER_CreateMultiAZDBClusterSnapshot.md)。

有关删除数据库快照的信息，请参阅[删除 Amazon RDS 的数据库快照](USER_DeleteSnapshot.md)。

# 为 Amazon RDS 的单可用区数据库实例创建数据库快照
<a name="USER_CreateSnapshot"></a>

Amazon RDS 创建数据库实例的存储卷快照，并备份整个数据库实例而不仅仅是单个数据库。在单可用区数据库实例上创建此数据库快照会导致 I/O 短暂性停止，可持续数秒至数分钟，具体取决于数据库实例的大小和类。对于 MariaDB、MySQL、Oracle 和 PostgreSQL，多可用区部署的备份期间不会暂停主数据库上的 I/O 活动，因为备份获取自备用数据库。对于 SQL Server，多可用区部署的备份期间将短时间暂停 I/O 活动。

创建数据库快照时，需要识别出将要备份的数据库实例，然后为数据库快照命名，以便稍后从此快照还原。创建快照所用时间因数据库大小而异。由于快照包含整个存储卷，因此，文件 (如临时文件) 的大小也会影响创建快照所需时间。

**注意**  
数据库实例必须处于 `available` 状态才能拍摄数据库快照。  
对于 PostgreSQL 数据库实例，未记录表中的数据可能无法从快照还原。有关更多信息，请参阅“[使用 PostgreSQL 的最佳实践](CHAP_BestPractices.md#CHAP_BestPractices.PostgreSQL)”。

与自动备份不同，手动快照不受备份保留期的限制。快照不会过期。

对于 MariaDB、MySQL 和 PostgreSQL 数据的非常长期的备份，我们建议将快照数据导出到 Amazon S3。如果不再支持数据库引擎的主要版本，则无法从快照还原到该版本。有关更多信息，请参阅“[将 Amazon RDS 的数据库快照数据导出到 Amazon S3](USER_ExportSnapshot.md)”。

您可以使用 AWS 管理控制台​、AWS CLI 或 RDS API 创建数据库快照。

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

**创建数据库快照**

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

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

   将显示**手动快照**列表。

1. 选择**拍摄快照**。

   将显示 **Take DB snapshot (拍摄数据库快照)** 窗口。  
![\[拍摄数据库快照。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/take_db_snapshot.png)

1. 选择您要拍摄快照的**数据库实例**。

1. 输入**快照名称**。

1. 选择**拍摄快照**。

此时将显示**手动快照**列表，其中新数据库快照的状态显示为 `Creating`。在其状态为 `Available` 后，您可以看到其创建时间。

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

使用 AWS CLI 创建数据库快照时，需要识别出将要备份的数据库实例，然后为数据库快照命名，以便稍后从此快照还原。结合以下参数使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-snapshot.html) 命令执行该操作：
+ `--db-instance-identifier`
+ `--db-snapshot-identifier`

在此示例中，您将给名为 *mydbinstance* 的数据库实例创建名为 *mydbsnapshot* 的数据库快照。

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

```
1. aws rds create-db-snapshot \
2.     --db-instance-identifier mydbinstance \
3.     --db-snapshot-identifier mydbsnapshot
```
对于：Windows  

```
1. aws rds create-db-snapshot ^
2.     --db-instance-identifier mydbinstance ^
3.     --db-snapshot-identifier mydbsnapshot
```

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

使用 Amazon RDS API 创建数据库快照时，需要指定要备份的数据库实例，然后为数据库快照命名，以便稍后从此快照还原。您可以使用具有以下参数的 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBSnapshot.html) 命令执行该操作：
+ `DBInstanceIdentifier`
+ `DBSnapshotIdentifier`

# 创建 Amazon RDS 的多可用区数据库集群快照
<a name="USER_CreateMultiAZDBClusterSnapshot"></a>

创建多可用区数据库集群快照时，请确保标识要备份的多可用区数据库集群，然后为数据库集群快照命名，以便稍后从此快照还原。您也可以共享多可用区数据库集群快照。有关说明，请参阅 [共享 Amazon RDS 的数据库快照](USER_ShareSnapshot.md)。

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 创建多可用区数据库集群快照。

对于非常长期的备份，我们建议将快照数据导出到 Amazon S3。如果不再支持数据库引擎的主要版本，则无法从快照还原到该版本。有关更多信息，请参阅 [将 Amazon RDS 的数据库快照数据导出到 Amazon S3](USER_ExportSnapshot.md)。

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

**创建数据库集群快照**

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

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

1. 在列表中，请选择要为其创建快照的多可用区数据库集群。

1. 对于**操作**，选择**拍摄快照**。

   将显示 **Take DB snapshot (拍摄数据库快照)** 窗口。

1. 在 **Snapshot name**（快照名称）框中，请输入快照的名称。

1. 选择**拍摄快照**。

**Snapshots**（快照）页面将会显示，其中新多可用区数据库集群快照的状态将显示为 `Creating`。在其状态为 `Available` 后，您可以看到其创建时间。

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

您可以使用 AWS CLI [create-db-cluster-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster-snapshot.html) 命令来创建多可用区数据库集群快照，该命令带有以下选项：
+ `--db-cluster-identifier`
+ `--db-cluster-snapshot-identifier`

在此示例中，您将为名为 *`mymultiazdbcluster`* 的数据库集群创建名为 *`mymultiazdbclustersnapshot`* 的多可用区数据库集群快照。

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

```
1. aws rds create-db-cluster-snapshot \
2.     --db-cluster-identifier mymultiazdbcluster \
3.     --db-cluster-snapshot-identifier mymultiazdbclustersnapshot
```
对于 Windows：  

```
1. aws rds create-db-cluster-snapshot ^
2.     --db-cluster-identifier mymultiazdbcluster ^
3.     --db-cluster snapshot-identifier mymultiazdbclustersnapshot
```

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

您可以使用 Amazon RDS API [CreateDBClusterSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBClusterSnapshot.html) 操作创建多可用区数据库集群快照，并采用以下参数：
+ `DBClusterIdentifier`
+ `DBClusterSnapshotIdentifier`

## 删除多可用区数据库集群快照
<a name="USER_DeleteMultiAZDBClusterSnapshot"></a>

如果不再需要，您可以删除 Amazon RDS 管理的多可用区数据库快照。有关说明，请参阅 [删除 Amazon RDS 的数据库快照](USER_DeleteSnapshot.md)。

# 删除 Amazon RDS 的数据库快照
<a name="USER_DeleteSnapshot"></a>

如果不再需要，您可以删除 Amazon RDS 管理的数据库快照。

**注意**  
要删除 AWS Backup 管理的备份，请使用 AWS Backup 控制台。有关 AWS Backup 的更多信息，请参阅 [https://docs.aws.amazon.com/aws-backup/latest/devguide](https://docs.aws.amazon.com/aws-backup/latest/devguide)。

## 删除数据库快照
<a name="USER_DeleteRDSSnapshot"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 删除手动、共享或公共数据库快照。

要删除共享或公共快照，您必须登录到拥有快照的 AWS 账户。

如果您有要删除的自动数据库快照，但不希望删除数据库实例，请将数据库实例的备份保留期更改为 0。当更改生效时，自动快照将被删除。如果您不想等到下一个维护期，则可以立即应用更改。完成更改后，您可以通过将备份保留期设置为大于 0 的数字重新启用自动备份。有关修改 数据库实例的信息，请参阅[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

保留的自动备份和手动快照会一直产生账单费用，直到将其删除为止。有关更多信息，请参阅 [保留成本](USER_WorkingWithAutomatedBackups.Retaining.md#USER_WorkingWithAutomatedBackups.RetentionCosts)。

如果您删除了数据库实例，您可以通过删除数据库实例的自动备份删除其自动数据库快照。有关自动备份的信息，请参阅 [备份简介](USER_WorkingWithAutomatedBackups.md)。

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

**删除数据库快照**

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

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

   将显示**手动快照**列表。

1. 选择要删除的数据库快照。

1. 对于 **Actions**（操作），选择 **Delete snapshot**（删除快照）。  
![\[删除快照\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/delete-snapshot.png)

1. 在确认页面上选择 **Delete (删除)**。  
![\[确认快照删除\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/delete-snapshot-confirm.png)

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

您可以使用 AWS CLI 命令 [delete-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-snapshot.html) 删除数据库快照。

以下选项用于删除数据库快照。
+ `--db-snapshot-identifier` – 数据库快照的标识符。

**Example**  
以下代码删除 `mydbsnapshot` 数据库快照。  
对于 Linux、macOS 或 Unix：  

```
1. aws rds delete-db-snapshot \
2.     --db-snapshot-identifier mydbsnapshot
```
对于：Windows  

```
1. aws rds delete-db-snapshot ^
2.     --db-snapshot-identifier mydbsnapshot
```

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

您可以使用 Amazon RDS API 操作 [DeleteDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBSnapshot.html) 删除数据库快照。

以下参数用于删除数据库快照。
+ `DBSnapshotIdentifier` – 数据库快照的标识符。

# 还原到数据库实例
<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)


# 复制 Amazon RDS 的数据库快照
<a name="USER_CopySnapshot"></a>

使用 Amazon RDS，您可以复制自动备份或手动数据库快照。在复制快照后，该副本为手动快照。可以创建自动备份或手动快照的多个副本，但每个副本必须具有唯一的标识符。

您可以复制位于同一 AWS 区域中的快照，可以跨 AWS 区域复制快照，也可以复制共享快照。您只需一个步骤即可将快照复制到另一个 AWS 区域或账户。

## 复制数据库快照
<a name="USER_CopyDBSnapshot"></a>

对于每个 AWS 账户，一次最多可以从一个 AWS 区域向另一个区域复制 20 个数据库快照。如果您将数据库快照复制到另一个 AWS 区域，则可创建保留在该 AWS 区域中的手动数据库快照。从源 AWS 区域复制出数据库快照会产生 Amazon RDS 数据传输费用。

有关数据传输定价的更多信息，请参阅 [Amazon RDS 定价](https://aws.amazon.com/rds/pricing/)。

在新 AWS 区域中创建数据库快照副本后，该数据库快照副本的行为与该 AWS 区域中所有其他数据库快照的行为相同。

您可以使用 AWS 管理控制台​、AWS CLI 或 RDS API 复制数据库快照。

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

以下过程使用 AWS 管理控制台，在同一 AWS 区域中或跨区域复制加密或未加密数据库快照。

**复制数据库快照**

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

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

1. 选择要复制的数据库快照。

1. 对于 **Actions (操作)**，请选择 **Copy snapshot (复制快照)**。

   会显示 **Copy snapshot (复制快照)** 页面。  
![\[复制数据库快照\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/DBSnapshotCopy1.png)

1. 对于 **Target option group (optional)** [目标选项组（可选）]，如果需要，则选择新的选项组。

   如果将快照从一个 AWS 区域复制到另一个区域，并且数据库实例使用非默认选项组，则指定该选项。

   如果源数据库实例为 Oracle 或 Microsoft SQL Server 使用透明数据加密，则在跨区域复制时必须指定该选项。有关更多信息，请参阅 [选项组的注意事项](#USER_CopySnapshot.Options)。

1. （可选）要将数据库快照复制到其他 AWS 区域，请对 **Destination Region**（目标区域）选择新 AWS 区域。
**注意**  
目标 AWS 区域必须具有与源 AWS 区域相同的可用数据库引擎版本。

1. 对于 **New DB snapshot identifier**（新数据库快照标识符），键入数据库快照副本的名称。

   可以创建自动备份或手动快照的多个副本，但每个副本必须具有唯一的标识符。

1. (可选) 选择 **Copy Tags (复制标签)** 将标签和值从快照复制到快照的副本。

1. （可选）对于**加密**，请执行以下操作：

   1. 如果数据库快照未加密，但需要加密副本，请选择 **Enable Encryption (启用加密)**。
**注意**  
如果数据库快照已加密，则必须对副本进行加密，因此已选中复选框。

   1. 对于 **AWS KMS key**，指定用于加密数据库快照副本的 KMS 密钥标识符。

1. 选择 **Copy snapshot (复制快照)**。

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

您可以使用 AWS CLI 命令 [copy-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-snapshot.html) 复制数据库快照。如果您将快照复制到新 AWS 区域，请在新 AWS 区域中运行命令。

以下选项用于复制数据库快照。并非所有情况下都需要所有选项。使用以下说明和示例来确定要使用的选项。
+ `--source-db-snapshot-identifier` – 源数据库快照的标识符。
  + 如果源快照与副本位于同一 AWS 区域中，则指定有效的数据库快照标识符。例如 `rds:mysql-instance1-snapshot-20130805`。
  + 如果源快照与副本位于同一 AWS 区域中，并且已与您的 AWS 账户共享，则指定有效的数据库快照 ARN。例如 `arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805`。
  + 如果源快照与副本位于不同 AWS 区域，则指定有效的数据库快照 ARN。例如：`arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805`。
  + 如果从共享的手动数据库快照进行复制，则该参数必须为共享的数据库快照的 Amazon Resource Name (ARN)。
  + 如果您复制加密快照，则此参数对于源 AWS 区域必须为 ARN 格式，并且必须匹配 `PreSignedUrl` 参数中的 `SourceDBSnapshotIdentifier`。
+ `--target-db-snapshot-identifier` – 加密数据库快照的新副本的标识符。
+ `--copy-option-group` – 从已与您的 AWS 账户 共享的快照中复制选项组。
+ `--copy-tags` – 包括复制标签选项以将标签和值从快照复制到快照的副本。
+ `--option-group-name` – 与快照的副本关联的选项组。

  如果将快照从一个 AWS 区域复制到另一个区域，并且数据库实例使用非默认选项组，则指定该选项。

  如果源数据库实例为 Oracle 或 Microsoft SQL Server 使用透明数据加密，则在跨区域复制时必须指定该选项。有关更多信息，请参阅 [选项组的注意事项](#USER_CopySnapshot.Options)。
+ `--kms-key-id` – 加密的数据库快照的 KMS 密钥标识符。KMS 密钥标识符是 Amazon Resource Name (ARN)、密钥标识符或 KMS 密钥的密钥别名。
  + 如果您从 AWS 账户复制加密的数据库快照，则可以为该参数指定值来使用新的 KMS 密钥加密副本。如果您不为该参数指定值，则使用与源数据库快照相同的 KMS 密钥来加密数据库快照的副本。
  + 如果您从其他 AWS 账户复制共享的加密数据库快照，则必须为该参数指定值。
  + 如果您在复制未加密快照时指定该参数，则将加密副本。
  + 如果将加密快照复制到不同 AWS 区域，必须为目标 AWS 区域指定 KMS 密钥。KMS 密钥是特定于创建它们的 AWS 区域，您无法将一个 AWS 区域的加密密钥用于另一个 AWS 区域。

**Example 从未加密快照，到同一区域**  
以下代码使用新名称 `mydbsnapshotcopy`，在与源快照相同的 AWS 区域中创建快照的副本。创建副本时，原始快照上的数据库选项组和标签都复制到快照副本。  
对于 Linux、macOS 或 Unix：  

```
aws rds copy-db-snapshot \
    --source-db-snapshot-identifier arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805 \
    --target-db-snapshot-identifier mydbsnapshotcopy \
    --copy-option-group \
    --copy-tags
```
对于：Windows  

```
aws rds copy-db-snapshot ^
    --source-db-snapshot-identifier arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805 ^
    --target-db-snapshot-identifier mydbsnapshotcopy ^
    --copy-option-group ^
    --copy-tags
```

**Example 从未加密快照，跨区域**  
以下代码使用新名称 `mydbsnapshotcopy`，在运行命令的 AWS 区域中创建快照的副本。  
对于 Linux、macOS 或 Unix：  

```
aws rds copy-db-snapshot \
    --source-db-snapshot-identifier arn:aws:rds:us-east-1:123456789012:snapshot:mysql-instance1-snapshot-20130805 \
    --target-db-snapshot-identifier mydbsnapshotcopy
```
对于：Windows  

```
aws rds copy-db-snapshot ^
    --source-db-snapshot-identifier arn:aws:rds:us-east-1:123456789012:snapshot:mysql-instance1-snapshot-20130805 ^
    --target-db-snapshot-identifier mydbsnapshotcopy
```

**Example 从加密快照，跨区域**  
以下代码示例将加密的数据库快照从美国西部（俄勒冈州）区域复制到美国东部（弗吉尼亚州北部）。在目标 (us-east-1) 区域运行该命令。  
对于 Linux、macOS 或 Unix：  

```
aws rds copy-db-snapshot \
    --source-db-snapshot-identifier arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20161115 \
    --target-db-snapshot-identifier mydbsnapshotcopy \
    --kms-key-id my-us-east-1-key \ 
    --option-group-name custom-option-group-name
```
对于：Windows  

```
aws rds copy-db-snapshot ^
    --source-db-snapshot-identifier arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20161115 ^
    --target-db-snapshot-identifier mydbsnapshotcopy ^
    --kms-key-id my-us-east-1-key ^
    --option-group-name custom-option-group-name
```

在 AWS GovCloud（美国东部）和 AWS GovCloud（美国西部）区域之间复制加密快照时需要 `--source-region` 参数。对于 `--source-region`，指定源数据库实例的 AWS 区域。

如果未指定 `--source-region`，请指定 `--pre-signed-url` 值。*预签名 URL* 包含签名版本 4 签名的请求，该请求用于在源 AWS 区域中调用的 `copy-db-snapshot` 命令。要了解有关 `pre-signed-url` 选项的更多信息，请参阅《AWS CLI 命令参考》**中的 [ copy-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-snapshot.html)。

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

您可以使用 Amazon RDS API 操作 [CopyDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyDBSnapshot.html) 复制数据库快照。如果您将快照复制到新 AWS 区域，请在新 AWS 区域中执行操作。

以下参数用于复制数据库快照。并非所有情况下都需要所有参数。使用以下说明和示例来确定要使用的参数。
+ `SourceDBSnapshotIdentifier` – 源数据库快照的标识符。
  + 如果源快照与副本位于同一 AWS 区域中，则指定有效的数据库快照标识符。例如 `rds:mysql-instance1-snapshot-20130805`。
  + 如果源快照与副本位于同一 AWS 区域中，并且已与您的 AWS 账户共享，则指定有效的数据库快照 ARN。例如 `arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805`。
  + 如果源快照与副本位于不同 AWS 区域，则指定有效的数据库快照 ARN。例如：`arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805`。
  + 如果从共享的手动数据库快照进行复制，则该参数必须为共享的数据库快照的 Amazon Resource Name (ARN)。
  + 如果您复制加密快照，则此参数对于源 AWS 区域必须为 ARN 格式，并且必须匹配 `PreSignedUrl` 参数中的 `SourceDBSnapshotIdentifier`。
+ `TargetDBSnapshotIdentifier` – 加密数据库快照的新副本的标识符。
+ `CopyOptionGroup` – 将该参数设置为 `true` 可将选项组从共享快照复制到快照的副本。默认值为 `false`。
+ `CopyTags` – 将该参数设置为 `true` 可将标签和值从快照复制到快照的副本。默认为 `false`。
+ `OptionGroupName` – 与快照的副本关联的选项组。

  如果将快照从一个 AWS 区域复制到另一个区域，并且数据库实例使用非默认选项组，则指定该参数。

  如果源数据库实例为 Oracle 或 Microsoft SQL Server 使用透明数据加密，则在跨区域复制时必须指定该参数。有关更多信息，请参阅 [选项组的注意事项](#USER_CopySnapshot.Options)。
+ `KmsKeyId` – 加密的数据库快照的 KMS 密钥标识符。KMS 密钥标识符是 Amazon Resource Name (ARN)、密钥标识符或 KMS 密钥的密钥别名。
  + 如果您从 AWS 账户复制加密的数据库快照，则可以为该参数指定值来使用新的 KMS 密钥加密副本。如果您不为该参数指定值，则使用与源数据库快照相同的 KMS 密钥来加密数据库快照的副本。
  + 如果您从其他 AWS 账户复制共享的加密数据库快照，则必须为该参数指定值。
  + 如果您在复制未加密快照时指定该参数，则将加密副本。
  + 如果将加密快照复制到不同 AWS 区域，必须为目标 AWS 区域指定 KMS 密钥。KMS 密钥特定于创建它们的 AWS 区域，您无法将一个 AWS 区域中的加密密钥用于另一个 AWS 区域。
+ `PreSignedUrl` – 在包含要复制的源数据库快照的源 AWS 区域中，`CopyDBSnapshot` API 操作的包含签名版本 4 签名请求的 URL。

  使用 Amazon RDS API 从其他 AWS 区域复制加密数据库快照时，请指定此参数。使用 AWS CLI 从其他 AWS 区域复制加密数据库快照时，必须指定源区域选项而非此参数。

  预签名 URL 必须是对 `CopyDBSnapshot` API 操作的有效请求，该操作能够在包含要复制的加密数据库快照的源 AWS 区域中运行。预签名 URL 请求必须包含以下参数值：
  + `DestinationRegion` – 加密数据库快照将复制到的 AWS 区域。此 AWS 区域与调用包含此预签名 URL 的 `CopyDBSnapshot` 操作的区域为同一区域。

    例如，假设将加密的数据库快照从 us-west-2 区域复制到 us-east-1 区域。然后您在 us-east-1 区域中调用 `CopyDBSnapshot` 操作，并提供预签名 URL，该 URL 中包含在 us-west-2 区域中对 `CopyDBSnapshot` 操作的调用。对于本示例，预签名 URL 中的 `DestinationRegion` 必须设置为 us-east-1 区域。
  + `KmsKeyId` – 要用于对目标 中的数据库快照副本进行加密的密钥的 KMS 密钥标识符。AWS 区域这与在目标 `CopyDBSnapshot`中调用的 AWS 区域 操作以及预签名 URL 中包含的操作所用的标识符相同。
  + `SourceDBSnapshotIdentifier` – 复制的加密快照的数据库快照标识符。对于源 AWS 区域，此标识符必须采用 Amazon 资源名称（ARN）格式。例如，如果您从 us-west-2 区域复制加密数据库快照，则 `SourceDBSnapshotIdentifier` 应类似于以下示例：`arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20161115`。

  有关签名版本 4 签名请求的更多信息，请参阅：
  + Amazon Simple Storage Service API 参考中的对请求进行身份验证：[使用查询参数（AWS 签名版本 4）](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)
  + AWS 一般参考 中的[签名版本 4 签名流程](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)

**Example 从未加密快照，到同一区域**  
以下代码使用新名称 `mydbsnapshotcopy`，在与源快照相同的 AWS 区域中创建快照的副本。创建副本时，原始快照上的所有标签都将复制到快照副本。  

```
https://rds.us-west-1.amazonaws.com/
	?Action=CopyDBSnapshot
	&CopyTags=true
	&SignatureMethod=HmacSHA256
	&SignatureVersion=4
	&SourceDBSnapshotIdentifier=mysql-instance1-snapshot-20130805
	&TargetDBSnapshotIdentifier=mydbsnapshotcopy
	&Version=2013-09-09
	&X-Amz-Algorithm=AWS4-HMAC-SHA256
	&X-Amz-Credential=AKIADQKE4SARGYLE/20140429/us-west-1/rds/aws4_request
	&X-Amz-Date=20140429T175351Z
	&X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
	&X-Amz-Signature=9164337efa99caf850e874a1cb7ef62f3cea29d0b448b9e0e7c53b288ddffed2
```

**Example 从未加密快照，跨区域**  
以下代码使用新名称 `mydbsnapshotcopy`，在 美国西部（加利福尼亚北部） 区域中创建快照的副本。  

```
https://rds.us-west-1.amazonaws.com/
	?Action=CopyDBSnapshot
	&SignatureMethod=HmacSHA256
	&SignatureVersion=4
	&SourceDBSnapshotIdentifier=arn%3Aaws%3Ards%3Aus-east-1%3A123456789012%3Asnapshot%3Amysql-instance1-snapshot-20130805
	&TargetDBSnapshotIdentifier=mydbsnapshotcopy
	&Version=2013-09-09
	&X-Amz-Algorithm=AWS4-HMAC-SHA256
	&X-Amz-Credential=AKIADQKE4SARGYLE/20140429/us-west-1/rds/aws4_request
	&X-Amz-Date=20140429T175351Z
	&X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
	&X-Amz-Signature=9164337efa99caf850e874a1cb7ef62f3cea29d0b448b9e0e7c53b288ddffed2
```

**Example 从加密快照，跨区域**  
以下代码使用新名称 `mydbsnapshotcopy`，在 US East (N. Virginia) 区域中创建快照的副本。  

```
https://rds.us-east-1.amazonaws.com/
    ?Action=CopyDBSnapshot
    &KmsKeyId=my-us-east-1-key
    &OptionGroupName=custom-option-group-name
    &PreSignedUrl=https%253A%252F%252Frds.us-west-2.amazonaws.com%252F
         %253FAction%253DCopyDBSnapshot
         %2526DestinationRegion%253Dus-east-1
         %2526KmsKeyId%253Dmy-us-east-1-key
         %2526SourceDBSnapshotIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%25253A123456789012%25253Asnapshot%25253Amysql-instance1-snapshot-20161115
         %2526SignatureMethod%253DHmacSHA256
         %2526SignatureVersion%253D4
         %2526Version%253D2014-10-31
         %2526X-Amz-Algorithm%253DAWS4-HMAC-SHA256
         %2526X-Amz-Credential%253DAKIADQKE4SARGYLE%252F20161117%252Fus-west-2%252Frds%252Faws4_request
         %2526X-Amz-Date%253D20161117T215409Z
         %2526X-Amz-Expires%253D3600
         %2526X-Amz-SignedHeaders%253Dcontent-type%253Bhost%253Buser-agent%253Bx-amz-content-sha256%253Bx-amz-date
         %2526X-Amz-Signature%253D255a0f17b4e717d3b67fad163c3ec26573b882c03a65523522cf890a67fca613
    &SignatureMethod=HmacSHA256
    &SignatureVersion=4
    &SourceDBSnapshotIdentifier=arn%3Aaws%3Ards%3Aus-west-2%3A123456789012%3Asnapshot%3Amysql-instance1-snapshot-20161115
    &TargetDBSnapshotIdentifier=mydbsnapshotcopy
    &Version=2014-10-31
    &X-Amz-Algorithm=AWS4-HMAC-SHA256
    &X-Amz-Credential=AKIADQKE4SARGYLE/20161117/us-east-1/rds/aws4_request
    &X-Amz-Date=20161117T221704Z
    &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
    &X-Amz-Signature=da4f2da66739d2e722c85fcfd225dc27bba7e2b8dbea8d8612434378e52adccf
```

## 限制
<a name="USER_CopySnapshot.Limitations"></a>

复制快照时，存在以下一些限制：
+ 无法将快照复制到中国（北京）区域或 中国（宁夏）区域或从这两个区域复制快照。
+  您可以在 AWS GovCloud（美国东部）和 AWS GovCloud（美国西部）之间复制快照。但是，您不能在这些 GovCloud（美国）区域和非 GovCloud（美国）区域的区域之间复制快照。
+ 如果您在目标快照可用之前删除了源快照，则快照复制会失败。在删除源快照之前，请确保目标快照的状态为 `AVAILABLE`。
+ 每个账户最多可以同时进行到同一目标区域的 20 个快照复制请求。
+ 当您为同一源数据库实例请求多个快照副本时，它们将在内部排队。在先前的快照副本完成之后，稍后请求的副本才会启动。有关更多信息，请参阅 AWS 知识中心里的[为什么我的 EC2 AMI 或 EBS 快照创建速度很慢？](https://aws.amazon.com/premiumsupport/knowledge-center/ebs-snapshot-ec2-ami-creation-slow/)。
+ 根据所涉及的 AWS 区域和要复制的数据量，可能需要数小时才能完成跨区域快照复制。有时，某一给定的源区域可能会发出大量跨区域快照复制请求。在这种情况下，Amazon RDS 可能会将来自该源区域的新跨区域复制请求排入队列，直至某些区域正在进行的复制完成。当复制请求在队列中时，不显示有关这些复制请求的进度信息。复制开始后即显示进度信息。
+ 如果某个副本在您启动另一个副本时仍处于挂起状态，则第二个副本在第一个副本完成后才开始。
+ 您无法复制多可用区数据库集群的快照
+ 您只能将使用 io2 卷的数据库实例的快照复制到有 io2 Block Express 卷可用的 AWS 区域。有关更多信息，请参阅 [Amazon RDS 数据库实例存储](CHAP_Storage.md)。

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

有关复制数据库快照的注意事项，请参阅以下主题。

**Topics**
+ [

### 快照保留
](#USER_CopySnapshot.Retention)
+ [

### 共享快照复制注意事项
](#USER_CopySnapshot.Shared)
+ [

### 加密快照复制的注意事项
](#USER_CopySnapshot.Encryption)
+ [

### 增量快照复制的注意事项
](#USER_CopySnapshot.Incremental)
+ [

### 跨区域快照复制的注意事项
](#USER_CopySnapshot.AcrossRegions)
+ [

### 选项组的注意事项
](#USER_CopySnapshot.Options)
+ [

### 参数组的注意事项
](#USER_CopySnapshot.Parameters)

### 快照保留
<a name="USER_CopySnapshot.Retention"></a>

在以下几种情况下，Amazon RDS 会删除自动备份：
+ 在保留期结束时。
+ 对数据库实例禁用自动备份时。
+ 删除数据库实例时。

如果要长期保留自动快照，则可复制它以创建一个手动快照。该快照在您删除之前将会一直保留。如果手动快照超出了默认存储空间，则可能会产生 Amazon RDS 存储成本。

有关备份存储成本的更多信息，请参阅 [Amazon RDS 定价](https://aws.amazon.com/rds/pricing/)。

### 共享快照复制注意事项
<a name="USER_CopySnapshot.Shared"></a>

您可以复制其他 AWS 账户与您共享的快照。在某些情况下，您可以从另一个 AWS 账户复制共享的加密快照。在这些情况下，您必须有权访问用于加密快照的 AWS KMS key。

**注意**  
对于您复制的共享快照，将向您收取 Amazon RDS 存储费用。Amazon RDS 可能会将源数据库实例的 ARN 附加到您复制的快照中。

您可以跨 AWS 区域复制共享数据库快照，前提是该快照未加密。

**注意**  
如果未加密或使用与初始完整快照相同的 KMS 密钥进行加密，则支持在同一 AWS 区域中复制共享增量快照。如果您在复制后续快照时使用其他 KMS 密钥对其进行加密，则这些共享快照是完整快照。有关更多信息，请参阅 [增量快照复制的注意事项](#USER_CopySnapshot.Incremental)。

#### 跨区域和跨账户复制只需一个步骤
<a name="cross-region-cross-account-copy"></a>

 要在单个操作中跨区域和跨账户复制快照，必须先与目标 AWS 账户共享快照。如果快照已加密，则还必须与目标 AWS 账户共享 AWS KMS 密钥。如果快照使用默认 AWS KMS 密钥加密，则必须先复制快照以使用客户管理的密钥对其进行重新加密，然后再与目标账户共享。共享后，您可以从目标账户发起对该账户的复制操作（同区域或跨区域）。

### 加密快照复制的注意事项
<a name="USER_CopySnapshot.Encryption"></a>

您可以复制已使用 KMS 密钥加密的快照。如果您复制加密的快照，则此快照的副本也必须加密。如果在同一 AWS 区域内复制加密的快照，可使用与原始快照相同的 KMS 密钥加密此副本。也可指定不同的 KMS 密钥。

如果跨区域复制加密快照，则必须指定在目标 AWS 区域中有效的 KMS 密钥。该密钥可以是某个区域的专用 KMS 密钥，也可以是多区域密钥。有关多区域 KMS 密钥的更多信息，请参阅[在 AWS KMS 中使用多区域密钥](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)。

源快照在复制过程中保持加密状态。有关更多信息，请参阅“[Amazon RDS 加密的数据库实例的限制](Overview.Encryption.md#Overview.Encryption.Limitations)”。

您还可加密未加密快照的副本。这样，您可以快速为之前未加密的数据库实例增加加密功能。为此，您可在准备好加密数据库实例快照时创建该快照。然后创建该快照的副本并指定一个 KMS 密钥来加密该快照副本。之后您可从加密的快照还原加密的数据库实例。

**重要**  
当您在 Amazon RDS 等托管式服务的 AWS KMS 密钥策略中对所有资源（\$1）使用显式拒绝语句时，您必须指定一个条件来支持拥有资源的账户。如果没有此条件，复制操作可能会失败，即使拒绝规则中包含针对您的 IAM 用户的例外情况也是如此。

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

#### 复制加密快照所需的权限
<a name="USER_CopySnapshot.Encryption.Permissions"></a>

要复制加密的数据库快照，您的用户必须具有以下权限以使用 Amazon RDS 加密。
+ `kms:DescribeKey`
+ `kms:CreateGrant`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKey`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncrypt`

如果您使用 IAM 策略条件来限制 AWS KMS 授权操作，请确保您的策略包含 Amazon RDS 所需的所有操作。如果您在跨区域复制加密快照时收到 `KMSKeyNotAccessibleFault` 错误，请验证您的 IAM 策略是否包含上述所有必需的 AWS KMS 授权操作。

### 增量快照复制的注意事项
<a name="USER_CopySnapshot.Incremental"></a>

*增量*快照仅包含在同一数据库实例的最近快照后发生更改的数据。与完整快照复制相比，增量快照复制速度更快，产生的存储成本更低。

快照副本是否为增量副本是由最近完成的快照副本和源快照决定的。如果删除了最新的快照副本，则下一个副本是完整副本，而不是增量副本。快照副本的类型将与源快照相同。如果源快照是增量快照，则快照副本将是增量快照。增量还取决于自最近一次快照以来源数据库实例中发生的更改次数。

在跨 AWS 账户复制快照时，仅当满足以下所有条件时，副本才是增量副本：
+ 最新的快照副本是同一个源数据库实例的副本，并且仍位于目标账户中。
+ 目标账户中的所有快照副本均未加密，或者是使用同一 KMS 密钥加密的。如果副本是加密的，则它们必须具有相同的谱系，即在相应级别具有匹配的继承深度和一致的加密密钥。
+ 如果源数据库实例是多可用区实例，则自上次从该实例拍摄快照以来，它从未故障转移到其他可用区。

以下示例说明了完整快照和增量快照之间的区别。同样适用于共享快照和非共享快照。


| 快照 | 加密密钥 | 完整或增量 | 
| --- | --- | --- | 
| S1 | K1 | 完整 | 
| S2 | K1 | S1 的增量 | 
| S3 | K1 | S2 的增量 | 
| S4 | K1 | S3 的增量 | 
| S1 (S1C) 的副本 | K2 | 完整 | 
| S2 (S2C) 的副本 | K3 | 完整 | 
| S3 (S3C) 的副本 | K3 | S2C 的增量 | 
| S4 (S4C) 的副本 | K3 | S3C 的增量 | 
| S4 (S4C2) 的副本 2 | K4 | 完整 | 

**注意**  
在这些示例中，仅当先前的快照仍然存在时，快照 S2、S3 和 S4 才是增量快照。  
这同样适用于副本。仅当先前的副本仍然存在时，快照副本 S3C 和 S4C 才是增量副本。

有关跨 AWS 区域复制增量快照的信息，请参阅[完整和增量拷贝](#USER_CopySnapshot.AcrossRegions.Full)。

### 跨区域快照复制的注意事项
<a name="USER_CopySnapshot.AcrossRegions"></a>

您可以跨 AWS 区域复制数据库快照。跨区域快照复制需要支付数据传输费用。跨区域快照复制具有某些限制和注意事项。

#### 请求跨区域数据库快照复制
<a name="USER_CopySnapshot.AcrossRegions.Policy"></a>

要与源区域通信以请求跨区域数据库快照副复制，请求者（IAM 角色或 IAM 用户）必须有权访问源数据库快照和源区域。

请求者的 IAM 策略中的某些条件可能会导致请求失败。以下示例假定您要将数据库快照从 美国东部（俄亥俄州） 复制到 US East (N. Virginia)。这些示例显示了请求者的 IAM 策略中导致请求失败的条件：
+ 请求者的策略对于 `aws:RequestedRegion` 具有条件限制。

  ```
  ...
  "Effect": "Allow",
  "Action": "rds:CopyDBSnapshot",
  "Resource": "*",
  "Condition": {
      "StringEquals": {
          "aws:RequestedRegion": "us-east-1"
      }
  }
  ```

  请求失败，因为该策略不允许访问源区域。要想请求成功，请指定源区域和目标区域。

  ```
  ...
  "Effect": "Allow",
  "Action": "rds:CopyDBSnapshot",
  "Resource": "*",
  "Condition": {
      "StringEquals": {
          "aws:RequestedRegion": [
              "us-east-1",
              "us-east-2"
          ]
      }
  }
  ```
+ 请求者的策略不允许访问源数据库快照。

  ```
  ...
  "Effect": "Allow",
  "Action": "rds:CopyDBSnapshot",
  "Resource": "arn:aws:rds:us-east-1:123456789012:snapshot:target-snapshot"
  ...
  ```

  要想请求成功，请指定源快照和目标快照。

  ```
  ...
  "Effect": "Allow",
  "Action": "rds:CopyDBSnapshot",
  "Resource": [
      "arn:aws:rds:us-east-1:123456789012:snapshot:target-snapshot",
      "arn:aws:rds:us-east-2:123456789012:snapshot:source-snapshot"
  ]
  ...
  ```
+ 请求者的政策拒绝 `aws:ViaAWSService`。

  ```
  ...
  "Effect": "Allow",
  "Action": "rds:CopyDBSnapshot",
  "Resource": "*",
  "Condition": {
      "Bool": {"aws:ViaAWSService": "false"}
  }
  ```

  与源区域的通信由 RDS 代表请求者进行。要想请求成功，请不要拒绝 AWS 服务发出的调用。
+ 请求者的策略对于 `aws:SourceVpc` 或 `aws:SourceVpce` 具有条件限制。

  这些请求可能会失败，因为 RDS 对远程区域进行调用时，它并非来自指定的 VPC 或 VPC 端点。

如果您需要使用可能导致请求失败的上述某个条件，则可以在策略中包含第二个带有 `aws:CalledVia` 的语句，以便请求成功。例如，您可以使用带有 `aws:CalledVia` 的 `aws:SourceVpce`，如下所示：

```
...
"Effect": "Allow",
"Action": "rds:CopyDBSnapshot",
"Resource": "*",
"Condition": {
    "Condition" : { 
        "ForAnyValue:StringEquals" : {
          "aws:SourceVpce": "vpce-1a2b3c4d"
        }
     }
},
{
    "Effect": "Allow",
    "Action": [
        "rds:CopyDBSnapshot"
    ],
    "Resource": "*",
    "Condition": {
        "ForAnyValue:StringEquals": {
            "aws:CalledVia": [
                "rds.amazonaws.com"
            ]
        }
    }
}
```

有关更多信息，请参阅 *IAM 用户指南*中的 [IAM 中的策略和权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。

#### 授权快照副本
<a name="USER_CopySnapshot.AcrossRegions.Auth"></a>

跨区域数据库快照复制请求返回 `success` 后，RDS 将在后台启动副本。已创建 RDS 访问源快照的授权。此授权将源数据库快照链接到目标数据库快照，并允许 RDS 仅复制到指定的目标快照。

 RDS 使用服务链接的 IAM 角色中的 `rds:CrossRegionCommunication` 权限对授权进行验证。如果副本获得授权，RDS 将与源区域通信并完成复制。

 RDS 无权访问之前未经 `CopyDBSnapshot` 请求授权的数据库快照。复制完成后，将撤销授权。

 RDS 使用服务链接的角色来验证源区域中的授权。如果在复制过程中删除了服务链接的角色，则复制将失败。

有关更多信息，请参阅 *IAM 用户指南*中的[使用服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)。

#### 使用 AWS Security Token Service 凭证
<a name="USER_CopySnapshot.AcrossRegions.assumeRole"></a>

来自全局 AWS Security Token Service (AWS STS) 端点的会话令牌仅在默认启用的 AWS 区域（商业区域）中有效。在 `assumeRole` 中使用来自 AWS STS API 操作的凭证时， 如果源区域是选择加入区域，请使用区域端点。否则，请求将失败。发生这种情况的原因是，您的凭证必须在两个区域都有效，而在使用区域 AWS STS 端点时，仅选择加入区域有效。

要使用全局端点，请确保在操作中为两个区域都启用了该端点。在 AWS STS 账户设置中将全局端点设置为 `Valid in all AWS 区域`。

 同样的规则也适用于预签名 URL 参数中的凭证。

有关更多信息，请参阅《IAM 用户指南》**中的[在 AWS 区域 中管理 AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html)。

#### 延迟和多个复制请求
<a name="USER_CopySnapshot.AcrossRegions.Latency"></a>

根据所涉及的 AWS 区域和要复制的数据量，可能需要数小时才能完成跨区域快照复制。

有时，某一给定的源 AWS 区域可能会发出大量跨区域快照复制请求。在这种情况下，Amazon RDS 可能会将来自该源 AWS 区域的新跨区域复制请求排入队列，直至某些正在进行的复制完成。当复制请求在队列中时，不显示有关这些复制请求的进度信息。复制开始后即显示进度信息。

#### 完整和增量拷贝
<a name="USER_CopySnapshot.AcrossRegions.Full"></a>

在向与源快照不同的 AWS 区域复制快照时，即使复制增量快照，第一个副本也是完整快照副本。完整快照副本包含还原数据库实例需要的所有数据和元数据。在第一个快照副本后，可将同一数据库实例的增量快照复制到同一个 AWS 账户内的相同目标区域。有关增量快照的更多信息，请参阅[增量快照复制的注意事项](#USER_CopySnapshot.Incremental)。

已加密和未加密快照均支持跨 AWS 区域的增量快照复制。

在跨 AWS 区域复制快照时，如果满足以下条件，则副本为增量副本：
+ 此前已将快照复制到目标区域。
+ 最新的快照副本仍位于目标区域中。
+ 目标区域中的所有快照副本均未加密，或者是使用同一 KMS 密钥加密的。

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

数据库选项组特定于在其中创建它们的 AWS 区域，您不能将一个 AWS 区域中的选项组用于另一个 AWS 区域。

对于 Oracle 数据库，您可以使用 AWS CLI 或 RDS API 从与您的 AWS 账户共享的快照中复制自定义数据库选项组。您只能在同一 AWS 区域内复制选项组。如果选项组已复制到目标账户，并且在复制后未对其进行任何更改，则不会复制该选项组。如果之前已复制过源选项组，但在复制后发生了变化，则 RDS 会将新版本复制到目标账户。不会复制原定设置选项组。

在您跨区域复制快照时，可以为快照指定新选项组。我们建议您在复制快照之前准备新选项组。在目标 AWS 区域，使用与原始数据库实例相同的设置创建选项组。如果新 AWS 区域中已存在选项组，也可以使用它。

在某些情况下，您可以复制快照而不是为快照指定新的选项组。在这些情况下，还原快照时，数据库实例将获得默认选项组。要为新的数据库实例提供与原始数据库实例相同的选项，请执行以下操作：

1. 在目标 AWS 区域，使用与原始数据库实例相同的设置创建选项组。如果新 AWS 区域中已存在选项组，也可以使用它。

1. 在目标 AWS 区域中还原快照之后，修改新数据库实例，并添加上一步中的新选项组或现有选项组。

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

跨区域复制快照时，复制不包括由原始数据库实例使用的参数组。当您还原快照来创建新数据库实例时，该数据库实例会获得创建该实例的 AWS 区域的默认参数组。要为新的数据库实例提供与源数据库实例相同的参数组，请执行以下操作：

1. 在目标 AWS 区域中，使用与原始数据库实例相同的设置来创建数据库参数组。如果新 AWS 区域中已存在选项组，也可以使用它。

1. 在目标 AWS 区域中还原快照之后，修改新数据库实例，并添加新参数组或上一步中的现有参数组。

# 共享 Amazon RDS 的数据库快照
<a name="USER_ShareSnapshot"></a>

使用 Amazon RDS，您可以按以下方式共享手动数据库快照：
+ 共享手动数据库快照（无论是否加密）可允许经授权的 AWS 账户复制快照。
+ 共享未加密的手动数据库快照可允许经授权的 AWS 账户直接从快照还原数据库实例，而无需复制数据库实例再从中进行还原。但是，您无法从共享并且加密的数据库快照中恢复数据库实例。您可以改为创建数据库快照副本，并从该副本还原数据库实例。

**注意**  
要共享自动数据库快照，请通过复制自动快照来创建手动数据库快照，然后共享该副本。此过程也适用于 AWS Backup 生成的资源。

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

您可以与最多 20 个其他 AWS 账户共享手动快照。

与其它 AWS 账户共享手动快照时以下限制适用：
+ 当使用 AWS Command Line Interface (AWS CLI) 或 Amazon RDS API 从共享的快照还原数据库实例时，您必须指定共享快照的 Amazon 资源名称（ARN）作为快照标识符。
+ 如果数据库快照使用具有永久选项或持久选项的选项组，则不能共享，但具有 `Timezone` 和/或 `OLS` 选项的 Oracle 数据库实例除外。

  不能从选项组中移除*永久*选项。若为数据库实例指定了包含持续性选项的选项组，则不能从数据库实例中删除这些选项组。

  下表列出了永久和持续性选项及其相关的数据库引擎。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_ShareSnapshot.html)

  对于 Oracle 数据库实例，您可以复制具有选项 `Timezone` 或 `OLS`（或两者）的共享数据库快照。为此，在复制数据库快照时，指定一个包含这些选项的目标选项组。OLS 选项仅对于运行 Oracle 12.2 或更高版本的 Oracle 数据库实例具有永久性和持久性。有关这些选项的更多信息，请参阅 [Oracle 时区](Appendix.Oracle.Options.Timezone.md) 和 [Oracle Label Security](Oracle.Options.OLS.md)。
+ 您无法共享多可用区数据库集群的快照。
+ 当快照包含附加存储卷时，您无法共享该快照。

有关共享公有快照、共享加密快照和停止快照共享的信息，请参阅以下主题。

**主题**
+ [共享 Amazon RDS 的公有快照](USER_ShareSnapshot.Public.md)
+ [共享 Amazon RDS 的加密快照](share-encrypted-snapshot.md)
+ [停止 Amazon RDS 的快照共享](share-snapshot-stop.md)

## 共享快照
<a name="USER_ShareSnapshot.Sharing"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 共享数据库快照。

### 控制台
<a name="USER_ShareSnapshot.Console"></a>

使用 Amazon RDS 控制台，您可以与最多 20 个 AWS 账户共享手动数据库快照。您还可以使用该控制台停止与一个或多个账户共享手动快照。

**使用 Amazon RDS 控制台共享手动数据库 快照**

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

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

1. 选择要共享的手动快照。

1. 对于 **Actions**（操作），请选择 **Share snapshot**（共享快照）。

1. 为 **DB snapshot visibility (数据库快照可见性)** 选择以下一个选项。
   + 如果源未加密，则选择**公有**以允许所有 AWS 账户从您的手动数据库快照还原数据库实例，或选择**私有**以仅允许您指定的 AWS 账户从手动数据库快照还原数据库实例。
**警告**  
如果将**数据库快照可见性**设置为**公有**，则所有 AWS 账户均可从您的手动数据库快照还原数据库实例，并且可访问您的数据。请勿将包含私有信息的任何手动数据库快照作为 **Public** 共享。  
有关更多信息，请参阅 [共享 Amazon RDS 的公有快照](USER_ShareSnapshot.Public.md)。
   + 如果源已加密，由于已加密的快照无法公开共享，**DB snapshot visibility (数据库快照可见性)** 将设为 **Private (私密)**。
**注意**  
无法共享已使用默认 AWS KMS key 加密的快照。有关如何解决此问题的信息，请参阅[共享 Amazon RDS 的加密快照](share-encrypted-snapshot.md)。

1. 对于 **AWS 账户 ID**，输入您想要允许从手动快照还原数据库实例的账户的 AWS 账户标识符，然后选择**添加**。重复操作以加入其他 AWS 账户标识符，最多可包含 20 个 AWS 账户。

   如果您在许可账户列表中错加了某个 AWS 账户标识符，可以选择错误 AWS 账户标识符右侧的**删除**将其从列表中删除。  
![\[允许 AWS 账户还原手动数据库快照\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/ShareSnapshot_add.png)

1. 为您想要允许还原手动快照的所有 AWS 账户添加标识符以后，选择**保存**以保存您的更改。

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

要共享数据库快照，请使用 `aws rds modify-db-snapshot-attribute` 命令。使用 `--values-to-add` 参数添加有权还原手动快照的 AWS 账户的 ID 列表。

**Example 与单个账户共享快照**  
以下示例使 AWS 账户标识符 `123456789012` 能够还原名为 `db7-snapshot` 的数据库快照。  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-snapshot-attribute \
--db-snapshot-identifier db7-snapshot \
--attribute-name restore \
--values-to-add 123456789012
```
对于：Windows  

```
aws rds modify-db-snapshot-attribute ^
--db-snapshot-identifier db7-snapshot ^
--attribute-name restore ^
--values-to-add 123456789012
```

**Example 与多个账户共享快照**  
以下示例使两个 AWS 账户标识符（`111122223333` 和 `444455556666`）能够还原名为 `manual-snapshot1` 的数据库快照。  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-snapshot-attribute \
--db-snapshot-identifier manual-snapshot1 \
--attribute-name restore \
--values-to-add {"111122223333","444455556666"}
```
对于：Windows  

```
aws rds modify-db-snapshot-attribute ^
--db-snapshot-identifier manual-snapshot1 ^
--attribute-name restore ^
--values-to-add "[\"111122223333\",\"444455556666\"]"
```
使用 Windows 命令提示符时，必须在 JSON 代码中转义双引号 (")，方法是使用反斜杠 (\$1) 作为其前缀。

要列出能够用于还原快照的 AWS 账户，请使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-snapshot-attributes.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-snapshot-attributes.html) AWS CLI 命令。

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

您还可以使用 Amazon RDS API 与其他 AWS 账户共享手动数据库快照。为此，请调用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBSnapshotAttribute.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBSnapshotAttribute.html) 操作。为 `AttributeName` 指定 `restore`，并使用 `ValuesToAdd` 参数添加有权还原手动快照的 AWS 账户的 ID 列表。

要将手动快照设为公有并允许所有 AWS 账户进行还原，请使用值 `all`。但请注意，若任何手动快照包含您不想向所有 AWS 账户公开的私有信息，则不要添加 `all` 值。此外，由于此类快照不支持公开共享，请不要为已加密的快照指定 `all`。

要列出有权还原快照的所有 AWS 账户，请使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSnapshotAttributes.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSnapshotAttributes.html) API 操作。

# 共享 Amazon RDS 的公有快照
<a name="USER_ShareSnapshot.Public"></a>

您可以将未加密的手动快照作为公有快照进行共享，这样所有 AWS 账户均可使用此快照。当以公有快照形式共享快照时，确保不要将您的私有信息包含在公有快照之中。

公开共享快照时，它会授予所有 AWS 账户复制快照并从中创建数据库实例的权限。

您不需要为其他账户拥有的公有快照的备份存储付费。您只需为您拥有的快照付费。

如果您复制公有快照，则您拥有该副本。您需要为快照副本的备份存储付费。如果您从公有快照创建数据库实例，则需要为该数据库实例付费。有关 Amazon RDS 定价信息，请参阅 [Amazon RDS 产品页](https://aws.amazon.com/rds/pricing)。

您只能删除您拥有的公有快照。要删除共享或公有快照，务必登录到拥有快照的 AWS 账户。

## 查看其他 AWS 账户拥有的公有快照
<a name="USER_ShareSnapshot.Public.View.Console"></a>

您可以在 Amazon RDS 控制台的 **Snapshots (快照)** 页面的 **Public (公有)** 选项卡上查看特定AWS区域中其他账户拥有的公有快照。您的快照（由您账户拥有的快照）不会显示在此选项卡上。

**要查看公有快照**

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

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

1. 选择 **Public (公有)** 选项卡。

   此时将显示公有快照。您可以在 **Owner (拥有者)** 列中查看哪个账户拥有公有快照。
**注意**  
您可能需要通过选择 **Public snapshots (公有快照)** 列表右上角的齿轮图标来修改页面首选项，才能看到此列。

## 查看您拥有的公有快照
<a name="USER_ShareSnapshot.Public.View.CLI"></a>

您可以使用以下 AWS CLI 命令（仅限 Unix）查看特定 AWS 区域中由您的 AWS 账户拥有的公有快照。

```
aws rds describe-db-snapshots --snapshot-type public --include-public | grep account_number
```

如果您有公共快照，则返回的输出与以下示例类似。

```
"DBSnapshotArn": "arn:aws:rds:us-east-1:123456789012:snapshot:mysnapshot1",
"DBSnapshotArn": "arn:aws:rds:us-east-1:123456789012:snapshot:mysnapshot2",
```

**注意**  
您可能会看到 `DBSnapshotIdentifier` 或 `SourceDBSnapshotIdentifier` 的重复条目。

## 共享来自已弃用数据库引擎版本的公有快照
<a name="USER_ShareSnapshot.Public.deprecated"></a>

不支持从已弃用的数据库引擎版本还原或复制公有快照。

RDS for Oracle 和 RDS for PostgreSQL 数据库引擎支持直接升级数据库快照引擎版本。您可以升级快照，然后公开重新共享它们。有关更多信息，请参阅下列内容：
+ [升级 Oracle 数据库快照](USER_UpgradeDBSnapshot.Oracle.md)
+ [升级 PostgreSQL 数据库快照引擎版本](USER_UpgradeDBSnapshot.PostgreSQL.md)

对于其他数据库引擎，请执行以下步骤，使现有的不受支持的公有快照可供还原或复制：

1. 将快照标记为私有。

1. 还原快照。

1. 将还原的数据库实例升级到支持的引擎版本。

1. 创建新的快照。

1. 公开重新共享快照。

# 共享 Amazon RDS 的加密快照
<a name="share-encrypted-snapshot"></a>

您可共享使用 AES-256 加密算法“静态”加密的数据库快照，如[加密 Amazon RDS 资源](Overview.Encryption.md)中所述。

以下限制适用于共享加密快照：
+ 您无法公开共享加密的快照。
+ 您无法共享使用透明数据加密 (TDE) 加密的 Oracle 或 Microsoft SQL Server 快照。
+ 如果某个快照已使用共享该快照的 AWS 账户的默认 KMS 密钥进行加密，则您无法共享该快照。

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

要解决默认 KMS 密钥问题，请执行以下任务：

1. [创建客户自主管理型密钥并授予对它的访问权限](#share-encrypted-snapshot.cmk).

1. [从源账户复制和共享快照](#share-encrypted-snapshot.share).

1. [复制目标账户中的共享快照](#share-encrypted-snapshot.target).

## 创建客户自主管理型密钥并授予对它的访问权限
<a name="share-encrypted-snapshot.cmk"></a>

首先，在与加密的数据库快照相同的 AWS 区域中创建一个自定义 KMS 密钥。在创建客户自主管理型密钥时，您可以为另一个 AWS 账户提供对它的访问权限。

**注意**  
当密钥策略授予对源账户和目标账户的访问权限时，您也可以使用其它 AWS 账户中的 KMS 密钥。

**创建客户自主管理型密钥并授予对它的访问权限**

1. 从源 AWS 账户登录 AWS 管理控制台。

1. 从 [https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) 打开 AWS KMS 控制台。

1. 要更改 AWS 区域，请使用页面右上角的区域选择器。

1. 在导航窗格中，选择**客户托管密钥**。

1. 选择**创建密钥**。

1. 在**配置密钥**页面上：

   1. 对于**密钥类型**，选择**对称**。

   1. 对于**密钥用途**，选择**加密和解密**。

   1. 展开 **Advanced options (高级选项)**。

   1. 对于**密钥材料来源**，选择 **KMS**。

   1. 对于**区域性**，请选择**单区域密钥**。

   1. 选择**下一步**。

1. 在**添加标签**页面上：

   1. 对于**别名**，输入您的 KMS 密钥的显示名称，例如 **share-snapshot**。

   1. （可选）为 KMS 密钥输入描述。

   1. （可选）向 KMS 密钥添加标签。

   1. 选择**下一步**。

1. 在**定义密钥管理权限**页面上，选择**下一步**。

1. 在**定义密钥使用权限**页面上：

   1. 对于**其他 AWS 账户**，选择**添加另一个 AWS 账户**。

   1. 输入您要向其授予访问权限的 AWS 账户的 ID。

      您可以向多个 AWS 账户授予访问权限。

   1. 选择**下一步**。

1. 查看您的 KMS 密钥，然后选择**完成**。

## 从源账户复制和共享快照
<a name="share-encrypted-snapshot.share"></a>

接下来，使用客户自主管理型密钥将源数据库快照复制到新快照。然后，您将与目标 AWS 账户共享它。

**复制和共享快照**

1. 从源 AWS 账户登录 AWS 管理控制台。

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

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

1. 选择要复制的数据库快照。

1. 对于 **Actions (操作)**，请选择 **Copy snapshot (复制快照)**。

1. 在**复制快照**页面上：

   1. 对于**目标区域**，选择您在上一个过程中创建客户自主管理型密钥的 AWS 区域。

   1. 在**新数据库快照标识符**中输入数据库快照副本的名称。

   1. 对于 **AWS KMS key**，选择您创建的客户自主管理型密钥。  
![\[选择客户自主管理型密钥。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/copy-encrypted-snapshot.png)

   1. 选择**复制快照**。

1. 当快照副本可用时，将其选中。

1. 对于 **Actions**（操作），请选择 **Share snapshot**（共享快照）。

1. 在**快照权限**页面上：

   1. 输入您要与之共享快照副本的 **AWS 账户 ID**，然后选择**添加**。

   1. 选择**保存**。

   共享此快照。

## 复制目标账户中的共享快照
<a name="share-encrypted-snapshot.target"></a>

现在，您可以复制目标 AWS 账户中的共享快照。

**复制共享快照**

1. 从目标 AWS 账户登录 AWS 管理控制台。

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

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

1. 选择**与我共享**选项卡。

1. 选择共享快照。

1. 对于 **Actions (操作)**，请选择 **Copy snapshot (复制快照)**。

1. 按照前面的过程选择用于复制快照的设置，但要使用属于目标账户的 AWS KMS key。

   选择**复制快照**。

# 停止 Amazon RDS 的快照共享
<a name="share-snapshot-stop"></a>

要停止共享数据库快照，请删除目标 AWS 账户的权限。

## 控制台
<a name="share-snapshot-stop.CON"></a>

**停止与 AWS 账户共享手动数据库快照**

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

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

1. 选择要停止共享的手动快照。

1. 选择 **Actions**（操作），然后选择 **Share snapshot**（共享快照）。

1. 要移除 AWS 账户的权限，请从授权账户列表中选择该账户的 AWS 账户标识符所对应的**删除**。

1. 选择**保存**以保存您的更改。

## CLI
<a name="share-snapshot-stop.CLI"></a>

要从列表中删除 AWS 账户标识符，请使用 `--values-to-remove` 参数。

**Example 停止共享快照**  
以下示例禁止 AWS 账户 ID 444455556666 还原快照。  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-snapshot-attribute \
--db-snapshot-identifier manual-snapshot1 \
--attribute-name restore \
--values-to-remove 444455556666
```
对于：Windows  

```
aws rds modify-db-snapshot-attribute ^
--db-snapshot-identifier manual-snapshot1 ^
--attribute-name restore ^
--values-to-remove 444455556666
```

## RDS API
<a name="share-snapshot-stop.API"></a>

要移除 AWS 账户的共享权限，请使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterSnapshotAttribute.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterSnapshotAttribute.html) 操作（`AttributeName` 设置为 `restore`）和 `ValuesToRemove` 参数。要将手动快照标记为私有，请将值 `all` 从 `restore` 属性的值列表中删除。

# 将 Amazon RDS 的数据库快照数据导出到 Amazon S3
<a name="USER_ExportSnapshot"></a>

您可以将数据库快照数据导出到 Amazon S3 存储桶。导出过程在后台运行，而不会影响活动数据库的性能。

导出数据库快照时，Amazon RDS 从快照中提取数据并将其存储在 Amazon S3 存储桶中。数据以压缩和一致的 Apache Parquet 格式存储。

您可以导出所有类型的数据库快照 – 包括手动快照、自动系统快照和 AWS Backup 服务创建的快照。默认情况下，将导出快照中的所有数据。但是，您可以选择导出特定的一组数据库、方案或表。

导出数据后，您可以通过 Amazon Athena 或 Amazon Redshift Spectrum 等工具直接分析导出的数据。有关使用 Athena 读取 Parque 数据的更多信息，请参阅 *Amazon Athena 用户指南*中的 [Parquet SerDe](https://docs.aws.amazon.com/athena/latest/ug/parquet-serde.html)。有关使用 Redshift Spectrum 读取 Parquet 数据的更多信息，请参阅《Amazon Redshift 数据库开发人员指南》中的[从列式数据格式执行 COPY 操作](https://docs.aws.amazon.com/redshift/latest/dg/copy-usage_notes-copy-from-columnar.html)。

**警告**  
您无法将从 S3 导出的快照数据还原到新的数据库实例，也无法将快照数据从 S3 导入到现有的数据库实例。但是，您可以使用 Amazon Athena 或 Redshift Spectrum 处理数据来进行分析。此外，您可以使用 AWS Glue 转换数据，然后使用诸如 AWS DMS 之类的工具或自定义脚本将其导入 Amazon RDS。

有关将数据库快照导出到 Amazon S3 的更多信息，请参阅以下主题。

**主题**
+ [监控 Amazon RDS 的快照导出](USER_ExportSnapshot.Monitoring.md)
+ [取消 Amazon RDS 的快照导出任务](USER_ExportSnapshot.Canceling.md)
+ [Amazon RDS 的 Amazon S3 导出任务的失败消息](USER_ExportSnapshot.failure-msg.md)
+ [排查 RDS for PostgreSQL 权限错误](USER_ExportSnapshot.postgres-permissions.md)
+ [Amazon RDS 导出到 Amazon S3 时的文件命名约定](USER_ExportSnapshot.FileNames.md)
+ [Amazon RDS 导出到 Amazon S3 存储桶时的数据转换](USER_ExportSnapshot.data-types.md)

## 导出快照数据概述
<a name="USER_ExportSnapshot.Overview"></a>

您可以使用以下过程将数据库快照数据导出到 Amazon S3 存储桶。有关更多详细信息，请参阅以下部分。

1. 确定要导出的快照。

   使用现有的自动快照或手动快照，或创建数据库实例或多可用区数据库集群的手动快照。

1. 设置对 Amazon S3 存储桶的访问权限。

   *存储桶*是 Amazon S3 对象或文件的容器。要提供访问存储桶的信息，请执行以下步骤：

   1. 标识要将快照导出到的 S3 存储桶。S3 存储桶必须与快照位于同一 AWS 区域。有关更多信息，请参阅 [标识要导出到的 Amazon S3 存储桶](#USER_ExportSnapshot.SetupBucket)。

   1. 创建一个 AWS Identity and Access Management (IAM) 角色，用于授予快照导出任务对 S3 存储桶的访问权限。有关更多信息，请参阅 [使用 IAM 角色提供对 Amazon S3 存储桶的访问权限](#USER_ExportSnapshot.SetupIAMRole)。

1. 创建对称加密 AWS KMS key 以进行服务器端加密。快照导出任务使用 KMS 密钥在将导出数据写入 S3 时设置 AWS KMS 服务器端加密。

   KMS 密钥策略必须同时包含 `kms:CreateGrant` 和 `kms:DescribeKey` 权限。有关在 Amazon RDS 中使用 KMS 密钥的更多信息，请参阅[AWS KMS key 管理](Overview.Encryption.Keys.md)。

   如果 KMS 密钥策略中有拒绝语句，则确保显式排除 AWS 服务主体 `export.rds.amazonaws.com`。

   您可以在您的 AWS 账户内使用 KMS 密钥，或者您可以使用跨账户 KMS 密钥。有关更多信息，请参阅 [使用跨账户 AWS KMS key 加密 Amazon S3 导出的内容](#USER_ExportSnapshot.CMK)。

1. 使用控制台或 `start-export-task` CLI 命令将快照导出到 Amazon S3。有关更多信息，请参阅 [将数据库快照导出到 Amazon S3 桶](#USER_ExportSnapshot.Exporting)。

1. 要访问 Amazon S3 存储桶中导出的数据，请参阅 *Amazon Simple Storage Service 用户指南*中的[上传、下载和管理对象](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/upload-download-objects.html)。

## 设置 Amazon S3 存储桶的访问权限
<a name="USER_ExportSnapshot.Setup"></a>

要将数据库快照数据导出到 Amazon S3 文件，首先需要授予快照访问 Amazon S3 存储桶的权限。然后，您创建 IAM 角色以允许 Amazon RDS 服务写入 Amazon S3 存储桶。

**Topics**
+ [

### 标识要导出到的 Amazon S3 存储桶
](#USER_ExportSnapshot.SetupBucket)
+ [

### 使用 IAM 角色提供对 Amazon S3 存储桶的访问权限
](#USER_ExportSnapshot.SetupIAMRole)
+ [

### 使用跨账户 Amazon S3 存储桶
](#USER_ExportSnapshot.Setup.XAcctBucket)
+ [

### 使用跨账户 AWS KMS key 加密 Amazon S3 导出的内容
](#USER_ExportSnapshot.CMK)

### 标识要导出到的 Amazon S3 存储桶
<a name="USER_ExportSnapshot.SetupBucket"></a>

标识要将数据库快照导出到的 Amazon S3 存储桶。使用现有 S3 存储桶或创建新的 S3 存储桶。

**注意**  
要导出到的 S3 存储桶必须与快照位于同一 AWS 区域中。

有关使用 Amazon S3 存储桶的详细信息，请参阅 *Amazon Simple Storage Service 用户指南*中的以下主题：
+ [如何查看 S3 存储桶的属性？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/view-bucket-properties.html)
+ [如何为 Amazon S3 存储桶启用默认加密？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/default-bucket-encryption.html)
+ [如何创建 S3 存储桶？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)

### 使用 IAM 角色提供对 Amazon S3 存储桶的访问权限
<a name="USER_ExportSnapshot.SetupIAMRole"></a>

将数据库快照数据导出到 Amazon S3 之前，请授予快照导出任务对 Amazon S3 存储桶的写入访问权限。

要授予此权限，请创建 IAM 策略以提供对桶的访问权限，然后创建一个 IAM 角色并将该策略附加到该角色。您稍后将此 IAM 角色分配给快照导出任务。

有关其他 Amazon S3 访问管理工具的信息，请参阅《Amazon S3 用户指南》**中的 [Amazon S3 中的访问控制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-management.html)。

**重要**  
如果计划使用AWS 管理控制台导出快照，则可以选择在导出快照时自动创建 IAM 策略和角色。有关说明，请参阅 [将数据库快照导出到 Amazon S3 桶](#USER_ExportSnapshot.Exporting)。

**授予数据库快照任务访问 Amazon S3 的权限**

1. 创建一个 IAM 策略。此策略提供允许快照导出任务访问 Amazon S3 的存储桶和对象权限。

   在策略中包含以下必需操作，以允许将文件从 Amazon RDS 桶传输到 S3 桶：
   + `s3:PutObject*`
   + `s3:GetObject*` 
   + `s3:ListBucket` 
   + `s3:DeleteObject*`
   +  `s3:GetBucketLocation`

   在策略中，包含以下资源以标识 S3 桶以及该桶中的对象。以下资源列表显示用于访问 Amazon S3 的 Amazon Resource Name (ARN) 格式。
   + `arn:aws:s3:::amzn-s3-demo-bucket`
   + `arn:aws:s3:::amzn-s3-demo-bucket/*`

   有关为 Amazon RDS 创建 IAM 策略的更多信息，请参阅[创建和使用适用于 IAM 数据库访问的 IAM 策略](UsingWithRDS.IAMDBAuth.IAMPolicy.md)。另请参阅 *IAM 用户指南*中的[教程：创建和附加您的第一个客户托管策略](https://docs.aws.amazon.com//IAM/latest/UserGuide/tutorial_managed-policies.html)。

   以下 AWS CLI 命令使用这些选项创建一个名为 `ExportPolicy` 的 IAM 策略。该策略授予对名为 *amzn-s3-demo-bucket* 的存储桶的访问权限。
**注意**  
创建策略后，请记下策略的 ARN。在将策略附加到 IAM 角色时，您在后面的步骤中需要使用 ARN。

   ```
   aws iam create-policy  --policy-name ExportPolicy --policy-document '{
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ExportPolicy",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject*",
                   "s3:ListBucket",
                   "s3:GetObject*",
                   "s3:DeleteObject*",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket",
                   "arn:aws:s3:::amzn-s3-demo-bucket/*"
               ]
           }
       ]
   }'
   ```

1. 创建一个 IAM 角色，以便 Amazon RDS 可以代入该 IAM 角色，代表您访问 Amazon S3 桶。有关更多信息，请参阅 *IAM 用户指南*中的[创建向 IAM 用户委派权限的角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)。

   以下示例说明了如何使用 AWS CLI 命令创建一个名为 `rds-s3-export-role` 的角色。

   ```
   aws iam create-role  --role-name rds-s3-export-role  --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "export.rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole"
          }
        ] 
      }'
   ```

1. 将您创建的 IAM 策略附加到您创建的 IAM 角色。

   以下 AWS CLI 命令将之前创建的策略附加到名为 `rds-s3-export-role` 的角色。将 `your-policy-arn` 替换为您在先前步骤中记下的策略 ARN。

   ```
   aws iam attach-role-policy  --policy-arn your-policy-arn  --role-name rds-s3-export-role
   ```

### 使用跨账户 Amazon S3 存储桶
<a name="USER_ExportSnapshot.Setup.XAcctBucket"></a>

您可以跨 AWS 账户使用 Amazon S3 存储桶。要使用跨账户存储桶，请添加存储桶策略以允许访问您用于 S3 导出的 IAM 角色。有关更多信息，请参阅[示例 2：存储桶拥有者授予跨账户存储桶权限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html)。

将存储桶策略附加到存储桶，如下面的示例所示。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:role/Admin"
            },
            "Action": [
                "s3:PutObject*",
                "s3:ListBucket",
                "s3:GetObject*",
                "s3:DeleteObject*",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket",
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ]
        }
    ]
}
```

------

### 使用跨账户 AWS KMS key 加密 Amazon S3 导出的内容
<a name="USER_ExportSnapshot.CMK"></a>

您可以使用跨账户 AWS KMS key 以加密 Amazon S3 导出的内容。首先，向本地账户添加密钥策略，然后在外部账户中添加 IAM 策略。有关更多信息，请参阅[允许其他账户中的用户使用 KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)。

**要使用跨账户 KMS 密钥**

1. 向本地账户添加密钥策略。

   以下示例为外部账户 444455556666 中的 `ExampleRole` 和 `ExampleUser` 提供了内部账户 123456789012 中的权限。

   ```
   {
       "Sid": "Allow an external account to use this KMS key",
       "Effect": "Allow",
       "Principal": {
           "AWS": [
               "arn:aws:iam::444455556666:role/ExampleRole",
               "arn:aws:iam::444455556666:user/ExampleUser"
           ]
       },
       "Action": [
           "kms:Encrypt",
           "kms:Decrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey*",
           "kms:CreateGrant",
           "kms:DescribeKey",
           "kms:RetireGrant"
       ],
       "Resource": "*"
   }
   ```

1. 在外部账户中添加 IAM 策略。

   以下示例 IAM 策略允许主体使用账户 123456789012 中的 KMS 密钥执行加密操作。要向账户 444455556666 中的 `ExampleRole` 和 `ExampleUser` 授予此权限，[请将策略附加](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console)到该账户中的用户或角色。

   ```
   {
       "Sid": "Allow use of KMS key in account 123456789012",
       "Effect": "Allow",
       "Action": [
           "kms:Encrypt",
           "kms:Decrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey*",
           "kms:CreateGrant",
           "kms:DescribeKey",
           "kms:RetireGrant"
       ],
       "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
   }
   ```

## 将数据库快照导出到 Amazon S3 桶
<a name="USER_ExportSnapshot.Exporting"></a>

每个 AWS 账户 最多可以执行五个并发数据库快照导出任务。

**注意**  
导出 RDS 快照可能需要一段时间，具体取决于您的数据库类型和大小。导出任务首先还原并扩展整个数据库，然后再将数据提取到 Amazon S3。此阶段的任务进度显示为**正在启动**。当任务切换到将数据导出到 S3 时，进度显示为**正在进行**。  
完成导出所需的时间取决于数据库中存储的数据。例如，具有分布良好的数字主键或索引列的表导出速度最快。不包含适用于分区的列的表，以及只有基于字符串的列上的一个索引的表将需要更长时间。导出时间之所以更长，是因为导出使用较慢的单线程进程。

您可以使用AWS 管理控制台、AWS CLI 或 RDS API 将数据库快照导出到 Amazon S3。要将数据库快照导出到跨账户 Amazon S3 存储桶，请使用 AWS CLI 或 RDS API。

如果您使用 Lambda 函数导出快照，请将 `kms:DescribeKey` 操作添加到 Lambda 函数策略中。有关更多信息，请参阅 [AWS Lambda 权限](https://docs.aws.amazon.com/lambda/latest/dg/lambda-permissions.html)。

### 控制台
<a name="USER_ExportSnapshot.ExportConsole"></a>

仅为可导出到 Amazon S3 的快照显示**导出到 Amazon S3** 控制台选项。由于以下原因，快照可能无法导出：
+ 此数据库引擎不支持 S3 导出。
+ 此数据库引擎版本不支持 S3 导出。
+ 创建了快照的 AWS 区域不支持 S3 导出。

**导出数据库快照**

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

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

1. 从选项卡中，选择要导出的快照类型。

1. 在快照列表中，选择要导出的快照。

1. 对于 **Actions (操作)**，选择 **Export to Amazon S3 (导出到 Amazon S3)**。

   此时将显示 **Export to Amazon S3 (导出到 Amazon S3)** 窗口。

1. 对于 **Export identifier (导出标识符)**，输入用于标识导出任务的名称。此值也用于在 S3 存储桶中创建的文件的名称。

1. 选择要导出的数据：
   + 选择 **All (全部)** 可导出快照中的所有数据。
   + 选择 **Partial (部分)** 可导出快照的特定部分。如需标识要导出快照的哪些部分，请为 **Identifiers (标识符)**（以空格分隔）输入一个或多个数据库、架构或表。

     使用以下格式：

     ```
     database[.schema][.table] database2[.schema2][.table2] ... databasen[.scheman][.tablen]
     ```

     例如：

     ```
     mydatabase mydatabase2.myschema1 mydatabase2.myschema2.mytable1 mydatabase2.myschema2.mytable2
     ```

1. 对于 **S3 bucket (S3 存储桶)**，选择要导出到的存储桶。

   要将导出的数据分配给 S3 存储桶中的文件夹路径，请为 **S3 prefix (S3 前缀)** 输入可选路径。

1. 对于 **IAM role (IAM 角色)**，请选择一个角色以授予您对所选 S3 存储桶的写入访问权限，或创建新角色。
   + 如果您按照 [使用 IAM 角色提供对 Amazon S3 存储桶的访问权限](#USER_ExportSnapshot.SetupIAMRole)中的步骤创建了角色，请选择该角色。
   + 如果您没有创建授予您对所选 S3 桶的写入访问权限的角色，则选择 **Create a new role**（创建新角色）来自动创建该角色。接下来，在 **IAM role name (IAM 角色名称)** 中输入角色的名称。

1. 对于 **AWS KMS key**，输入要用于加密导出数据的密钥的 ARN。

1. 选择 **Export to Amazon S3 (导出到 Amazon S3)**。

### AWS CLI
<a name="USER_ExportSnapshot.ExportCLI"></a>

要使用 AWS CLI 将数据库快照导出到 Amazon S3，请使用包含以下所需选项的 [start-export-task](https://docs.aws.amazon.com/cli/latest/reference/rds/start-export-task.html) 命令：
+ `--export-task-identifier` 
+ `--source-arn` 
+ `--s3-bucket-name` 
+ `--iam-role-arn` 
+ `--kms-key-id` 

在以下示例中，快照导出任务名为 *my-snapshot-export*，该任务将快照导出到名为 *amzn-s3-demo-bucket* 的 S3 存储桶。

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

```
1. aws rds start-export-task \
2.     --export-task-identifier my-snapshot-export \
3.     --source-arn arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot-name \
4.     --s3-bucket-name amzn-s3-demo-bucket \
5.     --iam-role-arn iam-role \
6.     --kms-key-id my-key
```
对于：Windows  

```
1. aws rds start-export-task ^
2.     --export-task-identifier my-snapshot-export ^
3.     --source-arn arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot-name ^
4.     --s3-bucket-name amzn-s3-demo-bucket ^
5.     --iam-role-arn iam-role ^
6.     --kms-key-id my-key
```
示例输出如下。  

```
{
    "Status": "STARTING", 
    "IamRoleArn": "iam-role", 
    "ExportTime": "2019-08-12T01:23:53.109Z", 
    "S3Bucket": "my-export-bucket", 
    "PercentProgress": 0, 
    "KmsKeyId": "my-key", 
    "ExportTaskIdentifier": "my-snapshot-export", 
    "TotalExtractedDataInGB": 0, 
    "TaskStartTime": "2019-11-13T19:46:00.173Z", 
    "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot-name"
}
```
要在 S3 存储桶中为快照导出提供文件夹路径，请在 [start-export-task](https://docs.aws.amazon.com/cli/latest/reference/rds/start-export-task.html) 命令中包含 `--s3-prefix` 选项。

### RDS API
<a name="USER_ExportSnapshot.ExportAPI"></a>

要使用 Amazon RDS API 将数据库快照导出到 Amazon S3，请使用包含以下所需参数的 [StartExportTask](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_StartExportTask.html) 操作：
+ `ExportTaskIdentifier`
+ `SourceArn`
+ `S3BucketName`
+ `IamRoleArn`
+ `KmsKeyId`

## 区域和版本可用性
<a name="USER_ExportSnapshot.RegionVersionAvailability"></a>

功能可用性和支持因每个数据库引擎的特定版本以及 AWS 区域而异。有关将快照导出到 S3 的版本和区域可用性的更多信息，请参阅[支持在 Amazon RDS 中将快照导出到 S3 的区域和数据库引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.ExportSnapshotToS3.md)。

## 限制
<a name="USER_ExportSnapshot.Limits"></a>

将数据库快照数据导出到 Amazon S3 有以下限制：
+ 您不能同时为同一个数据库快照运行多个导出任务。这同时适用于完全导出和部分导出。
+ 不支持从使用磁性存储的数据库导出快照。
+ 导出到 S3 不支持包含冒号（:）的 S3 前缀。
+ 在导出过程中，S3 文件路径中的以下字符将转换为下划线 (\$1)：

  ```
  \ ` " (space)
  ```
+ 如果数据库、架构或表的名称中包含以下字符以外的字符，则不支持部分导出。但是，您可以导出整个数据库快照。
  + 拉丁字母 (A–Z)
  + 数字 (0–9)
  + 美元符号 (\$1)
  + 下划线 (\$1)
+ 数据库表列名不支持空格 ( ) 和某些字符。在导出过程中会跳过列名中包含以下字符的表：

  ```
  , ; { } ( ) \n \t = (space)
  ```
+ 在导出过程中会跳过其名称中包含斜杠 (/) 的表。
+ 在导出期间，将跳过 RDS for PostgreSQL 临时表和未记录的表。
+ 如果数据包含接近或大于 500MB 的大型对象（例如 BLOB 或 CLOB），则导出失败。
+ 如果表中某个大行的大小接近或大于 2GB，则会在导出过程中略过该表。
+ 对于部分导出，`ExportOnly` 列表的最大大小为 200 KB。
+ 强烈建议您为每个导出任务使用唯一的名称。如果您没有使用唯一的任务名称，可能会收到以下错误消息：

  ExportTaskAlreadyExistsFault：调用 StartExportTask 操作时发生错误 (ExportTaskAlreadyExists)：ID 为 *xxxxx* 的导出任务已存在。
+ 您可以在将快照数据导出到 S3 时删除快照，但是在导出任务完成之前，仍需支付该快照的存储成本。
+ 您无法将从 S3 导出的快照数据还原到新的数据库实例，也无法将快照数据从 S3 导入到现有的数据库实例。
+ 每个 AWS 账户 最多可以执行五个并发数据库快照导出任务。
+ 要将数据库快照导出到跨账户 Amazon S3 存储桶，必须使用 AWS CLI 或 RDS API。
+ 在 Amazon RDS 完成导出任务后，您可能需要稍等片刻才能从同一个数据库快照开始另一个导出任务。
+ 您无法导出视图或实体化视图。
+ RDS 导出到 S3 对于 GuardDuty Malware Protection for S3 不支持基于标签的访问控制。

# 监控 Amazon RDS 的快照导出
<a name="USER_ExportSnapshot.Monitoring"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 监控数据库快照导出。

## 控制台
<a name="USER_ExportSnapshot.MonitorConsole"></a>

**监视数据库快照导出**

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

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

1. 要查看快照导出的列表，请选择 **Amazon S3 中的导出**选项卡。

1. 要查看有关特定快照导出的信息，请选择导出任务。

## AWS CLI
<a name="USER_ExportSnapshot.MonitorCLI"></a>

要使用 AWS CLI 监控数据库快照导出，请使用 [describe-export-tasks](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-export-tasks.html) 命令。

以下示例说明如何显示有关所有快照导出的当前信息。

**Example**  

```
 1. aws rds describe-export-tasks
 2. 
 3. {
 4.     "ExportTasks": [
 5.         {
 6.             "Status": "CANCELED",
 7.             "TaskEndTime": "2019-11-01T17:36:46.961Z",
 8.             "S3Prefix": "something",
 9.             "ExportTime": "2019-10-24T20:23:48.364Z",
10.             "S3Bucket": "amzn-s3-demo-bucket",
11.             "PercentProgress": 0,
12.             "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY",
13.             "ExportTaskIdentifier": "anewtest",
14.             "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3",
15.             "TotalExtractedDataInGB": 0,
16.             "TaskStartTime": "2019-10-25T19:10:58.885Z",
17.             "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:parameter-groups-test"
18.         },
19. {
20.             "Status": "COMPLETE",
21.             "TaskEndTime": "2019-10-31T21:37:28.312Z",
22.             "WarningMessage": "{\"skippedTables\":[],\"skippedObjectives\":[],\"general\":[{\"reason\":\"FAILED_TO_EXTRACT_TABLES_LIST_FOR_DATABASE\"}]}",
23.             "S3Prefix": "",
24.             "ExportTime": "2019-10-31T06:44:53.452Z",
25.             "S3Bucket": "amzn-s3-demo-bucket1",
26.             "PercentProgress": 100,
27.             "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY",
28.             "ExportTaskIdentifier": "thursday-events-test", 
29.             "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3",
30.             "TotalExtractedDataInGB": 263,
31.             "TaskStartTime": "2019-10-31T20:58:06.998Z",
32.             "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:rds:example-1-2019-10-31-06-44"
33.         },
34.         {
35.             "Status": "FAILED",
36.             "TaskEndTime": "2019-10-31T02:12:36.409Z",
37.             "FailureCause": "The S3 bucket edgcuc-export isn't located in the current AWS Region. Please, review your S3 bucket name and retry the export.",
38.             "S3Prefix": "",
39.             "ExportTime": "2019-10-30T06:45:04.526Z",
40.             "S3Bucket": "amzn-s3-demo-bucket2",
41.             "PercentProgress": 0,
42.             "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY",
43.             "ExportTaskIdentifier": "wednesday-afternoon-test",
44.             "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3",
45.             "TotalExtractedDataInGB": 0,
46.             "TaskStartTime": "2019-10-30T22:43:40.034Z",
47.             "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:rds:example-1-2019-10-30-06-45"
48.         }
49.     ]
50. }
```
要显示有关特定快照导出的信息，请在 `--export-task-identifier` 命令中包含 `describe-export-tasks` 选项。要筛选输出，请包括 `--Filters` 选项。有关更多选项，请参阅 [describe-export-tasks](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-export-tasks.html) 命令。

## RDS API
<a name="USER_ExportSnapshot.MonitorAPI"></a>

要使用 Amazon RDS API 显示有关数据库快照导出的信息，请使用 [DescribeExportTasks](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeExportTasks.html) 操作。

要跟踪导出工作流的完成情况或启动其他工作流，您可以订阅 Amazon Simple Notification Service 主题。有关 Amazon SNS 的更多信息，请参阅 [使用 Amazon RDS 事件通知](USER_Events.md)。

# 取消 Amazon RDS 的快照导出任务
<a name="USER_ExportSnapshot.Canceling"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 取消数据库快照导出任务。

**注意**  
取消快照导出任务不会删除导出到 Amazon S3 的任何数据。有关如何使用控制台删除数据的信息，请参阅[如何从 S3 存储桶删除对象？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/delete-objects.html) 要使用 CLI 删除数据，请使用 [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) 命令。

## 控制台
<a name="USER_ExportSnapshot.CancelConsole"></a>

**取消快照导出任务**

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

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

1. 选择 **Exports in Amazon S3 (Amazon S3 中的导出)** 选项卡。

1. 选择要取消的快照导出任务。

1. 选择 **Cancel (取消)**。

1. 在确认页面上选择 **Cancel export task (取消导出任务)**。

 

## AWS CLI
<a name="USER_ExportSnapshot.CancelCLI"></a>

要使用 AWS CLI 取消快照导出任务，请使用 [cancel-export-task](https://docs.aws.amazon.com/cli/latest/reference/rds/cancel-export-task.html) 命令。该命令需要 `--export-task-identifier` 选项。

**Example**  

```
 1. aws rds cancel-export-task --export-task-identifier my_export
 2. {
 3.     "Status": "CANCELING", 
 4.     "S3Prefix": "", 
 5.     "ExportTime": "2019-08-12T01:23:53.109Z", 
 6.     "S3Bucket": "amzn-s3-demo-bucket", 
 7.     "PercentProgress": 0, 
 8.     "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY", 
 9.     "ExportTaskIdentifier": "my_export", 
10.     "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", 
11.     "TotalExtractedDataInGB": 0, 
12.     "TaskStartTime": "2019-11-13T19:46:00.173Z", 
13.     "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:export-example-1"
14. }
```

## RDS API
<a name="USER_ExportSnapshot.CancelAPI"></a>

要使用 Amazon RDS API 取消快照导出任务，请使用带 `ExportTaskIdentifier` 参数的 [CancelExportTask](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CancelExportTask.html) 操作。

# Amazon RDS 的 Amazon S3 导出任务的失败消息
<a name="USER_ExportSnapshot.failure-msg"></a>

下表描述了 Amazon S3 导出任务失败时返回的消息。


| 失败消息 | 描述 | 
| --- | --- | 
| 出现未知的内部错误。 |  由于未知错误、异常或故障导致任务失败。  | 
| 将导出任务的元数据写入 S3 存储桶 [存储桶名称] 时出现未知的内部错误。 |  由于未知错误、异常或故障导致任务失败。  | 
| RDS 导出无法编写导出任务的元数据，因为它无法担任 IAM 角色 [角色 ARN]。 |  导出任务将担任您的 IAM 角色来验证是否允许向 S3 存储桶写入元数据。如果任务无法担任您的 IAM 角色，它将失败。  | 
| RDS 导出未能使用带有 KMS 密钥 [密钥 ID] 的 IAM 角色 [角色 ARN] 将导出任务的元数据写入 S3 存储桶 [存储桶名称]。错误代码：[错误代码] |  缺少一个或多个权限，因此导出任务无法访问 S3 存储桶。收到以下错误代码之一时，会引发此失败消息： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_ExportSnapshot.failure-msg.html) 这些错误代码表示 IAM 角色、S3 桶或 KMS 密钥的设置出现配置错误。  | 
| IAM 角色 [角色 ARN] 无权在 S3 存储桶 [存储桶名称] 上调用 [S3 操作]。查看您的权限并重试导出。 |  IAM 策略配置错误。缺少对 S3 桶执行特定 S3 操作的权限，这会导致导出任务失败。  | 
| KMS 密钥检查失败。检查 KMS 密钥上的凭证然后重试。 | KMS 密钥凭证检查失败。 | 
| S3 凭证检查失败。检查 S3 存储桶和 IAM 策略的权限。 | S3 凭证检查失败。 | 
| S3 存储桶 [存储桶名称] 无效。它不在当前 AWS 区域，或者它不存在。检查 S3 存储桶名称，然后重试导出。 | S3 存储桶无效。 | 
| S3 存储桶 [存储桶名称] 不在当前 AWS 区域。检查 S3 存储桶名称，然后重试导出。 | S3 存储桶处于错误的 AWS 区域。 | 

# 排查 RDS for PostgreSQL 权限错误
<a name="USER_ExportSnapshot.postgres-permissions"></a>

将 PostgreSQL 数据库导出到 Amazon S3 时，您可能会看到 `PERMISSIONS_DO_NOT_EXIST` 错误，指出已跳过某些表。当您在创建数据库时指定的超级用户无权访问这些表时，通常会发生此错误。

要修复此错误，请运行以下命令：

```
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA schema_name TO superuser_name
```

有关超级用户权限的更多信息，请参阅 [主用户账户权限](UsingWithRDS.MasterAccounts.md)。

# Amazon RDS 导出到 Amazon S3 时的文件命名约定
<a name="USER_ExportSnapshot.FileNames"></a>

特定表的导出数据以 `base_prefix/files` 格式存储，基本前缀如下：

```
export_identifier/database_name/schema_name.table_name/
```

例如：

```
export-1234567890123-459/rdststdb/rdststdb.DataInsert_7ADB5D19965123A2/
```

文件的命名方式有两种约定。
+ 当前约定：

  ```
  batch_index/part-partition_index-random_uuid.format-based_extension
  ```

  批量索引是一个序列号，表示从表中读取的一批数据。如果我们无法将您的表分区成小块以并行导出，则会有多个批量索引。如果表分区成多个表，也会发生同样的情况。这会出现多个批量索引，主表的每个表分区对应一个。

  如果我们可以将表分区成小块以并行读取，那么就只有批量索引 `1` 文件夹。

  在批量索引文件夹中，有一个或多个包含表数据的 Parquet 文件。Parquet 文件名的前缀是 `part-partition_index`。如果您的表已分区，则会有多个以分区索引 `00000` 开头的文件。

  分区索引序列中可能存在间隙。之所以发生这种情况，是因为每个分区都是从表中的范围查询中获得的。如果该分区的范围内没有数据，则跳过该序列号。

  例如，假设 `id` 列是表的主键，其最小值和最大值为 `100` 和 `1000`。当我们尝试导出这个带有九个分区的表时，我们会使用并行查询读取它，如下所示：

  ```
  SELECT * FROM table WHERE id <= 100 AND id < 200
  SELECT * FROM table WHERE id <= 200 AND id < 300
  ```

  这应该生成九个文件，从 `part-00000-random_uuid.gz.parquet` 到 `part-00008-random_uuid.gz.parquet`。但是，如果没有 ID 介于 `200` 和 `350` 之间的行，则其中一个已完成的分区为空，并且不会为其创建任何文件。在前面的示例中，未创建 `part-00001-random_uuid.gz.parquet`。
+ 较早的约定：

  ```
  part-partition_index-random_uuid.format-based_extension
  ```

  这与当前约定相同，但没有 `batch_index` 前缀，例如：

  ```
  part-00000-c5a881bb-58ff-4ee6-1111-b41ecff340a3-c000.gz.parquet
  part-00001-d7a881cc-88cc-5ab7-2222-c41ecab340a4-c000.gz.parquet
  part-00002-f5a991ab-59aa-7fa6-3333-d41eccd340a7-c000.gz.parquet
  ```

文件命名约定可能会更改。因此，在读取目标表时，我们建议您读取表的基本前缀内的所有内容。

# Amazon RDS 导出到 Amazon S3 存储桶时的数据转换
<a name="USER_ExportSnapshot.data-types"></a>

将数据库快照导出到 Amazon S3 存储桶时，Amazon RDS 以 Parquet 格式转换数据、导出数据并存储数据。有关 Parquet 的更多信息，请参阅 [Apache Parquet](https://parquet.apache.org/docs/) 网站。

Parquet 将所有数据存储为以下原始类型之一：
+ BOOLEAN
+ INT32
+ INT64
+ INT96
+ FLOAT
+ DOUBLE
+ BYTE\$1ARRAY – 一个可变长度的字节数组，也称为二进制
+ FIXED\$1LEN\$1BYTE\$1ARRAY – 当值具有恒定大小时使用的固定长度字节数组

Parquet 数据类型很少能减少读取和写入格式的复杂性。Parquet 提供了用于扩展原始类型的逻辑类型。*逻辑类型*实现为具有 `LogicalType` 元数据字段中数据的注释。逻辑类型注释说明如何解释原始类型。

当 `STRING` 逻辑类型注释 `BYTE_ARRAY` 类型时，它表示字节数组应被解释为 UTF-8 编码的字符串。导出任务完成后，如果发生了任何字符串转换，则 Amazon RDS 会通知您。导出的基础数据始终与源中的数据相同。但是，由于 UTF-8 中的编码差异，在工具（如 Athena）中读取时，某些字符可能会显示与源不同。

有关更多信息，请参阅 Parquet 文档中的 [Parquet 逻辑类型定义](https://github.com/apache/parquet-format/blob/master/LogicalTypes.md)。

**Topics**
+ [

## MySQL 和 MariaDB 数据类型到 Parquet 的映射
](#USER_ExportSnapshot.data-types.MySQL)
+ [

## PostgreSQL 数据类型到 Parquet 的映射
](#USER_ExportSnapshot.data-types.PostgreSQL)

## MySQL 和 MariaDB 数据类型到 Parquet 的映射
<a name="USER_ExportSnapshot.data-types.MySQL"></a>

下表显示在将数据转换并导出到 Amazon S3 时从 MySQL 和 MariaDB 数据类型到 Parquet 数据类型的映射。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_ExportSnapshot.data-types.html)

## PostgreSQL 数据类型到 Parquet 的映射
<a name="USER_ExportSnapshot.data-types.PostgreSQL"></a>

下表显示在将数据转换并导出到 Amazon S3 时从 PostgreSQL 数据类型到 Parquet 数据类型的映射。


| PostgreSQL 数据类型 | Parquet 原始类型 | 逻辑类型注释 | 映射注释 | 
| --- | --- | --- | --- | 
| 数字数据类型 | 
| BIGINT | INT64 |  |   | 
| BIGSERIAL | INT64 |  |   | 
| DECIMAL | BYTE\$1ARRAY | STRING | DECIMAL 类型转换为 BYTE\$1ARRAY 类型的字符串，并编码为 UTF8。此转换是为了避免由于数据精度和非数字 (NaN) 的数据值而引起的复杂性。 | 
| DOUBLE PRECISION | DOUBLE |  |   | 
| INTEGER | INT32 |  |   | 
| MONEY | BYTE\$1ARRAY | STRING |   | 
| REAL | FLOAT |  |   | 
| SERIAL | INT32 |  |   | 
| SMALLINT | INT32 | INT(16, true) |   | 
| SMALLSERIAL | INT32 | INT(16, true) |   | 
| 字符串和相关数据类型 | 
| ARRAY | BYTE\$1ARRAY | STRING |  数组转换为字符串并编码为 BINARY (UTF8)。 此转换是为了避免因数据精度、非数字 (NaN) 的数据值和时间数据值而产生的复杂性。  | 
| BIT | BYTE\$1ARRAY | STRING |   | 
| BIT VARYING | BYTE\$1ARRAY | STRING |   | 
| BYTEA | BINARY |  |   | 
| CHAR | BYTE\$1ARRAY | STRING |   | 
| CHAR(N) | BYTE\$1ARRAY | STRING |   | 
| ENUM | BYTE\$1ARRAY | STRING |   | 
| NAME | BYTE\$1ARRAY | STRING |   | 
| TEXT | BYTE\$1ARRAY | STRING |   | 
| 文本搜索 | BYTE\$1ARRAY | STRING |   | 
| VARCHAR(N) | BYTE\$1ARRAY | STRING |   | 
| XML | BYTE\$1ARRAY | STRING |   | 
| 日期和时间数据类型 | 
| DATE | BYTE\$1ARRAY | STRING |   | 
| INTERVAL | BYTE\$1ARRAY | STRING |   | 
| TIME | BYTE\$1ARRAY | STRING |  | 
| 带时区的时间 | BYTE\$1ARRAY | STRING |  | 
| TIMESTAMP | BYTE\$1ARRAY | STRING |  | 
| TIMESTAMP（有时区） | BYTE\$1ARRAY | STRING |  | 
| 几何数据类型 | 
| BOX | BYTE\$1ARRAY | STRING |   | 
| CIRCLE | BYTE\$1ARRAY | STRING |   | 
| LINE | BYTE\$1ARRAY | STRING |   | 
| LINESEGMENT | BYTE\$1ARRAY | STRING |   | 
| 路径 | BYTE\$1ARRAY | STRING |   | 
| POINT | BYTE\$1ARRAY | STRING |   | 
| POLYGON | BYTE\$1ARRAY | STRING |   | 
| JSON 数据类型 | 
| JSON | BYTE\$1ARRAY | STRING |   | 
| JSONB | BYTE\$1ARRAY | STRING |   | 
| 其他数据类型 | 
| BOOLEAN | BOOLEAN |  |   | 
| CIDR | BYTE\$1ARRAY | STRING |  网络数据类型 | 
| COMPOSITE | BYTE\$1ARRAY | STRING |   | 
| DOMAIN | BYTE\$1ARRAY | STRING |   | 
| INET | BYTE\$1ARRAY | STRING |  网络数据类型 | 
| MACADDR | BYTE\$1ARRAY | STRING |   | 
| 对象标识符 | 不适用 |  |  | 
| PG\$1LSN | BYTE\$1ARRAY | STRING |   | 
| RANGE | BYTE\$1ARRAY | STRING |   | 
| UUID | BYTE\$1ARRAY | STRING |   | 

# 使用 AWS Backup 管理 Amazon RDS 的自动备份
<a name="AutomatedBackups.AWSBackup"></a>

AWS Backup 是一项完全托管的备份服务，可在云中以及本地方便地集中管理和自动执行跨 AWS 服务的数据备份。您可以在 AWS Backup 中管理 Amazon RDS 数据库的备份。

**注意**  
由 AWS Backup 管理的备份被视为手动数据库快照，但不计入 RDS 的数据库快照配额。使用 AWS Backup 创建的备份的名称以 `awsbackup:backup-job-number` 结尾。

有关 AWS Backup 的更多信息，请参阅 [https://docs.aws.amazon.com/aws-backup/latest/devguide](https://docs.aws.amazon.com/aws-backup/latest/devguide)。

**查看由 AWS Backup 管理的备份**

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

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

1. 选择 **Backup service (备份服务)** 选项卡。

   您的 AWS Backup 备份位于 **Backup service snapshots (备份服务快照)** 之下。