从备份保险柜恢复 Compute Engine 实例

本页面可帮助您通过 Google Cloud 控制台从 备份保险柜恢复 Compute Engine 实例。

准备工作

  • 为执行恢复的目标项目中的保险柜的备份保险柜服务代理授予 Backup and DR Compute Engine Operator (roles/backupdr.computeEngineOperator) IAM 角色。

  • 如果您使用的是共享 VPC,请为 VPC 宿主项目中的保险柜的备份保险柜服务代理授予 Compute Network User (roles/compute.networkUser) IAM 角色。

  • 为在备份保险柜项目中执行恢复的用户授予以下 IAM 角色。

    • Backup and DR Restore User (roles/backupdr.restoreUser),适用于备份保险柜项目和目标项目。
    • Compute Viewer (roles/compute.viewer),仅适用于目标项目。

    这些预定义角色包含访问 Compute Engine 项目中的备份保险柜所需的权限。如需了解特定权限,请参阅以下列表。

    • backupdr.bvbackups.restore
    • backupdr.compute.restoreFromBackupVault
    • backupdr.backupVaults.get
    • backupdr.backupVaults.list
    • backupdr.bvbackups.list
    • backupdr.bvdataSources.get
    • backupdr.bvdataSources.list
    • backupdr.bvbackups.get

    如需使用 Google Cloud CLI CLI 或 API 恢复实例,用户必须拥有以下权限:

    • 对备份资源的 backupdr.bvbackups.restore
    • 对将恢复实例的目标项目的 backupdr.compute.restoreFromBackupVault

适用于 Google Cloud 控制台的其他权限

使用 Google Cloud 控制台恢复实例时,用户需要 CLI 权限以及以下权限。控制台需要这些额外的权限才能列出并显示必要的 Compute Engine 资源,以便在界面中进行选择:

  • compute.acceleratorTypes.list
  • compute.disks.list
  • compute.machineTypes.list
  • compute.projects.get
  • compute.regions.list
  • compute.zones.list

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

恢复 Compute Engine 实例

请按照以下说明恢复 Compute Engine 实例。

控制台

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

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

    此处列出了所有具有受保管备份的 Compute Engine 实例。

  2. 点击操作图标以选择恢复 操作。系统会显示恢复页面 ,您可以在其中选择以下恢复选项:

    • 选择资源名称
    • 选择备份创建时间
    • 选择要将虚拟机恢复到的项目名称
  3. 点击继续

    • 系统会显示下一页基于备份新建一个虚拟机实例 ,其中会根据源虚拟机属性预先填充虚拟机属性。您可以修改属性以创建新虚拟机,例如更改区域机器类型 的选择。
  4. 点击创建 以基于所选备份创建新虚拟机。

