克隆 Amazon DocumentDB 集群卷 - Amazon DocumentDB

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

克隆 Amazon DocumentDB 集群卷

通过使用 Amazon DocumentDB 克隆功能,您可以创建一个新集群,该集群使用相同的 Amazon DocumentDB 集群卷并具有与原始集群卷相同的数据。该过程旨在快速且经济高效。我们将新集群及其关联的数据卷称为克隆。与使用其他技术(如还原快照)实际复制数据相比,创建克隆速度更快且空间利用效率更高。

Amazon DocumentDB 支持从预配置的 Amazon DocumentDB 集群创建 Amazon DocumentDB 预配置克隆。使用与源不同的部署配置创建克隆时,源的 Amazon DocumentDB 引擎的最新版本将被用于创建克隆。

当您从 Amazon DocumentDB 集群创建克隆时,将在您的账户(即拥有源 Amazon DocumentDB 集群的同一个账户)中 AWS 创建克隆。

Amazon DocumentDB 克隆概述

Amazon DocumentDB 使用copy-on-write 协议来创建克隆。此机制占用最少的额外空间来创建初始克隆。首次创建克隆时,Amazon DocumentDB 会保留源数据库集群和新(克隆的)Amazon DocumentDB 集群使用的数据的单个副本。只有当源 Amazon DocumentDB 集群或 Amazon DocumentDB 集群克隆对数据(在 Amazon DocumentDB 存储卷上)进行更改时,才会分配额外的存储空间。要了解有关该 copy-on-write 协议的更多信息,请参阅Amazon DocumentDB 克隆的工作原理

Amazon DocumentDB 克隆非常适合使用您的生产数据快速设置测试环境,且不会有损坏数据的风险。您可以将克隆用于多种类型的应用程序,例如:

  • 对潜在的变化(例如模式变化和参数组变化)进行试验,以评估所有影响。

  • 执行工作负载密集型操作,例如导出数据或在克隆上运行分析查询。

  • 为开发、测试或其他用途创建生产数据库集群的副本。

您可以从同一个 Amazon DocumentDB 集群创建多个克隆。您还可以从另一个克隆创建多个克隆。

创建 Amazon DocumentDB 克隆后,您可以对 Amazon DocumentDB 实例实现与源 Amazon DocumentDB 集群不同的配置。例如,您可能不需要用于开发目的的克隆来满足与源生产 Amazon DocumentDB 集群相同的高可用性要求。在这种情况下,您可以使用单个 Amazon DocumentDB 实例来配置克隆,而不是使用 Amazon DocumentDB 集群使用的多个数据库实例。

当克隆完成测试、开发等使用目的时,您可以将其删除。

Amazon DocumentDB 克隆的限制

Amazon DocumentDB 克隆目前具有以下限制:

  • 您可以根据需要创建任意数量的克隆,最多为 AWS 区域中允许的最大数据库集群数。但是,在创建 15 个克隆后,下一个克隆是完整副本。克隆操作就像 point-in-time恢复一样。

  • 您无法在与源 Amazon DocumentDB 集群不同的 AWS 区域创建克隆。

  • 您无法从没有数据库实例的 Amazon DocumentDB 集群创建克隆。您只能克隆具有至少一个数据库实例的 Amazon DocumentDB 集群。

  • 您可以在与 Amazon DocumentDB 集群不同的虚拟私有云(VPC)中创建克隆。不过,这些 VPC 的子网必须映射到相同的可用区。

Amazon DocumentDB 克隆的工作原理

Amazon DocumentDB 克隆运行于 Amazon DocumentDB 集群的存储层。就支持 Amazon DocumentDB 存储卷的底层耐用媒体而言,它使用的copy-on-write协议既快速又节省空间。您可以在 管理亚马逊 DocumentDB 集群 中了解有关 Amazon DocumentDB 集群卷的更多信息。

了解 copy-on-write 协议

Amazon DocumentDB 集群将数据存储在底层 Amazon DocumentDB 存储卷的页面中。

例如,在下图中,您可以找到拥有四个数据页(1、2、3 和 4)的 Amazon DocumentDB 集群(A)。假设从 Amazon DocumentDB 集群创建了一个克隆 B。创建克隆时,未复制任何数据。相反,克隆指向与源 Amazon DocumentDB 集群相同的页面集。

Amazon DocumentDB 集群卷包含 4 个页面,适用于源集群 A 和克隆 B

创建克隆时,通常不需要额外的存储空间。该 copy-on-write 协议在物理存储介质上使用与源数据段相同的分段。只有当源段的容量不足以容纳整个克隆段时,才需要额外的存储空间。如果是这种情况,源段将被复制到另一个物理设备。

