复制 Amazon DocumentDB 集群快照

在 Amazon DocumentDB 中,您可以将同一 AWS 区域中的手动和自动快照复制到同一账户中的不同 AWS 区域。您还可以共享同一 AWS 区域中的其他 AWS 账户拥有的快照。但是,您不能通过一个步骤跨 AWS 区域和 AWS 账户复制集群快照。这些操作必须单独执行。

作为对复制的替代,您也可与其他 AWS 账户共享手动快照。有关更多信息,请参阅共享 Amazon DocumentDB 集群快照

注意

Amazon DocumentDB 根据您保留的备份和快照数据量以及保留的时间段对您计费。有关与 Amazon DocumentDB 备份和快照关联的存储的更多信息,请参阅 了解备份存储使用量。有关 Amazon DocumentDB 存储的定价信息,请参阅 Amazon DocumentDB 定价

复制共享快照

您可以复制其他 AWS 账户与您共享的快照。如果要复制从其他 AWS 账户共享的加密快照,您必须具有用于加密此快照的 AWS KMS 加密密钥的访问权限。

您只能复制同一 AWS 区域中的共享快照,无论快照是否加密。有关更多信息,请参阅 处理加密

跨 AWS 区域复制快照

当您将快照复制到与源快照的 AWS 区域不同的 AWS 区域时,每个副本都是一个完整快照。完整快照副本包含还原 Amazon DocumentDB 集群所需的所有数据和元数据。

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

限制

复制快照时,存在以下一些限制:

  • 如果您在目标快照可用之前删除了源快照,则快照复制将失败。在删除源快照之前,请确保目标快照的状态为 AVAILABLE

  • 每个账户最多可以同时进行到同一目标区域的五个快照复制请求。

  • 根据所涉及的区域和要复制的数据量,可能需要数小时才能完成跨区域快照复制。有关更多信息,请参阅跨 AWS 区域复制快照

处理加密

您可以复制已使用 AWS KMS 加密密钥加密的快照。如果您复制加密的快照,则此快照的副本也必须加密。如果您在相同 AWS 区域中复制加密的快照,您可以使用与原始快照相同的 AWS KMS 加密密钥加密该副本,也可以指定不同的 AWS KMS 加密密钥。如果您跨区域复制加密快照,则无法为源快照所用的副本使用相同 KMS 加密密钥,因为 AWS KMS 密钥是特定于区域的。相反,您必须指定在目标 AWS 区域中有效的 AWS KMS 密钥。

源快照在复制过程中保持加密状态。有关更多信息,请参阅Amazon DocumentDB 中的数据保护

注意

对于 Amazon DocumentDB 集群快照,您无法在复制快照时加密未加密的集群快照。

参数组注意事项

跨区域复制快照时,复制不包括原始 Amazon DocumentDB 集群使用的参数组。当您还原快照以创建新集群时,该集群将获取在其中创建它的 AWS 区域的默认参数组。要为新集群提供与原始集群相同的参数,您必须执行以下操作:

  1. 在目标 AWS 区域中, 使用与原始集群相同的设置创建 Amazon DocumentDB 集群参数组。如果新 AWS 区域中已存在选项组,也可以使用它。

  2. 在目标 AWS 区域中还原快照后,修改新的 Amazon DocumentDB 集群并添加上一步中的新参数组或现有参数组。有关更多信息,请参阅修改 Amazon DocumentDB集群

复制集群快照

您可以使用 Amazon DocumentDB或 AWS 管理控制台 复制 AWS CLI集群,如下所示。

