从备份保险柜恢复 AlloyDB 集群

本文档介绍了如何使用 Google Cloud 控制台或 gcloud CLI从备份保险柜恢复 AlloyDB 集群。它介绍了如何从受保管的备份进行恢复或执行时间点恢复 (PITR)。

如需详细了解 Backup and DR 的概念功能,请参阅 Backup and DR 概览。 如果您想先备份数据库,请参阅 将 AlloyDB 集群备份到备份保险柜。

AlloyDB 集群的灾难恢复选项。

存储在备份保险柜中的备份独立于源集群的生命周期和项目。

即使包含源 AlloyDB 集群的原始工作负载项目被删除,您也可以恢复备份。这是因为 CMEK 加密备份所需的解密权限锚定到备份保险柜项目的 Backup and DR 服务代理,而不是工作负载项目。这可确保只要备份保险柜和 Cloud Key Management Service 保险柜密钥完好无损,并且服务代理具有权限,您的备份就始终可访问和可恢复。

准备工作

在从受保管的备份恢复 AlloyDB 集群之前,请确保您拥有所需的角色和权限。

如需获得从受保管的备份恢复 AlloyDB 集群所需的权限,请让您的管理员向您授予以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。

这些预定义角色包含 从受保管的备份恢复 AlloyDB 集群所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需从受保管的备份恢复 AlloyDB 集群,您需要拥有以下权限:

  • 如需创建恢复目标,则需要以下权限: alloydb.clusters.restore
  • 如需从保险柜读取备份,则需要以下权限:
    • backupdr.bvbackups.useReadOnlyForAlloydbCluster
    • backupdr.bvdataSources.useReadOnlyForAlloydbCluster

您也可以使用自定义角色或其他预定义角色来获取这些权限。

服务代理角色和密钥版本要求

由于备份是增量备份,因此如果密钥随时间轮替,则单个备份可能会由保险柜密钥的多个 Cloud Key Management Service 密钥版本加密。 如需成功执行恢复操作,请确保满足以下前提条件:

  • 用于增量备份的保险柜密钥的所有 Cloud Key Management Service 密钥版本都必须存在。

  • 备份保险柜项目中的 Backup and DR 服务代理必须对用于备份的保险柜密钥具有 Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) 角色。

已恢复集群的 KMS 密钥行为

如果在恢复过程中未提供特定的 CMEK,则默认情况下,已恢复的 集群将由加密 Google-managed encryption key。 它不会自动由保险柜密钥或原始源集群密钥加密。

如果在恢复配置期间提供了 CMEK,则已恢复的集群将使用新指定的密钥进行加密。

从受保管的备份恢复 AlloyDB 集群

如需从受保管的备份恢复 AlloyDB for PostgreSQL 集群,请完成以下部分中的任务。

将备份恢复到新集群

控制台

  1. 在 Google Cloud 控制台中,前往 受保管的备份 页面。

    前往“受保管的备份”页面

  2. 选择要恢复的备份。在备份的备份详情 页面上,或从 菜单中,选择恢复。

    系统会显示恢复备份 页面。资源类型 预先填充了 AlloyDB。

  3. 在资源名称 中,选择要恢复的 AlloyDB 集群。

  4. 点击备份 。系统会显示一个窗格,其中显示所有可用的备份。

  5. 选择要恢复的特定备份。

  6. 对于选择恢复目标,选择要将 AlloyDB 集群恢复到的项目。

  7. 点击继续 。

    下一页会显示到目前为止的恢复详情,并提示您配置新集群 。这会根据您在备份中存储的配置创建一个新的 AlloyDB 集群。您可以在恢复完成后自定义集群。

  8. 使用小写字母、数字和连字符提供新的集群 ID ,以字母开头。

  9. 选择专用连接方法。您可以采用以下两种方法在 Google Cloud 或第三方托管的 VPC 网络中连接 服务,而无需 分配外部 IP 地址:

    • 专用服务访问通道:使用对等互连连接将集群分配给单个 VPC 网络。当连接到与 AlloyDB 集群位于同一 VPC 网络中的 specific Google Cloud 和第三方服务时,请使用此方法。这需要额外的 API。

    • Private Service Connect:允许用户通过许可名单和 Private Service Connect 端点从一个或 多个 VPC 网络访问集群。

gcloud

gcloud beta alloydb clusters restore RESTORED_CLUSTER_ID \
    --project=WORKLOAD_PROJECT_ID \
    --region=REGION \
    --backupdr-backup=BACKUP_NAME

替换以下内容:

  • RESTORED_CLUSTER_ID:您要恢复的新 AlloyDB 集群的 ID。

  • WORKLOAD_PROJECT_ID:您要将 AlloyDB 集群恢复到的项目的 ID。

  • REGION:您要将 AlloyDB 集群 恢复到的 Google Cloud 区域。

  • BACKUP_NAME:您要恢复的备份的名称。

创建主实例

Backup and DR 完成集群创建后, 会为其创建主实例。

创建新的主实例时,您需要指定其配置,包括其大小和标志;Backup and DR 不会将实例配置存储为备份的一部分。请注意,该配置不必与原始主实例的配置完全匹配。

Backup and DR 完成实例创建后,您可以使用该实例访问恢复的数据。

设置读取池实例

通过设置读取池实例(如有必要)来完成新集群的配置。