在下图中,您可以找到使用相同集群 A 及其克隆 B 的 copy-on-write 协议示例,如前所示。如果您对 Amazon DocumentDB 集群(A)进行更改,那么第 1 页上保存的数据也将随之而发生改变。Amazon DocumentDB 没有写入原始页面 1,而是创建了一个新页面 1[A]。集群(A)的 Amazon DocumentDB 集群卷现在指向页面 1[A]、2、3 和 4,而克隆(B)仍引用原始页面。

Amazon DocumentDB 源数据库集群卷及其克隆,均已更改。

在克隆上,对存储卷的第 4 页进行了更改。Amazon DocumentDB 没有写入原始页面 4,而是创建了一个新页面 4[B]。克隆现在指向页面 1、2、3 和页面 4[B],而集群(A)继续指向 1[A]、2、3 和 4。

Amazon DocumentDB 源数据库集群卷及其克隆,均已更改。

随着时间推移,当源 Amazon DocumentDB 集群卷和克隆上出现了更多更改时,因此需要更多存储空间来捕获和存储更改。

删除源集群卷

删除与一个或多个克隆关联的源集群卷时,克隆不会受到影响。克隆继续指向以前由源集群卷拥有的页面。

创建 Amazon DocumentDB 克隆

您可以在与源 Amazon DocumentDB 集群相同的 AWS 账户中创建克隆。为此,您可以使用 AWS Management Console 或 AWS CLI 以及以下步骤。

通过使用 Amazon DocumentDB 克隆,您可以从预配置的 Amazon DocumentDB 集群中创建预配置的 Amazon DocumentDB 集群克隆。

Using the AWS Management Console

以下过程介绍了如何使用 AWS Management Console克隆 Amazon DocumentDB 集群。

使用带有一个 Amazon DocumentDB 实例的 Amazon DocumentDB 集群中的 AWS Management Console 结果创建克隆。

这些说明适用于创建克隆的同一个 AWS 账户所拥有的数据库集群。数据库集群必须归同一个 AWS 账户所有,因为 Amazon DocumentDB 不支持跨账户克隆。

要创建您的 AWS 账户拥有的数据库集群的克隆,请使用 AWS Management Console
  1. 登录并打开亚马逊 DocumentDB 控制台,网址为 https://console.aws.amazon.com/docdb。 AWS Management Console

  2. 在导航窗格中,选择集群

  3. 从列表中选择您的 Amazon DocumentDB 集群,从操作中选择创建克隆

    创建克隆首先需要选择 Amazon DocumentDB 集群。

    “创建克隆”页面打开后,您可以配置 Amazon DocumentDB 集群克隆的集群标识符实例类以及其他选项。

  4. 设置部分,执行以下操作:

    1. 集群标识符中,请输入您要为克隆的 Amazon DocumentDB 集群拟定的名称。

    2. 对于实例配置,请为克隆的 Amazon DocumentDB 集群选择适当的实例类

      创建克隆首先需要选择 Amazon DocumentDB 集群并指定数据库实例大小。
    3. 对于网络设置,请选择使用案例的子网组和关联的 VPC 安全组。

    4. 对于 E ncryption-at-rest,如果源集群(正在克隆的集群)启用了加密,则克隆的集群还必须启用加密。如果这种情况适用,则启用加密选项将显示为灰色(禁用),但选中了启用加密选项。相反,如果源集群未启用加密,则启用加密选项可用,您可以选择启用或禁用加密。

      为您的 Amazon DocumentDB 集群克隆指定网络和加密设置。
    5. 通过选择要导出的日志类型(可选)、输入用于连接到集群的特定端口、以及启用防止意外删除集群的保护(默认启用),完成新的集群克隆配置。

      通过选择性地选择要导出的日志类型、用于连接到集群的特定端口以及防止意外删除集群的保护,完成新的克隆配置。
    6. 完成 Amazon DocumentDB 集群克隆的所有设置。要了解有关 Amazon DocumentDB 集群和实例设置的更多信息,请参阅 管理亚马逊 DocumentDB 集群

  5. 选择创建克隆以启动所选 Amazon DocumentDB 集群的 Amazon DocumentDB 克隆。

克隆创建完成后,它将会与您的其他 Amazon DocumentDB 集群一起列在控制台数据库部分,而且其当前状态也会一起显示。当其状态为可用时,您的克隆即可以使用。

Using the AWS CLI

使用克隆您 AWS CLI 的 Amazon DocumentDB 集群需要几个步骤。

您使用的restore-db-cluster-to-point-in-time AWS CLI 命令会生成一个空的 Amazon DocumentDB 集群,其中包含 0 个亚马逊 DocumentDB 实例。也就是说,此命令仅还原 Amazon DocumentDB 集群,而不还原该集群的数据库实例。在克隆可用之后,您可以单独执行此操作。该过程的两个步骤如下:

  1. 使用 restore-db-cluster-to-point-in-time CLI 命令创建克隆。与此命令一起使用的参数控制正在创建的空 Amazon DocumentDB 集群(克隆)的容量类型和其他详细信息。

  2. 使用 CL create-db-instanceI 命令在还原的 Amazon DocumentDB 集群中重新创建 Amazon DocumentDB 实例,为克隆创建亚马逊文档数据库实例。