要使用 AWS 管理控制台 创建集群快照的副本,请完成以下步骤。此过程适用于在同一 AWS 区域或跨区域复制加密或未加密的集群快照。

  1. 通过以下网址登录 AWS 管理控制台并打开 Amazon DocumentDB 控制台:https://console.aws.amazon.com/docdb

  2. 在导航窗格中,选择 Snapshots (快照),然后选择要复制的快照左侧的按钮。

    提示

    如果您在屏幕左侧没有看到导航窗格,请在页面左上角选择菜单图标 (复制集群快照 - 图1)。

  3. Actions 菜单中,选择 Copy

  4. 在生成的 Make Copy of cluster snapshot 页面中,完成 Settings 部分。

    1. 目标区域 — 可选。要将集群快照复制到其他 AWS 区域,请为 Destination Region 选择该 AWS 区域。

    2. New snapshot identifier (新快照标识符) — 输入新快照的名称。

      目标快照命名约束:

      • 不能是现有快照的名称。

      • 长度为 [1—63] 个字母、数字或连字符。

      • 第一个字符必须是字母。

      • 不能以连字符结束或包含两个连续连字符。

      • 对于每个区域的每个 AWS 账户的所有集群(在 Amazon RDS、Neptune 和 Amazon DocumentDB中)必须是唯一的。

    3. Copy tags (复制标签) — 要将您在源快照上拥有的任何标签复制到快照副本,请选择 Copy tags (复制标签)

  5. 完成 Encryption-at-rest (静态加密) 部分。

    1. Encryption at rest (静态加密) — 如果您的快照已加密,则这些选项对您不适用,因为您无法从加密的快照创建未加密的副本。如果您的快照未加密,请选择以下选项之一:

      • 要加密所有集群的数据,请选择启用静态加密。如果您选择此选项,则必须指定一个主密钥

      • 要让集群的数据不加密,请选择禁用静态加密。如果您选择此选项,您的快照的副本数据不会被加密,并且您已完成加密部分。

    2. Master key (主密钥) — 从下拉列表中选择以下选项之一:

      • (default) aws/rds ((默认) aws/rds) — 账号和 AWS KMS 密钥 ID 在此选项的后面列出。

      • <some-key-name> — 如果您创建了密钥,它将列出并可供您选择。

      • Enter a key ARN (输入一个密钥 ARN) — 在 ARN 框中,输入 AWS KMS 密钥的 Amazon 资源名称 (ARN)。ARN 的格式为 arn:aws:kms:<region>:<accountID>:key/<key-id>

  6. 要制作所选快照的副本,请选择 Copy snapshot (复制快照)。或者,您可以选择 Cancel (取消) 以不复制快照。

要使用 AWS CLI 创建未加密集群快照的副本,请使用带以下参数的 copy-db-cluster-snapshot 操作。如果要将快照复制到其他 AWS 区域,请在要复制快照到其中的 AWS 区域中运行该命令。

  • --source-db-cluster-snapshot-identifier — 必需。要制作副本的集群快照的标识符。集群快照必须存在并且处于可用 状态。如果要将快照复制到另一个 AWS 区域,则此标识符必须采用源 AWS 区域的 ARN 格式。此参数不区分大小写。

  • --target-db-cluster-snapshot-identifier — 必需。要从源集群快照创建的新集群快照标识符​。此参数不区分大小写。

    目标快照命名约束:

    • 不能是现有快照的名称。

    • 长度为 [1—63] 个字母、数字或连字符。

    • 第一个字符必须是字母。

    • 不能以连字符结束或包含两个连续连字符。

    • 对于每个区域的每个 AWS 账户的所有集群(在 Amazon RDS、Neptune 和 Amazon DocumentDB中)必须是唯一的。

  • --source-region — 如果要将快照复制到其他 AWS 区域,请指定将从中复制加密集群快照的 AWS 区域。

    如果您将快照复制到其他 AWS 区域,并且未指定 --source-region,则必须指定 pre-signed-url 选项。值必须是一个 URL,其中包含要在源 AWS 区域(从中复制集群快照)中调用的 pre-signed-url 操作的签名版本 4 签名的请求。CopyDBClusterSnapshot要了解有关 pre-signed-url 的更多信息,请参阅 CopyDBClusterSnapshot

  • --kms-key-id — 用于加密集群快照副本的密钥的 KMS 密钥标识符。

    如果要将加密的集群快照复制到其他 AWS 区域,则此参数是必需的。您必须为目标 AWS 区域指定 KMS 密钥。

    如果您在相同 AWS 区域中复制加密的集群快照,则 KMS 密钥参数是可选的。集群快照的副本使用与源集群快照相同的 KMS 密钥进行加密。如果您要指定用于加密副本的新 KMS 加密密钥,则可以使用此参数执行此操作。

  • --copy-tags — Optional. The tags and values to be copied over.