将 AlloyDB 集群恢复到某个时间点

如需将 AlloyDB for PostgreSQL 集群恢复到特定时间点,请完成以下部分中的任务。

要求

  • 如需成功对 CMEK 加密的源集群执行时间点恢复 (PITR),源集群密钥和保险柜密钥都必须存在且可访问。

  • 工作负载项目中的 AlloyDB for PostgreSQL 服务代理必须对源集群密钥具有 Cloud KMS CryptoKeyEncrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) 角色,并且备份保险柜项目中的 Backup and DR 服务代理必须对保险柜密钥具有 Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) 角色。

将备份恢复到新集群

控制台

  1. 在 Google Cloud 控制台中,前往 受保管的备份 页面。

    前往“受保管的备份”页面

    受保管的备份 页面仅列出已应用备份方案且备份已存储在该项目中的备份保险柜中的数据资源。

  2. 在备份列表顶部,选择从某个时间点开始恢复 。

    系统会显示从某个时间点开始恢复到新集群 窗格,您可以在其中选择要恢复到的时间点以及要创建的新集群的详细信息。

  3. 输入此集群恢复期内的目标时间,以便从该时间恢复您的集群数据。

  4. 配置新集群。这会根据您在备份中存储的配置创建一个新的 AlloyDB 集群。您可以在恢复完成后自定义集群。

  5. 使用小写字母、数字和连字符提供新的集群 ID ,以字母开头。

  6. 选择专用连接方法。您可以采用以下两种方法在 Google Cloud 或第三方托管的 VPC 网络中连接 服务,而无需 分配外部 IP 地址:

    • 专用服务访问通道:使用对等互连连接将集群分配给单个 VPC 网络。当连接到与 AlloyDB 集群位于同一 VPC 网络中的 specific Google Cloud 和第三方服务时,请使用此方法。这需要额外的 API。

    • Private Service Connect:允许用户通过许可名单和 Private Service Connect 端点从一个或多个 VPC 网络访问集群。

gcloud

  1. 使用以下命令查找数据源 ID:

    gcloud backup-dr data-source-references fetch-for-resource-type alloydb.googleapis.com/Cluster \
        --location=REGION \
        --project=WORKLOAD_PROJECT_ID \
        --filter='dataSourceGcpResourceInfo.gcp_resourcename="projects/WORKLOAD_PROJECT_NUMBER/locations/REGION/clusters/CLUSTER_NAME'
    
  2. 使用您在上一步中找到的数据源 ID 恢复集群:

    gcloud beta alloydb clusters restore RESTORED_CLUSTER_ID \
        --project=WORKLOAD_PROJECT_ID \
        --region=REGION \
        --backupdr-data-source=projects/VAULT_PROJECT_ID/locations/REGION/backupVaults/BV_ID/dataSources/DS_ID \
        --point-in-time=POINT_IN_TIME
    

    替换以下内容:

    • WORKLOAD_PROJECT_ID:您要将 AlloyDB 集群恢复到的项目的 ID。

    • REGION:您要将 AlloyDB 集群 恢复到的 Google Cloud 区域。

    • RESTORED_CLUSTER_ID:您要恢复的新 AlloyDB 集群的 ID。

    • VAULT_PROJECT_ID:包含备份保险柜的项目的 ID。

    • BV_ID:备份保险柜的 ID。

    • DS_ID:数据源的 ID。

    • POINT_IN_TIME:您要将集群恢复到的特定时间点。示例值为 2025-10-10T10:16:10Z

创建主实例

Backup and DR 完成集群创建后,会为其创建主实例。

创建新的主实例时,您需要指定其配置,包括其大小和标志;Backup and DR 不会将实例配置存储为备份的一部分。请注意,该配置不必与原始主实例的配置完全匹配。

Backup and DR 完成实例创建后,您可以使用该实例访问恢复的数据。

设置读取池实例

通过设置读取池实例(如有必要)来完成新集群的配置。

列出备份保险柜中的备份

使用 gcloud CLI 列出备份并选择要恢复的备份:

  1. 使用以下命令查找数据源 ID:

       gcloud backup-dr data-source-references fetch-for-resource-type alloydb.googleapis.com/Cluster \
         --location=REGION \
         --project=WORKLOAD_PROJECT_ID \
         --filter='dataSourceGcpResourceInfo.gcp_resourcename="projects/WORKLOAD_PROJECT_NUMBER/locations/REGION/clusters/CLUSTER_NAME "'
     ```
    
  2. 使用以下命令列出备份:

       gcloud backup-dr backups list \
         --project=VAULT_PROJECT_ID \
         --location=REGION \
         --backup-vault=BV_ID \
         --data-source='projects/VAULT_PROJECT_ID/locations/REGION/backupVaults/BV_ID/dataSources/DS_ID'
    

替换以下内容:

  • REGION: Google Cloud 区域。

  • WORKLOAD_PROJECT_ID:AlloyDB 集群所在项目的 ID。

  • WORKLOAD_PROJECT_NUMBER:AlloyDB 集群所在项目的编号。

  • CLUSTER_NAME:AlloyDB 集群的名称。

  • VAULT_PROJECT_ID:包含备份保险柜的项目的 ID。

  • BV_ID:备份保险柜的 ID。

  • DS_ID:数据源的 ID。

后续步骤