

# 从备份还原 DynamoDB 表
<a name="Restore.Tutorial"></a>

本节介绍如何使用 Amazon DynamoDB 控制台或 AWS Command Line Interface (AWS CLI) 从备份还原表。

**注意**  
如果要使用 AWS CLI，必须先对其进行配置。有关更多信息，请参阅 [访问 DynamoDB](AccessingDynamoDB.md)。

**Topics**

## 从备份还原表（控制台）
<a name="restoretable_console"></a>

以下过程演示如何使用在`Music`教程中创建的 `MusicBackup` 文件还原 [备份 DynamoDB 表](Backup.Tutorial.md) 表。

**注意**  
此过程假定在使用 `Music` 文件还原 `MusicBackup` 表之前，该表已不再存在。

**从备份还原表**

1. 登录 AWS 管理控制台，打开 DynamoDB 控制台：[https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)。

1. 在控制台左侧的导航窗格中，选择**备份**。

1. 在备份列表中，选择 `MusicBackup`。  
![\[备份列表和“Create backup (创建备份)”按钮的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/amazondynamodb/latest/developerguide/images/select_musicbackup.png)

1. 选择**还原**。

1. 输入 **Music** 作为新表名称。确认备份名称和其他备份详细信息。然后选择 **Restore table (还原表)** 来启动还原过程。
**注意**  
可以将表还原到同一 AWS 区域或备份所在的其他区域。您还可以阻止在新的还原表上创建二级索引。此外，您可以指定其他加密模式。  
从备份中还原的表始终使用 DynamoDB 标准表类别创建。  
![\[包含备份表详细信息的“Restore table from backup (从备份中还原表)”屏幕的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/amazondynamodb/latest/developerguide/images/restore_table.png)

   正在还原的表显示状态为 **Creating (正在创建)**。还原过程完成后，`Music` 表的状态更改为 **Active (活动)**。

## 从备份还原表（AWS CLI）
<a name="restoretable_cli"></a>

按照以下步骤操作，使用 AWS CLI 从在`Music`教程中创建的 `MusicBackup` 还原 [备份 DynamoDB 表](Backup.Tutorial.md) 表。

**从备份还原表**

1. 通过使用 `list-backups` 命令来确认要还原的备份。此示例使用 `MusicBackup`。

   ```
   aws dynamodb list-backups
   ```

   要获取备份的其他详细信息，请使用 `describe-backup` 命令。您可以从上一步中获取输入 `backup-arn`。

   ```
   aws dynamodb describe-backup \
   --backup-arn arn:aws:dynamodb:us-east-1:123456789012:table/Music/backup/01489173575360-b308cd7d
   ```

1. 从备份还原表。在此情况下，`MusicBackup` 将 `Music` 表还原到相同的 AWS 区域。

   ```
   aws dynamodb restore-table-from-backup \
   --target-table-name Music \
   --backup-arn arn:aws:dynamodb:us-east-1:123456789012:table/Music/backup/01489173575360-b308cd7d
   ```

1. 使用自定义表设置从备份中还原表。在此情况下，`MusicBackup` 将还原 `Music` 表并为还原的表指定加密模式。
**注意**  
`sse-specification-override` 参数采用与 `sse-specification-override` 命令中使用的 `CreateTable` 参数相同的值。要了解更多信息，请参阅 [管理 DynamoDB 中的加密表](encryption.tutorial.md)。

   ```
   aws dynamodb restore-table-from-backup \
   --target-table-name Music \
   --backup-arn arn:aws:dynamodb:us-east-1:123456789012:table/Music/backup/01581080476474-e177ebe2 \
   --sse-specification-override Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234
   ```

   可以将表还原到备份所在的其他 AWS 区域。
**注意**  
`sse-specification-override` 参数对于跨区域还原是必需的，但对于源表所在的区域中的还原是可选的。
在从命令行执行跨区域还原时，您必须将默认 AWS 区域设置为所需的目标区域。要了解更多信息，请参阅《AWS Command Line Interface 用户指南》中的[命令行选项](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html)。

   ```
   aws dynamodb restore-table-from-backup \
   --target-table-name Music \
   --backup-arn arn:aws:dynamodb:us-east-1:123456789012:table/Music/backup/01581080476474-e177ebe2 \
   --sse-specification-override Enabled=true,SSEType=KMS
   ```

   您可以覆盖已还原表的计费模式和预配置的吞吐量。

   ```
   aws dynamodb restore-table-from-backup \
   --target-table-name Music \
   --backup-arn arn:aws:dynamodb:us-east-1:123456789012:table/Music/backup/01489173575360-b308cd7d \
   --billing-mode-override PAY_PER_REQUEST
   ```

   您可以阻止在还原的表上创建部分或所有二级索引。
**注意**  
如果您阻止在还原表上创建部分或所有二级索引，则还原操作会更快且更具成本效益。

   ```
   aws dynamodb restore-table-from-backup \
   --target-table-name Music \
   --backup-arn arn:aws:dynamodb:us-east-1:123456789012:table/Music/backup/01581081403719-db9c1f91 \
   --global-secondary-index-override '[]' \
   --sse-specification-override Enabled=true,SSEType=KMS
   ```
**注意**  
提供的二级索引应与现有索引匹配。还原时无法创建新索引。

   您可以组合使用不同的替代方式。例如，您可以使用单个全局二级索引并同时更改预配置的吞吐量，如下所示。

   ```
   aws dynamodb restore-table-from-backup \
   --target-table-name Music \
   --backup-arn arn:aws:dynamodb:eu-west-1:123456789012:table/Music/backup/01581082594992-303b6239 \
   --billing-mode-override PROVISIONED \
   --provisioned-throughput-override ReadCapacityUnits=100,WriteCapacityUnits=100 \
   --global-secondary-index-override IndexName=singers-index,KeySchema=["{AttributeName=SingerName,KeyType=HASH}"],Projection="{ProjectionType=KEYS_ONLY}",ProvisionedThroughput="{ReadCapacityUnits=5,WriteCapacityUnits=5}" \
   --sse-specification-override Enabled=true,SSEType=KMS
   ```

 要验证还原，请使用 `describe-table` 命令来描述 `Music` 表。

```
aws dynamodb describe-table --table-name Music 
```

正在从备份还原的表显示状态为 **Creating (正在创建)**。还原过程完成后，`Music` 表的状态更改为 **Active (活动)**。

**重要**  
正在进行还原时，请勿修改或删除 IAM 角色策略；否则，可能会导致意外行为。例如，假设您在还原表时删除了对该表的写入权限。在这种情况下，底层 `RestoreTableFromBackup` 操作将无法向表中写入任何还原的数据。  
在还原操作完成之后，您可以修改或删除您的 IAM 角色策略。  
涉及[源 IP 限制](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip)访问目标还原表的 IAM policy 的 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-viaawsservice](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-viaawsservice) 键应设置为，`false`确保限制仅适用于委托人直接提出的请求。否则，还原将被取消。  
如果您的备份是使用 AWS 托管式密钥 或客户托管密钥加密的，请不要在还原过程中禁用或删除密钥，否则还原将失败。  
恢复操作完成后，您可以更改已还原表的加密密钥，并禁用或删除旧密钥。