使用时间点恢复 (PITR)

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

准备工作

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

    如果您不拥有上述任何角色,请与组织管理员联系以申请访问权限。

  • 您必须在所使用的 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. 可选:创建读取池实例

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

后续步骤