要在正在进行复制时取消操作,您可以在集群快照处于--target-db-cluster-snapshot-identifier正在复制TargetDBClusterSnapshotIdentifier状态时删除由 标识的目标集群快照。

示例 1:将未加密的快照复制到同一区域

以下 AWS CLI 示例在与源快照相同的 AWS 区域中创建名为 sample-cluster-snapshotsample-cluster-snapshot-copy 的副本。创建副本时,原始快照上的所有标签都将复制到快照副本。

对于 Linux、macOS 或 Unix:

  1. aws docdb copy-db-cluster-snapshot \
  2. --source-db-cluster-snapshot-identifier sample-cluster-snapshot \
  3. --target-db-cluster-snapshot-identifier sample-cluster-snapshot-copy \
  4. --copy-tags

对于 Windows:

  1. aws docdb copy-db-cluster-snapshot ^
  2. --source-db-cluster-snapshot-identifier sample-cluster-snapshot ^
  3. --target-db-cluster-snapshot-identifier sample-cluster-snapshot-copy ^
  4. --copy-tags

此操作的输出将类似于下文。

  1. {
  2. "DBClusterSnapshot": {
  3. "AvailabilityZones": [
  4. "us-east-1a",
  5. "us-east-1b",
  6. "us-east-1c"
  7. ],
  8. "DBClusterSnapshotIdentifier": "sample-cluster-snapshot-copy",
  9. "DBClusterIdentifier": "sample-cluster",
  10. "SnapshotCreateTime": "2020-03-27T08:40:24.805Z",
  11. "Engine": "docdb",
  12. "Status": "copying",
  13. "Port": 0,
  14. "VpcId": "vpc-abcd0123",
  15. "ClusterCreateTime": "2020-01-10T22:13:38.261Z",
  16. "MasterUsername": "master-user",
  17. "EngineVersion": "4.0.0",
  18. "SnapshotType": "manual",
  19. "PercentProgress": 0,
  20. "StorageEncrypted": true,
  21. "KmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/sample-key-id",
  22. "DBClusterSnapshotArn": "arn:aws:rds:us-east-1:111122223333:cluster-snapshot:sample-cluster-snapshot-copy",
  23. "SourceDBClusterSnapshotArn": "arn:aws:rds:us-east-1:111122223333:cluster-snapshot:sample-cluster-snapshot"
  24. }
  25. }

示例 2:跨 AWS 区域复制未加密的快照

以下 AWS CLI 示例创建 sample-cluster-snapshot 的副本,其 ARN 为 arn:aws:rds:us-east-1:123456789012:cluster-snapshot:sample-cluster-snapshot。 此副本名为 sample-cluster-snapshot-copy,并且位于运行命令的 AWS 区域中。

对于 Linux、macOS 或 Unix:

  1. aws docdb copy-db-cluster-snapshot \
  2. --source-db-cluster-snapshot-identifier arn:aws:rds:us-east-1:123456789012:cluster-snapshot:sample-cluster-snapshot \
  3. --target-db-cluster-snapshot-identifier sample-cluster-snapshot-copy

