

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 备份和还原 Amazon Neptune 数据库集群
<a name="backup-restore"></a>

本节介绍如何备份和还原 Amazon Neptune 数据库集群。

**Topics**
+ [Neptune 备份](#backup-restore-overview-backups)
+ [Neptune 数据库集群的容错能力](backup-restore-overview-fault-tolerance.md)
+ [CloudWatch 对管理 Neptune 备份存储非常有用的指标](backup-restore-overview-metrics.md)
+ [从 Neptune 备份还原数据](backup-restore-overview-restore.md)
+ [Neptune 中的备份时段](backup-restore-overview-backup-window.md)
+ [在 Neptune 中创建数据库集群快照](backup-restore-create-snapshot.md)
+ [从数据库集群快照还原](backup-restore-restore-snapshot.md)
+ [复制数据库集群快照](backup-restore-copy-snapshot.md)
+ [共享数据库集群快照](backup-restore-share-snapshot.md)
+ [删除 Neptune 快照](backup-restore-delete-snapshot.md)

## Neptune 备份
<a name="backup-restore-overview-backups"></a>

Neptune 自动备份您的集群卷并将还原数据保留*备份保留期*的时长。Neptune 备份是连续且递增的，因此，您可以快速还原到备份保留期内的任何时间点。在写入备份数据时，不会发生任何性能影响或数据库服务中断。在创建或修改数据库集群时，可指定备份保留期 (1 天到 35 天)。

要控制备份存储使用量，可以缩短备份保留间隔和/或删除不再需要的旧的手动快照。要帮助控制成本，您可以监控持续备份和存在时间超出保留期的手动快照所消耗的存储量。您可以缩短备份保留间隔，并在不再需要手动快照时删除它们。

如果希望备份的保留期超出备份保留期，还可为集群卷中的数据创建快照。存储快照会产生 Neptune 的标准存储费用。有关 Neptune 存储定价的更多信息，请参阅 [Amazon Neptune 定价](https://aws.amazon.com/neptune/pricing/)。

Neptune 在整个备份保留期间保留增量还原数据。因此，您只需为在备份保留期之外所要保留的数据构建快照。您可以从该快照创建新的数据库集群。

**重要**  
如果您删除数据库集群，则会同时删除其所有自动备份，并且无法恢复。这意味着，除非您选择手动创建最终数据库快照，否则您以后无法将数据库实例还原到其最终状态。在删除集群时，不会删除手动快照。

**注意**  
对于 Amazon Neptune 数据库集群，默认备份保留期为 1 天，不管创建数据库集群的方式如何。
您无法在 Neptune 上禁用自动备份。Neptune 的备份保留期是由数据库集群管理的。

# Neptune 数据库集群的容错能力
<a name="backup-restore-overview-fault-tolerance"></a>

Neptune 数据库集群设计为具有容错能力。集群卷跨越单个 AWS 区域中的多个可用区，每个可用区都包含集群卷数据的副本。该功能意味着您的数据库集群可容忍可用区的故障，而不发生任何数据丢失，只是会短暂中断服务。

如果数据库集群中的主实例失败，Neptune 将通过两种方式之一来自动失效转移到新的主实例：
+ 将现有的 Neptune 副本提升为新的主实例
+ 创建新的主实例

如果数据库集群具有一个或多个 Neptune 副本，则 Neptune 副本将在故障事件期间提升为主实例。故障事件将导致短暂中断，其间的读取和写入操作将失败并引发异常。不过，服务通常会在 120 秒内 (经常在 60 秒内) 还原。要提高数据库集群的可用性，建议您在两个或更多的不同可用区中创建至少一个或多个 Neptune 副本。

您可以通过为每个副本分配一个优先级来自定义发生故障后将 Neptune 副本提升为主实例的顺序。优先级介于 0（最高优先级）和 15（最低优先级）之间。如果主实例失败，则 Neptune 会将具有最高优先级的 Neptune 副本提升为新的主实例。您可以随时修改 Neptune 副本的优先级。修改优先级不会触发失效转移。

您可以使用 AWS CLI 来设置数据库实例的故障转移优先级，如下所示：

```
aws neptune modify-db-instance --db-instance-identifier (the instance ID) --promotion-tier (the failover priority value)
```

多个 Neptune 副本可同属一个优先级，这会产生提升层问题。如果两个或更多 Neptune 副本同属一个优先级，则 Neptune 将提升最大的副本。如果两个或多个 Neptune 副本的优先级和大小均相同，则 Neptune 将提升同一提升层中的任意副本。

如果数据库集群不包含任何 Neptune 副本，则将在故障事件期间重新创建主实例。故障事件将导致中断，其间的读取和写入操作将失败并引发异常。创建新的主实例时将还原服务，该操作所需的时间通常在 10 分钟内。将 Neptune 副本提升为主实例要比创建新的主实例快得多。

# CloudWatch 对管理 Neptune 备份存储非常有用的指标
<a name="backup-restore-overview-metrics"></a>

 您可以使用亚马逊 CloudWatch 指标`TotalBackupStorageBilled``SnapshotStorageUsed`、和`BackupRetentionPeriodStorageUsed`来查看和监控 Neptune 备份使用的存储量，如下所示：
+ `BackupRetentionPeriodStorageUsed` 表示目前用于存储连续备份的备份存储量（以字节为单位）。此值取决于集群卷的大小和您在保留期内所做的更改的数量。但是，出于计费目的，它不会超过保留期内的集群卷的累计大小。例如，如果您的集群 `VolumeBytesUsed` 大小为 107,374,182,400 字节 (100 GiB) 且保留期为两天，则 `BackupRetentionPeriodStorageUsed` 的最大值为 214,748,364,800 字节 (100 GiB \$1 100 GiB)。
+ `SnapshotStorageUsed` 表示用于存储超出备份保留期的手动快照的备份存储量（以字节为单位）。当手动快照的创建时间戳在保留期内时，手动快照不会计入快照备份存储。所有自动快照也不会计入快照备份存储。每个快照的大小是您拍摄快照时的集群卷的大小。`SnapshotStorageUsed` 值取决于您保留的快照数和每个快照的大小。例如，假设您有一个保留期外的手动快照，并且在拍摄快照时集群的 `VolumeBytesUsed` 大小为 100 GiB。的数量 SnapshotStorageUsed 为 107,374,182,400 字节 (100 GiB)。
+ `TotalBackupStorageBilled` 表示 `BackupRetentionPeriodStorageUsed` 与 `SnapshotStorageUsed` 之和（以字节为单位）再减去免费备份存储量（等于一天的集群卷的大小）。免费备份存储等于最新的卷大小。例如，如果您的集群 `VolumeBytesUsed` 大小为 100 GiB，保留期为两天，并且您有一个保留期外的手动快照，则 `TotalBackupStorageBilled` 为 214,748,364,800 字节 (200 GiB \$1 100 GiB - 100 GiB)。

[您可以通过控制台监控 Neptune 集群并使用 CloudWatch 指标生成报告。CloudWatch ](https://console.aws.amazon.com/cloudwatch/ )有关如何使用 CloudWatch 指标的更多信息，请参阅[监控 Neptune](monitoring.md)和中的指标表[Neptun CloudWatch e 指标](cw-metrics.md#cw-metrics-available)。

# 从 Neptune 备份还原数据
<a name="backup-restore-overview-restore"></a>

您可以从 Neptune 保留的备份数据或您保存的数据库集群快照创建新的 Neptune 数据库集群以恢复数据。您可以将从备份数据创建的新数据库集群副本快速还原到备份保留期内的任何时间点。备份保留期内的 Neptune 备份的持续和增量性质意味着您无需频繁创建数据快照来缩短还原时间。

要确定数据库实例的最近或最早的可还原时间，请在 Neptune 控制台上查找 `Latest Restorable Time` 或 `Earliest Restorable Time` 值。数据库集群的最近可还原时间是您可还原数据库集群的最近时间点，通常为当前时间的 5 分钟内。最早可还原时间指定可将集群卷还原到的备份保留期内的时间点。

您可以通过检查 `Latest Restorable Time` 和 `Earliest Restorable Time` 值来确定数据库集群还原完成的时间。在还原操作完成之前，`Latest Restorable Time` 和 `Earliest Restorable Time` 值将返回 NULL。如果 `Latest Restorable Time` 或 `Earliest Restorable Time` 返回 NULL，则无法请求备份或还原操作。

**要将数据库实例恢复到指定时间，请使用 AWS 管理控制台**

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

1. 在导航窗格中，选择 **Instances (实例)**。选择要还原的数据库集群的主实例。

1. 选择**实例操作**，然后选择**还原到时间点**。

   在**启动数据库实例**窗口中，在**还原时间**下选择**自定义**。

1. 在 **Custom (自定义)** 下方指定要还原到的日期和时间。

1. 在**设置**下为**数据库实例标识符**键入已还原的新数据库实例的名称。

1. 选择 **Launch DB Instance (启动数据库实例)** 以启动还原后数据库实例。

   此时将使用您指定的名称创建新的数据库实例，并创建新的数据库集群。数据库集群名称是在新的数据库实例名称后面加上 `–cluster`。例如，如果新数据库实例名称为 `myrestoreddb`，则新数据库集群名称为 `myrestoreddb-cluster`。

# Neptune 中的备份时段
<a name="backup-restore-overview-backup-window"></a>

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

在自动备份窗口期间，在备份过程初始化期间，存储 I/O 可能会短暂暂暂挂起（通常在几秒钟以内）。在备份多可用区部署时，可能需要等待几分钟。

备份时段通常由 Neptune 底层的 Amazon RDS 控制面板从每个区域的八小时时间期间中随机选择。《Amazon RDS 用户指南》的[备份时段](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow)部分记录了从中分配默认备份时段的每个区域的时间期间。

# 在 Neptune 中创建数据库集群快照
<a name="backup-restore-create-snapshot"></a>

Neptune 创建数据库集群的存储卷快照，并备份整个数据库集群而不仅仅是各个数据库。当您创建数据库集群快照时，需要确定所要备份的数据库集群。然后，为数据库集群快照命名，以便以后通过它进行还原。创建数据库集群快照所用时间因数据库大小而异。快照包含整个存储卷。因此，文件（如临时文件） 的大小也会影响创建快照所需时间。

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

## 使用控制台创建数据库集群快照
<a name="backup-restore-create-snapshot-console"></a>

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

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

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

1. 在数据库实例列表中，选择数据库集群的主实例。

1. 选择**实例操作**，然后选择**拍摄快照**。

   将显示**拍摄数据库快照**窗口。

1. 在**快照名称**框中，输入数据库集群快照的名称。

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

# 从数据库集群快照还原
<a name="backup-restore-restore-snapshot"></a>

在创建数据库集群的 Amazon Neptune 快照时，Neptune 创建集群的存储卷快照，同时备份集群的所有数据，而不仅仅是各个实例。您随后可通过从该数据库集群快照还原来创建新的数据库集群。还原数据库集群时，您需要提供用于还原的数据库集群快照的名称，然后提供还原所创建的新数据库集群的名称。

**Contents**
+ [从快照还原 Neptune 数据库集群时需要注意的事项](#backup-restore-restore-snapshot-considerations)
  + [您无法还原到现有的数据库集群](#backup-restore-restores-to-new-cluster)
  + [不还原任何实例](#backup-restore-restore-no-restored-instances)
  + [不还原任何自定义参数组](#backup-restore-restore-default-parameters)
  + [不还原任何自定义安全组](#backup-restore-restore-default-security-group)
  + [您无法从共享的加密快照中还原](#backup-restore-restore-not-shared-and-encrypted)
  + [还原后的数据库集群使用的存储空间与以前一样多](#backup-restore-restore-same-storage-allocation)
+ [如何从快照还原](#backup-restore-restore-snapshot-restoring)
  + [使用控制台从快照中还原](#backup-restore-restore-snapshot-restoring-console)

## 从快照还原 Neptune 数据库集群时需要注意的事项
<a name="backup-restore-restore-snapshot-considerations"></a>

### 您无法还原到现有的数据库集群
<a name="backup-restore-restores-to-new-cluster"></a>

还原过程始终会创建新的数据库集群，因此您无法还原到已存在的数据库集群。

### 不还原任何实例
<a name="backup-restore-restore-no-restored-instances"></a>

通过还原创建的新数据库集群没有与之关联的实例。

一旦还原完成且您的新数据库集群变为可用状态后，就显式创建将需要的实例。您可以在 Neptune 控制台上或使用 [CreateDBInstance](api-instances.md#CreateDBInstance) API 执行此操作。

### 不还原任何自定义参数组
<a name="backup-restore-restore-default-parameters"></a>

通过还原创建的新数据库集群会自动具有与其关联的默认数据库参数组。

一旦还原完成并且新的数据库集群变为可用状态，就请关联您从中还原的实例所用的任何自定义数据库参数组。为此，请使用 Neptune 控制台上的**修改**命令或 [ModifyDBInstance](api-instances.md#ModifyDBInstance) API。

**重要**  
我们建议您保存您正在创建其快照的数据库集群中使用的自定义参数组。然后，当您从该快照还原时，可以轻松地将正确的参数组与还原的数据库集群关联。

### 不还原任何自定义安全组
<a name="backup-restore-restore-default-security-group"></a>

通过还原创建的新数据库集群会自动具有与其关联的默认安全组。

一旦还原完成并且新的数据库集群变为可用状态，就请关联您从中还原的实例所用的任何自定义安全组。为此，请使用 Neptune 控制台上的**修改**命令或 [ModifyDBInstance](api-instances.md#ModifyDBInstance) API。

### 您无法从共享的加密快照中还原
<a name="backup-restore-restore-not-shared-and-encrypted"></a>

您无法从共享并且加密的数据库集群快照中还原数据库集群。

而应创建快照的非共享副本，并从该副本还原。

### 还原后的数据库集群使用的存储空间与以前一样多
<a name="backup-restore-restore-same-storage-allocation"></a>

在从数据库集群快照还原数据库集群时，分配给新集群的存储量与分配给从中创建快照的数据库集群的存储量相同，不管实际使用了多少分配的存储量。

 换句话说，计费的“高水位”不会发生变化。重置高水位需要从图表中导出数据，然后将这些数据重新加载到新的数据库集群中（请参阅[Neptune 存储账单](feature-overview-storage.md#feature-overview-storage-billing)）。

## 如何从快照还原
<a name="backup-restore-restore-snapshot-restoring"></a>

您可以使用 AWS 管理控制台、或 Neptune API 从数据库集群快照还原数据库集群。 AWS CLI

### 使用控制台从快照中还原
<a name="backup-restore-restore-snapshot-restoring-console"></a>

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

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

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

1. 依次选择 **Actions (操作)** 和 **Restore Snapshot (还原快照)**。

1. 在 **Restore DB Instance (还原数据库实例)** 页面上的 **DB Instance Identifier (数据库实例标识符)** 字段中，输入还原的数据库集群的名称。

1. 选择 **Restore DB Instance**。

1. 如果要还原创建快照的数据库集群包含的数据库集群功能，您必须修改数据库集群以使用安全组。后续步骤假定您的数据库集群在 Virtual Private Cloud (VPC) 中。如果您的数据库集群不在 VPC 中，请使用 Amazon EC2 控制台找到该数据库集群所需的安全组。

   1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

   1. 在导航窗格中，选择**安全组**。

   1. 选择要用于数据库集群的安全组。如有必要，请添加规则，将该安全组链接到 EC2 实例的安全组。

# 复制数据库集群快照
<a name="backup-restore-copy-snapshot"></a>

使用 Neptune，您可以复制自动或手动数据库集群快照。在复制快照后，该副本为手动快照。

您可以在同一 AWS 区域内和跨 AWS 区域复制快照。一步即可跨区域和账户复制快照。

将自动快照复制到另一个 AWS 账户的过程分为两步：首先，使用自动快照创建手动快照，然后将手动快照复制到另一个账户。

 除了复制之外，您还可以与其他 AWS 帐户共享手动快照。有关更多信息，请参阅 [共享数据库集群快照](backup-restore-share-snapshot.md)。

**Topics**
+ [有关复制快照的限制](#backup-restore-copy-snapshot-limitations)
+ [数据库集群快照副本的保留期](#backup-restore-copy-snapshot-retention)
+ [复制快照时处理加密](#backup-restore-copy-snapshot-encryption)
+ [跨 AWS 区域复制快照](#backup-restore-copy-snapshot-cross-region)
+ [使用控制台复制数据库集群快照](#backup-restore-copy-snapshot-console)
+ [使用复制数据库集群快照 AWS CLI](#backup-restore-copy-snapshot-cli)

## 有关复制快照的限制
<a name="backup-restore-copy-snapshot-limitations"></a>

复制快照时，存在以下一些限制：
+ 您可以在中国（北京）和中国（宁夏）之间复制快照，但不能在这些中国区域与其他地区之间 AWS 复制快照。
+ 您可以在 AWS GovCloud （美国东部）和 AWS GovCloud （美国西部）之间复制快照，但不能在这些 AWS GovCloud (US) 区域与其他 AWS 地区之间复制快照。
+ 如果您在目标快照可用之前删除了源快照，则快照复制会失败。在删除源快照之前，请确保目标快照的状态为 `AVAILABLE`。
+ 每个账户最多可以同时进行指向单一区域的五个快照复制请求。
+ 根据所涉及的区域和要复制的数据量，可能需要数小时才能完成跨区域快照复制。

  如果来自给定来源区域的大量跨区域快照复制请求，Neptune 可能会将来自 AWS 该源区域的新跨区域复制请求放入队列， AWS 直到一些正在进行的复制完成。当复制请求在该队列中时，不显示有关这些复制请求的进度信息。只有在复制开始后才会显示进度信息。

## 数据库集群快照副本的保留期
<a name="backup-restore-copy-snapshot-retention"></a>

Neptune 在以下情况下会删除自动快照：
+ 在保留期结束时。
+ 当您对数据库集群禁用自动快照时。
+ 当您删除数据库集群时。

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

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

## 复制快照时处理加密
<a name="backup-restore-copy-snapshot-encryption"></a>

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

您无法在复制时加密未加密的数据库集群快照。

对于 Amazon Neptune 数据库集群快照，您也可以将数据库集群快照保持未加密状态，而是在还原时指定 AWS KMS 加密密钥。还原的数据库集群使用指定的密钥加密。

## 跨 AWS 区域复制快照
<a name="backup-restore-copy-snapshot-cross-region"></a>

当您将快照复制到与源快照 AWS 区域不同的 AWS 区域时，即使您复制的是增量快照，第一个副本也是完整的快照副本。完整快照副本包含还原数据库实例需要的所有数据和元数据。在第一次快照复制之后，您可以将同一数据库实例的增量快照复制到同一 AWS 账户中的相同目标区域。

增量快照仅包含在同一数据库实例的最近快照后发生更改的数据。与完整快照复制相比，增量快照复制速度更快，产生的存储成本更低。未加密和加密的快照都支持跨 AWS 区域的增量快照复制。

**重要**  
对于共享快照，不支持复制增量快照。对于共享快照，所有副本都是完整的快照，即使在相同区域中也是如此。

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

## 使用控制台复制数据库集群快照
<a name="backup-restore-copy-snapshot-console"></a>

如果源数据库引擎为 Neptune，则您的快照是数据库集群快照。对于每个 AWS 账户，每个 AWS 区域一次最多可以复制五个数据库集群快照。支持复制加密和未加密的数据库集群快照。

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

要在正在进行复制时取消操作，请在数据库集群快照处于 **copying (正在复制)** 状态时删除目标数据库集群快照。

以下过程适用于复制加密和未加密的数据库集群快照：

**复制数据库集群快照**

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

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

1. 选中要复制的数据库集群快照的复选框。

1. 选择**操作**，然后选择**复制快照**。此时显示 **Make Copy of DB Snapshot (建立数据库快照副本)** 页面。

1. 在 **New DB Snapshot Identifier (新数据库实例标识符)** 中输入数据库集群快照副本的名称。

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

1. 对于 **Enable Encryption**，请选择下列选项之一：
   + 如果数据库集群快照未加密，且不需要加密该副本，请选择**启用加密**。
   + 如果数据库集群快照未加密，但需要加密该副本，请选择**禁用加密**。在这种情况下，对于**主密钥**，请指定用于加密数据库集群快照副本的密 AWS KMS 钥标识符。
   + 如果数据库集群快照已加密，请选择**启用加密**。在这种情况下，必须加密该副本，因此，**是**为已选中状态。对于**主密钥**，请指定用于加密数据库集群快照副本的密 AWS KMS 钥标识符。

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

## 使用复制数据库集群快照 AWS CLI
<a name="backup-restore-copy-snapshot-cli"></a>

您可以使用[copy-db-cluster-snapshot](api-snapshots.md#CopyDBClusterSnapshot) AWS CLI 命令复制数据库快照。

如果您要将快照复制到新 AWS 区域，请在新区域中运行该命令。

使用以下参数描述和示例来确定使用 AWS CLI复制快照时使用的参数。
+ `--source-db-cluster-snapshot-identifier` – 源数据库快照的标识符。
  + 如果源快照与副本位于同一 AWS 区域，请指定有效的数据库快照标识符，例如`neptune:instance1-snapshot-20130805`。
  + 如果源快照与副本位于不同的 AWS 区域，请指定有效的数据库快照 ARN，例如。`arn:aws:neptune:us-west-2:123456789012:snapshot:instance1-snapshot-20130805`
  + 如果从共享的手动数据库快照进行复制，则该参数必须为共享的数据库快照的 Amazon Resource Name (ARN)。
  + 如果您要复制加密快照，则此参数必须采用源 AWS 区域的 ARN 格式，并且必须与参数`SourceDBSnapshotIdentifier`中的`PreSignedUrl`相匹配。
+ `--target-db-cluster-snapshot-identifier` – 加密数据库快照的新副本的标识符。
+ `--kms-key-id`— — 加密数据库快照的 AWS KMS 密钥 ID。 AWS KMS 密钥 ID 是 AWS KMS 加密密钥的 Amazon 资源名称 (ARN)、 AWS KMS 密钥标识符或 AWS KMS 密钥别名。
  + 如果您从 AWS 账户中复制加密的数据库快照，则可以为此参数指定一个值，以便使用新的加密密钥对副本进行 AWS KMS 加密。如果您未为此参数指定值，则使用与源数据库快照相同的 AWS KMS 密钥对数据库快照的副本进行加密。
  + 您无法使用此参数创建未加密快照的加密副本。尝试这样做会生成错误。
  + 如果您将加密快照复制到其他 AWS 区域，则必须为目标 AWS 区域指定 AWS KMS 密钥。 AWS KMS 加密密钥特定于创建密钥的 AWS 区域，您不能在另一个 AWS 区域中使用来自一个 AWS 区域的加密密钥。
+ `--source-region`— — 源数据库快照所在 AWS 区域的 ID。如果您将加密快照复制到其他 AWS 区域，则必须指定此选项。
+ `--region`— — 您要将快照复制到的 AWS 区域的 ID。如果您将加密快照复制到其他 AWS 区域，则必须指定此选项。

**Example 从未加密快照，到相同区域**  
以下代码使用新名称`mydbsnapshotcopy`创建从`us-east-1` AWS 区域到区域的快照副本。`us-west-2`  
对于 Linux、OS X 或 Unix：  

```
aws neptune copy-db-cluster-snapshot \
  --source-db-cluster-snapshot-identifier instance1-snapshot-20130805 \
  --target-db-cluster-snapshot-identifier mydbsnapshotcopy
```
对于 Windows：  

```
aws neptune copy-db-cluster-snapshot ^
  --source-db-cluster-snapshot-identifier instance1-snapshot-20130805 ^
  --target-db-cluster-snapshot-identifier mydbsnapshotcopy
```

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

```
aws neptune copy-db-cluster-snapshot \
  --source-db-cluster-snapshot-identifier arn:aws:neptune:us-east-1:123456789012:snapshot:instance1-snapshot-20130805 \
  --target-db-cluster-snapshot-identifier mydbsnapshotcopy \
  --source-region us-east-1 \
  --region us-west-2
```
对于 Windows：  

```
aws neptune copy-db-cluster-snapshot ^
  --source-db-cluster-snapshot-identifier arn:aws:neptune:us-east-1:123456789012:snapshot:instance1-snapshot-20130805 ^
  --target-db-cluster-snapshot-identifier mydbsnapshotcopy ^
  --source-region us-east-1 ^
  --region us-west-2
```

**Example 从加密快照，跨区域**  
以下代码示例将加密的数据库快照从该`us-east-1` AWS 区域复制到该`us-west-2`区域。在 `us-west-2` 区域中运行命令。  
对于 Linux、OS X 或 Unix：  

```
aws neptune copy-db-cluster-snapshot \
  --source-db-cluster-snapshot-identifier arn:aws:neptune:us-west-2:123456789012:snapshot:instance1-snapshot-20161115 \
  --target-db-cluster-snapshot-identifier mydbsnapshotcopy \
  --source-region us-east-1 \
  --region us-west-2
  --kms-key-id my_us_west_2_key
```
对于 Windows：  

```
aws neptune copy-db-cluster-snapshot ^
  --source-db-cluster-snapshot-identifier arn:aws:neptune:us-west-2:123456789012:snapshot:instance1-snapshot-20161115 ^
  --target-db-cluster-snapshot-identifier mydbsnapshotcopy ^
  --source-region us-east-1 ^
  --region us-west-2
  --kms-key-id my-us-west-2-key
```

# 共享数据库集群快照
<a name="backup-restore-share-snapshot"></a>

使用 Neptune，您可以按以下方式共享手动数据库集群快照：
+ 共享手动数据库集群快照（无论是加密还是未加密）都允许授权 AWS 账户复制快照。
+ 通过共享未加密的手动数据库集群快照，授权 AWS 账户可以直接从快照中还原数据库集群，而不必获取其副本并从中恢复。加密快照无法直接恢复；必须先对其进行复制，然后再从副本中恢复。

**注意**  
要共享自动数据库集群快照，请通过复制自动快照来创建手动数据库集群快照，然后共享该副本。

有关从数据库集群快照还原数据库集群的更多信息，请参阅[如何从快照还原](backup-restore-restore-snapshot.md#backup-restore-restore-snapshot-restoring)。

您最多可以与其他20个 AWS 账户共享手动快照。您还可以将未加密的手动快照共享为公共快照，这样所有 AWS 账户都可以使用该快照。以公有快照形式共享快照时应谨慎，不要将您的私有信息包含在任何公有快照之中。

**注意**  
使用 AWS Command Line Interface (AWS CLI) 或 Neptune API 从共享快照还原数据库集群时，必须将共享快照的 Amazon 资源名称 (ARN) 指定为快照标识符。

**Topics**
+ [共享加密的数据库集群快照](#backup-restore-share-snapshot-encrypted)
+ [共享数据库集群快照](#backup-restore-share-snapshot-sharing)

## 共享加密的数据库集群快照
<a name="backup-restore-share-snapshot-encrypted"></a>

您可共享使用 AES-256 加密算法“静态”加密的数据库集群快照。有关更多信息，请参阅 [加密 Amazon Neptune 数据库中的静态数据](encrypt.md)。为此，您必须执行以下步骤：

1. 与您希望能够访问快照的所有账户共享用于加密快照的 AWS Key Management Service (AWS KMS) 加密密钥。

   您可以通过将另一个 AWS 账户添加到 KMS 密钥策略来与其他账户共享 AWS KMS 加密密钥。有关更新密钥策略的详细信息，请参阅《AWS KMS 开发人员指南》**中的[密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。有关创建密钥策略的示例，请参阅本主题下文中的 [创建 IAM 策略来启用加密快照的复制功能](#backup-restore-share-snapshot-encrypted-key-iam)。

1. 使用 AWS 管理控制台 AWS CLI、或 Neptune API 与其他账户共享加密快照。

这些限制适用于共享加密快照：
+ 您无法公开共享加密的快照。
+ 您无法共享使用共享快照的 AWS 账户的默认 AWS KMS 加密密钥加密的快照。

### 允许访问 AWS KMS 加密密钥
<a name="backup-restore-share-snapshot-encrypted-key"></a>

要让其他 AWS 账户复制从您的账户共享的加密数据库集群快照，您与之共享快照的账户必须有权访问加密快照的 KMS 密钥。要允许其他 AWS 账户访问 AWS KMS 密钥，请在 KMS 密钥策略中使用您要与之共享的 AWS 账户的 ARN 来更新 KMS 密钥`Principal`的密钥策略。然后允许 `kms:CreateGrant` 操作。有关一般说明，请参阅《AWS Key Management Service 开发人员指南》**中的[允许其它账户中的用户使用 KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)。

在您授予 AWS 账户访问您的 KMS 加密密钥的权限后，要复制您的加密快照，该 AWS 账户必须创建一个 IAM 用户（如果还没有）。KMS 安全限制不允许为此使用根 AWS 账户身份。该 AWS 账户还必须向该 IAM 用户附加一个 IAM 策略，允许 IAM 用户使用您的 KMS 密钥复制加密的数据库集群快照。

在下面的密钥策略示例中，用户 `111122223333` 是 KMS 加密密钥的所有者，而用户 `444455556666` 是要与之共享密钥的账户。此更新的密钥策略允许 AWS 账户访问 KMS 密钥，方法是将用户`444455556666`根 AWS 账户身份的 ARN 包含在策略中，并允许该`kms:CreateGrant`操作。`Principal`

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

****  

```
{
    "Id": "key-policy-1",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowUseOfTheKey",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/KeyUser",
                    "arn:aws:iam::444455556666:root"
                ]
            },
            "Action": [
                "kms:CreateGrant",
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowAttachmentOfPersistentResources",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/KeyUser",
                    "arn:aws:iam::444455556666:root"
                ]
            },
            "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "kms:GrantIsForAWSResource": true
                }
            }
        }
    ]
}
```

------

#### 创建 IAM 策略来启用加密快照的复制功能
<a name="backup-restore-share-snapshot-encrypted-key-iam"></a>

在外部 AWS 账户有权访问您的 KMS 密钥后，该账户的所有者可以创建一个策略，允许为该账户创建的 IAM 用户复制使用该 KMS 密钥加密的加密快照。

以下示例显示了一个可附加到 AWS 账户 `444455556666` 的 IAM 用户的策略。它使 IAM 用户能够从 AWS 账户 `111122223333` 复制已使用 `us-west-2` 区域中 KMS 密钥 `c989c1dd-a3f2-4a5d-8d96-e793d082ab26` 加密的共享快照。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowUseOfTheKey",
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey",
                "kms:CreateGrant",
                "kms:RetireGrant"
            ],
            "Resource": ["arn:aws:kms:us-west-2:111122223333:key/c989c1dd-a3f2-4a5d-8d96-e793d082ab26"]
        },
        {
            "Sid": "AllowAttachmentOfPersistentResources",
            "Effect": "Allow",
            "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": ["arn:aws:kms:us-west-2:111122223333:key/c989c1dd-a3f2-4a5d-8d96-e793d082ab26"],
            "Condition": {
                "Bool": {
                    "kms:GrantIsForAWSResource": true
                }
            }
        }
    ]
}
```

------

有关更新密钥策略的详细信息，请参阅《AWS Key Management Service 开发人员指南》**中的[密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

## 共享数据库集群快照
<a name="backup-restore-share-snapshot-sharing"></a>

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

### 使用控制台来共享数据库集群快照
<a name="backup-restore-share-snapshot-sharing-console"></a>

使用 Neptune 控制台，可以与最多 20 个 AWS 账户共享手动数据库集群快照。您也可以停止与一个或多个账户共享手动快照。

**共享手动数据库集群快照**

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

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

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

1. 依次选择 **Actions (操作)** 和 **Share Snapshot (共享快照)**。

1. 为 **DB snapshot visibility (数据库快照可见性)** 选择以下一个选项。
   + 如果源未加密，选择**公有**可允许所有 AWS 账户从您的手动数据库集群快照还原数据库集群。或者选择 P **ri** vate，仅允许您指定的 AWS 账户从您的手动数据库集群快照还原数据库集群。
**警告**  
如果您将**数据库快照可见性**设置为**公开**，则所有 AWS 账户都可以从您的手动数据库集群快照还原数据库集群并可以访问您的数据。请勿将包含私密信息的任何手动数据库集群快照以**公开**形式共享。
   + 如果源已加密，由于已加密的快照无法公开共享，**DB snapshot visibility (数据库快照可见性)** 将设为 **Private (私密)**。

1. 在**AWS 账户 ID** 中 AWS ，输入您想要允许从手动快照还原数据库集群的账户标识符。然后，选择 **Add (添加)**。重复此操作以添加其他 AWS 账户标识符，最多 20 个 AWS 账户。

   如果您在向允许的账户列表中添加 AWS 账户标识符时出错，则可以通过选择错误的 AWS 账户标识符右侧的 **“删除”** 将其从列表中删除。

1. 为要允许恢复手动快照的所有 AWS 账户添加标识符后，选择**保存**。

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

1. [在家中打开亚马逊 Neptune 主机。https://console.aws.amazon.com/neptune/](https://console.aws.amazon.com/neptune/home)

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

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

1. 选择 **Actions (操作)**，然后 **Share Snapshot (共享快照)**。

1. 要删除某个 AWS 账户的权限，请从授权 AWS 账户列表中为该账户的账户标识符选择**删除**。

1. 选择**保存**。

# 删除 Neptune 快照
<a name="backup-restore-delete-snapshot"></a>

您可以使用 ​AWS 管理控制台、AWS CLI 或 Neptune 管理 API 删除数据库快照：

## 使用控制台删除
<a name="backup-restore-delete-snapshot-console"></a>

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

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

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

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

1. 在确认页面上选择 **Delete (删除)**。

## 使用 AWS CLI 删除
<a name="backup-restore-delete-snapshot-cli"></a>

您还可以使用 AWS CLI [delete\$1db\$1cluster\$1snapshot](api-snapshots.md#DeleteDBClusterSnapshot) 命令删除数据库快照，使用 `--db-snapshot-identifier` 参数标识要删除的快照：

对于 Linux、OS X 或 Unix：

```
1. aws neptune delete-db-cluster-snapshot \
2.     --db-snapshot-identifier <name-of-the-snapshot-to-delete>
```

对于 Windows：

```
1. aws neptune delete-db-cluster-snapshot ^
2.     --db-snapshot-identifier <name-of-the-snapshot-to-delete>
```

## 使用 Neptune 管理 API 执行删除
<a name="backup-restore-delete-snapshot-api"></a>

您可以使用开发工具包之一，通过调用 [DeleteDBClusterSnapshot](api-snapshots.md#DeleteDBClusterSnapshot) API 来删除数据库快照，使用 `DBSnapshotIdentifier` 参数标识要删除的数据库快照。