备份 Compute Engine 实例

Compute Engine 实例的 Google 管理型备份流程涉及将数据发送到备份保险柜。这些备份保险柜提供不可变性和强制保留期限。您可以选择将备份存储在单个区域或多个区域中。

Google 管理型模型支持两种主要执行方法:定期备份和按需备份。本文档介绍了如何配置和管理这些备份。

概览

将备份发送到备份保险柜可确保备份不可变并强制执行保留期限。借助备份保险柜,您可以将备份存储在单区域或多区域中。备份 Compute Engine 实例的方法主要有两种:

  • 使用 Google Cloud 控制台备份 Compute Engine 实例:在Google Cloud 控制台中,您可以通过应用备份方案将 Compute Engine 实例备份到备份保险柜。您可以使用以下任一方法备份数据。这两种方法都允许您将备份安全地存储在备份保险柜中,从而在发生数据丢失或其他意外事件时,提供一种可靠的方式来恢复 Compute Engine 实例。

    • 定期备份:以特定间隔(例如每天、每周、每月或每年)自动备份 Compute Engine 实例。

    • 按需备份:根据需要随时创建按需备份。 按需备份非常适合在对实例进行重大更改之前创建备份,或用于临时数据保护。

  • 使用管理控制台备份 Compute Engine 实例:如果您有以下任一备份要求,可以使用管理控制台备份 Compute Engine 实例:

    • 跨区域备份
    • 挂接到虚拟机的特定磁盘的备份
    • 基于标记自动保护 Compute Engine 虚拟机
    • 如果 Google Cloud 基于控制台的备份方案和备份保险库与源虚拟机运行的区域不兼容

设备管理控制台是 Backup and DR 的一部分,用于管理设备管理的备份。如果您必须使用设备管理控制台,请参阅通过设备管理控制台发现并保护 Compute Engine 实例

准备工作

  1. 在 Compute Engine 实例所在的位置启用 Backup and DR Service API。

    启用该 API

  2. 创建备份保险柜

  3. [创建备份方案][2]。

  4. 为备份用户分配 IAM 角色和权限

  5. 在 Compute Engine 项目中授予备份保险柜访问权限

  6. 在存储桶上设置可观测性分析,以监控 Backup and DR 备份作业。

IAM 配置

如需配置预定备份或执行按需备份,管理员必须在备份保险柜项目中授予以下 IAM 角色:

  • Backup and DR Backup User (roles/backupdr.backupUser)
  • Viewer (roles/viewer)

Google 管理的备份操作所需的具体权限包括:

  • backupdr.backupPlans.list
  • backupdr.backupPlanAssociations.createForComputeInstance
  • backupdr.backupPlanAssociations.list
  • backupdr.backupPlanAssociations.get
  • backupdr.backupPlanAssociations.triggerBackupForComputeInstance
  • backupdr.backupPlanAssociations.deleteForComputeInstance
  • backupdr.backupPlans.useForComputeInstance
  • backupdr.locations.list
  • backupdr.operations.get
  • cloudasset.assets.searchAllResources

除了恢复权限之外,用户还必须拥有查看和检索备份元数据的权限:

  • backupdr.backupVaults.get
  • backupdr.backupVaults.list
  • backupdr.bvbackups.list
  • backupdr.bvbackups.get
  • backupdr.bvdataSources.list
  • backupdr.bvdataSources.get

如果 Compute Engine 实例与备份保险柜位于不同的项目中,您必须在 Compute Engine 项目中向备份保险柜服务代理授予 Backup and DR Compute Engine Operator (roles/backupdr.computeEngineOperator) 角色。

下表列出了每次 API 调用所需的权限:

资源 要对资源执行的操作 每次 API 调用所需的权限 需要分配到的项目
备份保险柜 创建 BackupVault backupdr.backupVaults.create 管理员项目
删除 BackupVault backupdr.backupVaults.delete 管理员项目
更新 BackupVault backupdr.backupVaults.update 管理员项目
列出备份保险柜 backupdr.backupVaults.list 管理员项目
获取备份保险柜 backupdr.backupVaults.get 管理员项目
备份方案 创建 BackupPlan backupdr.backupPlans.create 管理员项目
删除 BackupPlan backupdr.backupPlans.delete 管理员项目
获取 BackupPlan backupdr.backupPlans.get 管理员项目
列出备份方案 backupdr.backupPlans.list 管理员项目
备份方案关联 创建备份方案关联 工作负载项目
backupdr.backupPlanAssociations.createForComputeInstance 工作负载项目
backupdr.backupPlans.useForComputeInstance 管理员项目
删除备份方案关联 backupdr.backupPlanAssociations.deleteForComputeInstance 工作负载项目
在备份方案关联时触发按需备份 backupdr.backupPlanAssociations.triggerBackupForComputeInstance 工作负载项目
获取备份方案关联 backupdr.backupPlanAssociations.getForComputeInstance 工作负载项目
列出备份方案关联 backupdr.backupPlanAssociations.list 工作负载项目
获取备份方案关联 backupdr.backupPlanAssociations.fetchForComputeInstance 工作负载项目
数据源 获取 DataSource backupdr.bvdataSources.get 管理员项目
列出数据源 backupdr.backupPlanAssociations.list 管理员项目
备份 获取备份 backupdr.bvbackups.get 管理员项目
列出备份 backupdr.bvbackups.list 管理员项目
删除备份 backupdr.bvbackups.delete 管理员项目
恢复备份 backupdr.bvbackups.restore 管理员项目
运维 列出操作 backupdr.operations.list 相应项目
GET 操作 backupdr.operations.get 相应项目