对于 Windows:

  1. aws docdb copy-db-cluster-snapshot ^
  2. --source-db-cluster-snapshot-identifier arn:aws:rds:us-east-1:123456789012:cluster-snapshot:sample-cluster-snapshot ^
  3. --target-db-cluster-snapshot-identifier sample-cluster-snapshot-copy

此操作的输出将类似于下文。

  1. {
  2. "DBClusterSnapshot": {
  3. "AvailabilityZones": [
  4. "us-east-1a",
  5. "us-east-1b",
  6. "us-east-1c"
  7. ],
  8. "DBClusterSnapshotIdentifier": "sample-cluster-snapshot-copy",
  9. "DBClusterIdentifier": "sample-cluster",
  10. "SnapshotCreateTime": "2020-04-29T16:45:51.239Z",
  11. "Engine": "docdb",
  12. "AllocatedStorage": 0,
  13. "Status": "copying",
  14. "Port": 0,
  15. "VpcId": "vpc-abc0123",
  16. "ClusterCreateTime": "2020-04-28T16:43:00.294Z",
  17. "MasterUsername": "master-user",
  18. "EngineVersion": "4.0.0",
  19. "LicenseModel": "docdb",
  20. "SnapshotType": "manual",
  21. "PercentProgress": 0,
  22. "StorageEncrypted": false,
  23. "DBClusterSnapshotArn": "arn:aws:rds:us-east-1:111122223333:cluster-snapshot:sample-cluster-snapshot-copy",
  24. "SourceDBClusterSnapshotArn": "arn:aws:rds:us-east-1:111122223333:cluster-snapshot:sample-cluster-snapshot",
  25. }
  26. }

示例 3:跨 AWS 区域复制加密快照

以下 AWS CLI 示例创建 sample-cluster-snapshot 从 us-west-2 区域到 us-east-1 区域的副本。此命令在 us-east-1 区域中调用。

对于 Linux、macOS 或 Unix:

  1. aws docdb copy-db-cluster-snapshot \
  2. --source-db-cluster-snapshot-identifier arn:aws:rds:us-west-2:123456789012:cluster-snapshot:sample-cluster-snapshot \
  3. --target-db-cluster-snapshot-identifier sample-cluster-snapshot-copy \
  4. --source-region us-west-2 \
  5. --kms-key-id sample-us-east-1-key

对于 Windows:

  1. aws docdb copy-db-cluster-snapshot ^
  2. --source-db-cluster-snapshot-identifier arn:aws:rds:us-west-2:123456789012:cluster-snapshot:sample-cluster-snapshot ^
  3. --target-db-cluster-snapshot-identifier sample-cluster-snapshot-copy ^
  4. --source-region us-west-2 ^
  5. --kms-key-id sample-us-east-1-key

此操作的输出将类似于下文。

  1. {
  2. "DBClusterSnapshot": {
  3. "AvailabilityZones": [],
  4. "DBClusterSnapshotIdentifier": "sample-cluster-snapshot-copy",
  5. "DBClusterIdentifier": "ayhu-xrsc-test-ap-southeast-1-small-cluster-kms",
  6. "SnapshotCreateTime": "2020-04-29T16:45:53.159Z",
  7. "Engine": "docdb",
  8. "AllocatedStorage": 0,
  9. "Status": "copying",
  10. "Port": 0,
  11. "ClusterCreateTime": "2020-04-28T16:43:07.129Z",
  12. "MasterUsername": "chimera",
  13. "EngineVersion": "4.0.0",
  14. "LicenseModel": "docdb",
  15. "SnapshotType": "manual",
  16. "PercentProgress": 0,
  17. "StorageEncrypted": true,
  18. "KmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/sample-key-id",
  19. "DBClusterSnapshotArn": "arn:aws:rds:us-east-1:111122223333:cluster-snapshot:sample-cluster-snapshot-copy",
  20. "SourceDBClusterSnapshotArn": "arn:aws:rds:us-west-2:111122223333:cluster-snapshot:sample-cluster-snapshot",
  21. }
  22. }