以下命令假设 AWS CLI 已将您的 AWS 区域设置为默认区域。这种方法使您无需在每个命令中传递 --region 名称。有关更多信息,请参阅配置 AWS CLI。您还可以在后面的每个 CLI 命令中指定 --region

主题

    创建克隆

    您传递给 restore-db-cluster-to-point-in-time CLI 命令的特定参数会有所不同。传递内容取决于您要创建的克隆类型。

    使用以下过程从预配置的 Amazon DocumentDB 集群中创建预配置的 Amazon DocumentDB 克隆。

    创建与源 Amazon DocumentDB 集群具有相同引擎模式的克隆
    • 使用 restore-db-cluster-to-point-in-time CLI 命令并指定以下参数的值:

      • --db-cluster-identifier – 为克隆选择一个有意义的名称。使用 restore-db-cluster-to-point-in-time CLI 命令时可以为克隆命名。

      • --restore-type – 使用 copy-on-write 创建源数据库集群的克隆。如果没有此参数,restore-db-cluster-to-point-in-time 将还原 Amazon DocumentDB 集群,而不会创建克隆。restore-type 的默认值为 full-copy

      • --source-db-cluster-identifier – 使用要克隆的源 Amazon DocumentDB 集群的名称。

      • --use-latest-restorable-time – 此值指向克隆的最新可还原卷数据。此参数是 restore-type copy-on-write 所必需的,但是,您不能将 restore-to-time parameter 与它一起使用。

    以下示例从名为 my-source-cluster 的集群创建一个名为 my-clone 的克隆。

    对于 Linux、macOS 或 Unix:

    aws docdb restore-db-cluster-to-point-in-time \ --source-db-cluster-identifier my-source-cluster \ --db-cluster-identifier my-clone \ --restore-type copy-on-write \ --use-latest-restorable-time

    对于 Windows:

    aws docdb restore-db-cluster-to-point-in-time ^ --source-db-cluster-identifier my-source-cluster ^ --db-cluster-identifier my-clone ^ --restore-type copy-on-write ^ --use-latest-restorable-time

    该命令返回包含克隆详细信息的 JSON 对象。在尝试为您的克隆创建数据库实例之前,请检查以确保您的克隆数据库集群可用。有关更多信息,请参阅以下检查状态并获取克隆的详细信息:

    检查状态并获取克隆的详细信息

    您可以使用以下命令检查新创建的空数据库集群的状态。

    $ aws docdb describe-db-clusters --db-cluster-identifier my-clone --query '*[].[Status]' --output text

    或者,您可以使用以下 AWS CLI 查询获取为克隆创建数据库实例所需的状态和其他值:

    对于 Linux、macOS 或 Unix:

    aws docdb describe-db-clusters --db-cluster-identifier my-clone \ --query '*[].{Status:Status,Engine:Engine,EngineVersion:EngineVersion}'

    对于 Windows:

    aws docdb describe-db-clusters --db-cluster-identifier my-clone ^ --query "*[].{Status:Status,Engine:Engine,EngineVersion:EngineVersion}"

    此查询返回类似于下述信息的输出:

    [ { "Status": "available", "Engine": "docdb", "EngineVersion": "4.0.0", } ]

    为您的克隆创建 Amazon DocumentDB 实例

    使用 C create-db-instanceLI 命令为您的克隆创建数据库实例。

    --db-instance-class 参数仅用于预配置的 Amazon DocumentDB 集群。

    对于 Linux、macOS 或 Unix:

    aws docdb create-db-instance \ --db-instance-identifier my-new-db \ --db-cluster-identifier my-clone \ --db-instance-class db.r5.4xlarge \ --engine docdb

    对于 Windows:

    aws docdb create-db-instance ^ --db-instance-identifier my-new-db ^ --db-cluster-identifier my-clone ^ --db-instance-class db.r5.4xlarge ^ --engine docdb

    用于克隆的参数

    下表总结了与 restore-db-cluster-to-point-in-time 一起用于克隆 Amazon DocumentDB 集群的各种参数。

    参数 描述

    --source-db-cluster-identifier

    使用要克隆的源 Amazon DocumentDB 集群的名称。

    --db-cluster-identifier

    为克隆选择一个有意义的名称。您可以使用 restore-db-cluster-to-point-in-time 命令为您的克隆命名。然后将此名称传递给 create-db-instance 命令。

    --restore-type

    copy-on-write 指定为 --restore-type 以创建源数据库集群的克隆,而不是还原源 Amazon DocumentDB 集群。

    --use-latest-restorable-time

    此值指向克隆的最新可还原卷数据。