约束和限制

Backup and DR 不支持为使用以下配置的 Compute Engine 实例进行 Google 管理的备份:

  • 已挂接极端永久性磁盘的实例
  • 使用任何 hyperdisk-* 磁盘类型的实例
  • 使用 C3D、H3、A3 或 Z3 机器类型的实例
  • 使用客户提供的加密密钥 (CSEK) 的实例
  • 缺少已挂接磁盘的实例
  • 大小超过 200 太字节 (TB) 的实例

配置预定备份

按照以下说明为 Compute Engine 实例配置定期备份。

控制台

  1. 在 Google Cloud 控制台中,前往已归档的备份页面。

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

  2. 点击安排备份

  3. 项目列表中,点击浏览,然后选择 Compute Engine 实例所在的项目。

  4. 区域列表中,选择您的实例所在的区域。

  5. 资源列表中,点击浏览

  6. 选择要备份的 Compute Engine 实例,然后点击完成

  7. 点击继续

  8. 备份方案列表中,点击选择

  9. 选择要用于保护 Compute Engine 实例的备份方案。

  10. 点击完成

  11. 查看备份详细信息,然后点击安排

gcloud

  1. 获取实例 ID。

      gcloud compute instances describe VM_NAME --zone=VM_ZONE --format="value(id)"
    

    替换以下内容:

    • VM_NAME:虚拟机实例的名称。
    • VM_ZONE:虚拟机所在的地理位置。
  2. 配置预定备份。

      gcloud backup-dr backup-plan-associations create BACKUP_PLAN_ASSOCIATION_NAME \
      --location=VM_REGION \
      --resource=projects/VM_PROJECT_ID/zones/VM_ZONE/instances/VM_ID \
      --backup-plan=projects/PROJECT_ID/locations/LOCATION/backupPlans/BACKUP_PLAN
    

    替换以下内容:

    • BACKUP_PLAN_ASSOCIATION_NAME:备份方案关联的名称。
    • VM_REGION:Compute Engine 实例所在的区域。
    • VM_PROJECT_ID:Compute Engine 实例所在项目的名称。
    • VM_ZONE:Compute Engine 实例所在的可用区。
    • VM_ID:Compute Engine 实例 ID。
    • PROJECT_ID:备份方案所在项目的名称。
    • LOCATION:备份方案所在的区域。
    • BACKUP_PLAN:您要将 Compute Engine 实例关联到的备份方案的名称。

Terraform

您可以使用 Terraform 资源配置定期备份


# Before creating a backup plan association, you need to create backup plan (google_backup_dr_backup_plan)
# and compute instance (google_compute_instance).
resource "google_backup_dr_backup_plan_association" "default" {
  provider                   = google-beta
  location                   = "us-central1"
  backup_plan_association_id = "my-bpa"
  resource                   = google_compute_instance.default.id
  resource_type              = "compute.googleapis.com/Instance"
  backup_plan                = google_backup_dr_backup_plan.default.name
}

Backup and DR Compute Engine 备份的应用一致性

应用一致性快照可捕获备份时应用数据的状态,包括所有应用事务已完成且所有待处理的写入内容都会刷新到磁盘。

按照以下说明为 Compute Engine 实例配置应用一致性备份。

准备工作

  1. 请参阅应用一致性快照

  2. 在 Linux 环境中,应用一致性实例备份的备份方案需要快照前脚本和快照后脚本。为 Linux 环境创建必要的快照前和快照后脚本

在 Compute Engine 实例上为应用一致性备份创建备份方案

按照以下说明为 Compute Engine 实例创建应用一致性备份。

