使用时间点恢复 (PITR)

本页介绍了如何将集群恢复到近期的状态。建议将数据恢复到某个时间点的 AlloyDB for PostgreSQL 集群,以便快速从大规模数据丢失中恢复。

准备工作

  • 您使用的 Google Cloud 项目必须已启用对 AlloyDB 的访问权限
  • 您必须在所使用的 Google Cloud 项目中拥有以下 IAM 角色之一:
    • roles/alloydb.admin(AlloyDB 管理员预定义 IAM 角色)
    • roles/owner(Owner 基本 IAM 角色)
    • roles/editor(Editor 基本 IAM 角色)

    如果您不具备上述任何角色,请与您的 Organization Administrator 联系以请求访问权限。

  • 您必须在所使用的 Google Cloud 项目中拥有以下所有 IAM 角色:
    • compute.networks.list
    • compute.addresses.create
    • compute.addresses.list
    • compute.globalAddresses.create
    • compute.globalAddresses.list
    • servicenetworking.services.addPeering

    如需获得这些权限,同时遵循最小权限原则,请让管理员向您授予 roles/alloydb.admin(AlloyDB Admin 预定义 IAM)角色。

从近期某个时间点恢复

借助 AlloyDB,您可以从最近特定时间范围内的任意时间点完全恢复活跃集群的数据。

可用的 PITR 窗口

您可以从以下两个时间点中的较晚时间点恢复:

  • 恢复期限的截止时间。例如,如果您的恢复期为 14 天,则此时刻是过去 14 天。

  • 自上次启用连续备份以来所创建的最早备份的创建时间。如果您在启用持续备份的情况下创建了集群,并且自那以后一直未停用持续备份,那么此时刻实际上就成为了集群最早备份的创建时间。

如果您停用并随后重新启用持续备份,则在您或 AlloyDB 创建集群的第一个新备份之前,您将无法执行时间点恢复。这可以是按需备份,也可以是 AlloyDB 在您启用持续备份后进行的每日备份中的第一个备份。如需详细了解备份类型,请参阅数据备份和恢复概览

执行时间点恢复

  1. 您可以使用 Google Cloud 控制台或 Google Cloud CLI 执行恢复。

    控制台

    1. 前往集群页面。

      转到集群

    2. 点击资源名称列中的某个集群。

    3. 点击数据保护

    4. 从某个时间点恢复下,点击恢复

    5. 目标时间字段中,输入要从中恢复的日期和时间。

    6. 集群 ID 字段中,输入新集群的名称。

    7. 网络字段中,为新集群选择要使用的虚拟私有云网络。

    8. 如果您想使用客户管理的加密密钥 (CMEK)(而非默认的 Google 管理的加密方式)加密此集群的连续备份和数据更改日志,请按以下额外步骤操作:

      1. 点击高级加密选项

      2. 点击客户管理的加密密钥 (CMEK) 单选按钮。

      3. 点击选择客户管理的密钥列表,然后选择一个密钥。

    9. 点击恢复

    gcloud

    使用 gcloud alloydb clusters restore 命令,指定集群和时间戳。请注意,与从备份恢复不同,时间点恢复需要原始集群仍然存在。您无法对已删除的集群执行此类恢复。

    gcloud alloydb clusters restore NEW_CLUSTER \
      --source-cluster=SOURCE_CLUSTER \
      --point-in-time=TIMESTAMP \
      --region=REGION

    此命令会返回一个操作,您可以使用 gcloud alloydb operations describe 命令查询其状态。

    gcloud alloydb operations describe OPERATION_ID \
      --region=REGION

    替换以下内容:

    • NEW_CLUSTER:要与新集群搭配使用的 ID。

    • SOURCE_CLUSTER:要从中恢复数据的集群的 ID。
      如需从其他项目中的集群恢复,请将其替换为以下格式的完整集群路径:
      projects/SOURCE_PROJECT/locations/SOURCE_REGION/clusters/SOURCE_CLUSTER

    • TIMESTAMP:对要从中恢复数据的时间点的说明,采用 RFC 3339 格式表示,例如 2012-11-15T16:19:00.094Z。您可以指定小到微秒级的秒数小数部分。

      请注意,此时间戳必须在您创建集群时指定的保留期限内。

    • REGION:包含源集群且 AlloyDB 在其中创建新集群的区域。例如:us-central1

    • PROJECT_ID:新集群所在的项目的 ID。

    如果您想使用客户管理的加密密钥 (CMEK)(而非 Google 管理的加密)对新集群的数据进行加密,则必须提供以下额外参数:

    • --kms-key=KEY_ID:要使用的 CMEK 密钥的 ID。* --kms-keyring=KEYRING_ID:密钥的密钥环的 ID。* --kms-location=LOCATION_ID:该密钥串所在区域的 ID。请注意,它必须与集群所在的区域一致。
    • --kms-project=PROJECT_ID:密钥串项目的 ID。

    如需恢复启用了 Private Service Connect 的集群,请务必添加 --enable-private-service-connect 标志。

  2. AlloyDB 完成创建集群后,为其创建主实例。您可以通过该实例访问已恢复的数据。请注意,新实例的配置不必与原始主实例的配置完全匹配。

  3. 可选:创建读取池实例

恢复操作完成后,您就可以开始使用集群了。

后续步骤