gcloud

  1. 如果尚未授予,请在虚拟机恢复的恢复项目中,为备份保险柜服务代理授予 Backup and DR Compute Engine Operator (roles/backupdr.computeEngineOperator) IAM 角色。

  2. 如需获取备份保险柜服务帐号,请使用以下命令。

      gcloud backup-dr backup-vaults describe BACKUPVAULT_NAME
      --location=REGION
    

    替换以下内容:

    • BACKUPVAULT_NAME:您要从中恢复数据的备份保险柜的名称。
    • REGION:备份保险柜的区域。
  3. 在恢复 Compute Engine 实例之前,请使用以下命令获取数据源 ID 和所需备份的 ID。

    1. 查找数据源 ID

        gcloud backup-dr data-sources list \
        --project=PROJECT \
        --location=REGION \
        --backup-vault=BACKUPVAULT_NAME \
        "--filter=dataSourceGcpResource.computeInstanceDatasourceProperties.name:(DATA_SOURCE)" \
        "--format=get(name)")
      
    2. 列出数据源的现有备份,以找到正确的 BACKUP_ID。

        gcloud backup-dr backups list \
        --location=REGION \
        --backup-vault=BACKUPVAULT_NAME \
        --data-source=DATA_SOURCE \
        "--format=yaml(backupType,computeInstanceBackupProperties.sourceInstance,consistencyTime,enforcedRetentionEndTime,expireTime,name)"
      
  4. 如需恢复 Compute Engine 实例,请使用以下命令。

    • 使用备份 ID 在与工作负载项目相同的项目中恢复虚拟机。

        gcloud backup-dr backups restore compute test-backup-id \
        --project=PROJECT --location=REGION \
        --backup-vault=BACKUPVAULT_NAME --data-source=DATA_SOURCE\
        --name=NAME --target-zone=TARGET_ZONE \
        --target-project=TARGET_PROJECT
      
    • 使用备份完整资源网址在与工作负载项目相同的项目中恢复虚拟机。

        gcloud backup-dr backups restore compute projects/test-project-id/locations/us-central1/backupVaults/test-vault/dataSources/test-ds/backups/test-backup-id \
        --name=NAME --target-zone=TARGET_ZONE \
        --target-project=TARGET_PROJECT
      
    • 使用自定义服务账号和网络配置恢复 Compute Engine 实例。

        gcloud backup-dr backups restore compute test-backup-id \
        --project=PROJECT --location=REGION \
        --backup-vault=BACKUPVAULT_NAME --data-source=DATA_SOURCE\
        --name=NAME --target-zone=TARGET_ZONE \
        --target-project=TARGET_PROJECT \
        --network-interface=network=NETWORK,subnet=SUBNET \
        --service-account=SERVICE_ACCOUNT \
        --scopes=SCOPE
      

      替换以下内容:

      • PROJECT:备份保险柜项目的名称。
      • REGION:备份保险柜的位置。
      • BACKUPVAULT_NAME:您要从中恢复数据的备份保险柜的名称。
      • DATA_SOURCE:您要从中恢复数据的数据源的名称。
      • NAME:已恢复虚拟机的名称。
      • TARGET_ZONE:虚拟机恢复到的区域。
      • TARGET_PROJECT:虚拟机恢复到的项目。
      • NETWORK:虚拟机的网络 URI。
      • SUBNET:虚拟机的子网 URI。
      • SERVICE_ACCOUNT:已恢复虚拟机的服务帐号。
      • SCOPE:服务帐号的授权范围。

如需替换其他虚拟机属性,请参阅 Backup and DR Service Google Cloud CLI 命令概览

从启用了 CMEK 的备份保险柜恢复

从启用了 CMEK 的备份保险柜恢复备份时,恢复的资源的加密取决于来源的加密:

  • 如果来源资源受 CMEK 保护 :恢复的资源默认使用与来源相同的 CMEK 密钥。例如:
    • 使用密钥 K1 加密的 Compute Engine 永久性磁盘会恢复到使用 K1 加密的磁盘。
    • 如果虚拟机有多个磁盘,则恢复的虚拟机中的每个磁盘都会继承其相应来源磁盘的加密(使用 CMEK 加密的磁盘仍使用其原始密钥加密,而使用 Google 管理的加密的磁盘仍使用 Google 管理的加密)。
  • 如果来源资源使用 Google 管理的加密 :恢复的资源默认使用 Google 管理的加密。

使用 API 或 Google Cloud CLI 恢复 Compute Engine 永久性磁盘或 Compute Engine 实例时,您可以替换此默认行为。例如,您可以将受 CMEK 保护的资源的备份恢复到使用 Google 管理的加密的新资源,或恢复到受不同 CMEK 密钥保护的新资源。如需恢复到受新 CMEK 密钥保护的资源,请确保目标项目的相关服务代理(例如 Compute Engine 服务代理)对新目标密钥具有 roles/cloudkms.cryptoKeyEncrypterDecrypter 权限。

如果在恢复操作期间保护来源工作负载的 Cloud Key Management Service 密钥不可用,则恢复默认会失败。在这种情况下,您必须使用 API 或 Google Cloud CLI 替换加密设置,方法是指定新的 CMEK 密钥,或将恢复的资源的加密类型更改为 Google 管理的加密。

如果用于加密备份保险柜中数据的 Cloud Key Management Service 密钥版本已停用或销毁,您将无法从该备份恢复。

Backup and DR Compute Engine 指南