gcloud

  1. 创建备份方案。

    gcloud backup-dr backup-plans create BACKUP_PLAN_NAME \
    --compute-instance-properties=guest-flush=true \
    --resource-type=compute.googleapis.com/Instance \
    --location=REGION \
    --project=PROJECT_ID \
    --backup-vault=BACKUPVAULT_NAME \
    --backup-rule=rule-id=RULE_NAME,recurrence=RECURRENCE,hourly-frequency=HOURS, \
    time-zone=TIME_ZONE,backup-window-start=START_TIME,backup-window-end=END_TIME,\
    retention-days=BACKUP_RETENTION --max-custom-on-demand-retention-days=MAX_ONDEMAND_RETENTION
    

    替换以下内容:

    • BACKUP_PLAN_NAME:备份方案的名称。
    • REGION:您要在其中创建备份方案的 Google Cloud 区域。
    • PROJECT_ID:备份保险柜所在项目的名称。
    • BACKUPVAULT_NAME:您要用于备份存储的备份保险柜的名称。
    • RULE_NAME:备份规则的名称。
    • RECURRENCE:创建备份的频率。可以是每小时、每天、每周、每月或每年。
    • HOURS:每小时备份的频率。 仅当您将重复周期设置为每小时时,才需要指定此值。每小时最低频次的默认值为 6 小时。
    • TIME_ZONE:备份方案的时区,例如 UTC。使用 IANA 时区格式来添加备份方案的时区。
    • START_TIME:开始时间采用 24 小时制,代表一天中的具体小时数。开始时间必须早于结束时间,并且包含在备份窗口中。
    • END_TIME:结束时间,采用 24 小时制的小时格式。结束时间必须晚于开始时间,并且不包含在备份窗口中。
    • BACKUP_RETENTION:备份的保留期限。请注意,备份保留期限必须等于或大于备份保险柜强制执行的最短保留期限。
    • MAX_ONDEMAND_RETENTION:使用此备份方案创建的按需备份允许的最长自定义保留期限(以天为单位)。

更新现有备份方案,以实现 Compute Engine 实例的应用一致性备份

按照以下说明更新备份方案,以生成 Compute Engine 实例的应用一致性备份。

gcloud

  1. 更新备份方案。

    gcloud backup-dr backup-plans update BACKUP_PLAN_NAME \
    --compute-instance-properties=guest-flush=true \
    --project=PROJECT_ID \
    --location=REGION \
    --description=DESCRIPTION \
    --backup-rule=BACKUP_RULE \
    --add-backup-rule=ADD_BACKUP_RULE \
    --remove-backup-rule=REMOVE_BACKUP_RULE \
    --max-custom-on-demand-retention-days=MAX_ONDEMAND_RETENTION
    

    替换以下内容:

    • BACKUP_PLAN_NAME:备份方案的名称。
    • PROJECT_ID:备份保险柜所在项目的名称。
    • REGION:您要创建备份方案的位置。
    • DESCRIPTION:备份方案的更新说明。
    • BACKUP_RULE:具有更新值的现有备份规则的完整定义。
    • ADD_BACKUP_RULE:要添加到备份方案中的备份规则的参数。此标志可以重复使用,以添加更多备份规则。
    • REMOVE_BACKUP_RULE:要从备份方案中移除的现有备份规则。
    • MAX_ONDEMAND_RETENTION:使用此备份方案创建的按需备份允许的自定义保留期限上限(以天为单位)。

更改应用于 Compute Engine 实例的备份方案

您可以将应用于 Compute Engine 实例的备份方案更改为其他备份方案。其他备份方案必须满足以下条件:

  • 使用同一备份保险柜
  • 与 Compute Engine 实例位于同一区域

按照以下说明更改与 Compute Engine 实例关联的备份方案。

控制台

  1. 在 Google Cloud 控制台中,前往已归档的备份页面。

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

    已保险柜化的备份页面仅列出了已应用备份方案且备份已存储在项目中的备份保险柜内的实例。

  2. 选择要改用其他方案的备份。在相应备份的备份详情页面中,或在 菜单中,选择更改备份方案选择备份方案窗口仅列出了适用于相应实例的有效备份方案。

  3. 选择备份方案,然后点击应用

gcloud

  • 更改分配的备份方案。

      gcloud backup-dr backup-plan-associations update BACKUP_PLAN_ASSOCIATION_NAME \
      --workload-project=VM_PROJECT_ID \
      --location=VM_REGION \
      --backup-plan=BACKUP-PLAN \
      --project=PROJECT_ID
    

    替换以下内容:

    • BACKUP_PLAN_ASSOCIATION_NAME:备份方案关联资源的名称。
    • VM_PROJECT_ID:Compute Engine 实例的项目 ID。
    • VM_REGION:Compute Engine 实例的位置。
    • BACKUP_PLAN:您要切换到的备份方案的名称。
    • PROJECT_ID:所选备份方案的项目 ID。

列出预定备份

按照以下说明列出已备份的 Compute Engine 实例。

控制台

  1. 在 Google Cloud 控制台中,前往已归档的备份页面。

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

    已保险柜化的备份页面仅列出了已应用备份方案且备份已存储在项目中的备份保险柜内的实例。

gcloud

  1. 列出已安排的备份。

      gcloud backup-dr backup-plan-associations list \
      --location=LOCATION \
      --project=PROJECT_ID
    

    替换以下内容:

    • PROJECT_ID:项目的名称。
    • LOCATION:预定备份的位置。

创建按需备份

您可以为具有备份方案的 Compute Engine 实例启动按需备份,方法是触发所选的备份规则立即运行。按需备份通常仅捕获自上次备份以来发生变化的数据(增量)。

创建按需备份时,您可以从与 Compute Engine 实例关联的备份方案中选择一条规则。此规则决定何时删除按需备份。您可以在作业页面中查看备份作业状态。如需了解详情,请参阅在 Google Cloud 控制台中监控备份和恢复作业

按照以下说明创建按需备份。

控制台

  1. 前往虚拟机实例 > 详情 > 备份计划,创建按需备份。
  2. 点击创建按需备份。您必须拥有正确的权限才能进行按需备份。
  3. 选择何时删除此备份。您可以选择:

    • 基于自定义保留期限 默认情况下,上限设置为备份保险柜的最短强制保留期限加上 30 天。如需设置其他上限,请在备份方案中添加自定义按需保留期限上限。
    • 基于现有备份规则。从在以下时间段后删除备份下拉菜单中选择一条规则。
  4. 点击创建以启动按需备份作业。

  5. 如需查看按需备份作业的状态,请点击通知

gcloud

  • 创建使用备份规则的按需备份。

      gcloud backup-dr backup-plan-associations trigger-backup BACKUP_PLAN_ASSOCIATION_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --backup-rule-id=RULE_ID
      --labels=LABELS
    

    替换以下内容:

    • BACKUP_PLAN_ASSOCIATION_NAME:备份方案关联的名称。运行 gcloud backup-dr backup-plan-associations list --location=LOCATION --project=PROJECT_ID 命令,获取与 Compute Engine 磁盘关联的备份方案列表。
    • PROJECT_ID:项目的名称。
    • REGION:预定备份的位置。
    • RULE_ID:您要关联的备份规则名称,以便运行按需备份。
    • LABELS:备份的可选标签,以逗号分隔的键值对形式表示,例如 webserver=backend,media=images
  • 创建使用自定义保留期限的按需备份。

      gcloud backup-dr backup-plan-associations trigger-backup BACKUP_PLAN_ASSOCIATION_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --custom-retention-days=CUSTOM_RETENTION
      --labels=LABELS
    

    替换以下内容:

    • BACKUP_PLAN_ASSOCIATION_NAME:备份方案关联的名称。运行 gcloud backup-dr backup-plan-associations list --location=LOCATION --project=PROJECT_ID 命令可获取与 Compute Engine 磁盘关联的备份方案列表。
    • PROJECT_ID:项目的名称。
    • REGION:预定备份的位置。
    • CUSTOM_RETENTION:相应按需备份的自定义保留期限(以天为单位)。此值必须大于或等于备份保险柜保留时间,且小于或等于备份方案中配置的 max-custom-on-demand-retention-days 值(如果未配置 max-custom-on-demand-retention-days,则为保险柜保留时间 + 30 天)。
    • LABELS:备份的可选标签,以逗号分隔的键值对形式表示,例如 webserver=backend,media=images

取消保护 Compute Engine 实例

您可以移除应用于 Compute Engine 实例的备份方案,从而取消对该实例的保护。从 Compute Engine 实例中移除备份方案不会删除该备份方案或实例使用期间创建的任何备份。您仍然可以访问和管理这些现有备份。

按照以下说明取消对 Compute Engine 实例的保护。

控制台

  1. 在 Google Cloud 控制台中,前往已归档的备份页面。

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

  2. 点击要移除备份方案的实例的名称。

  3. 选择移除备份方案

gcloud

  1. 取消保护 Compute Engine 实例。

      gcloud backup-dr backup-plan-associations delete BACKUP_PLAN_ASSOCIATION_NAME\
      --project=PROJECT_ID \
      --location=LOCATION
    

    替换以下内容:

    • BACKUP_PLAN_ASSOCIATION_NAME:要删除的备份的名称。
    • PROJECT_ID:项目的名称。
    • LOCATION:预定备份的位置。

后续步骤