将 Cloud SQL 实例备份到备份保险柜

本页面介绍了如何将 Cloud SQL 实例备份到备份保险柜,该保险柜提供不可变性和强制保留。

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

  • 预定备份:以特定时间间隔(例如每天、每周、每月或每年)自动备份 Cloud SQL 实例 。
  • 按需备份 。您可以根据需要随时创建按需备份。 按需备份非常适合在对数据库进行重大更改之前创建备份,或用于临时数据保护。

准备工作

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

    启用该 API

  2. 创建备份保险柜

  3. 创建备份方案

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

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

  6. 在存储桶上设置 Observability Analytics 以监控 Backup and DR 备份作业。

  7. 对于启用了 CMEK 的实例:如果源 Cloud SQL 实例受客户管理的加密密钥 (CMEK) 保护,您必须向 Backup and DR Service 服务代理授予 roles/cloudkms.cryptoKeyEncrypterDecrypter Identity and Access Management 角色。源 Cloud SQL 实例使用的 Cloud Key Management Service 密钥需要此权限。

    Backup and DR Service 服务代理位于备份保险柜所在的项目中。在尝试保护启用了 CMEK 的 Cloud SQL 实例之前,请向服务帐号授予此角色。

备份用户的 IAM 角色和权限

如需获得配置预定备份或运行按需备份所需的权限,请让您的管理员向您授予备份保险柜项目的以下 IAM 角色:

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

这些预定义角色包含 配置预定备份或运行按需备份所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

配置预定备份或运行按需备份需要以下权限:

  • backupdr.backupPlans.list
  • backupdr.backupPlanAssociations.createForCloudSqlInstance
  • backupdr.backupPlanAssociations.fetchForCloudSqlInstance
  • backupdr.backupPlanAssociations.list
  • backupdr.backupPlanAssociations.getForCloudSqlInstance
  • backupdr.backupPlanAssociations.triggerBackupForCloudSqlInstance
  • backupdr.backupPlanAssociations.deleteForCloudSqlInstance
  • backupdr.backupPlans.useForCloudSqlInstance
  • backupdr.locations.list
  • backupdr.operations.get
  • cloudasset.assets.searchAllResources

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

每个 API 调用所需的动态权限

下表列出了每个 API 调用所需的动态权限:

资源 要对资源执行的操作 每个 API 调用所需的权限 需要分配到的项目
备份保险柜 创建备份保险柜 backupdr.backupVaults.create 管理员项目
删除备份保险柜 backupdr.backupVaults.delete 管理员项目
更新备份保险柜 backupdr.backupVaults.update 管理员项目
列出备份保险柜 backupdr.backupVaults.list 管理员项目
获取备份保险柜 backupdr.backupVaults.get 管理员项目
备份方案 创建备份方案 backupdr.backupPlans.create 管理员项目
删除备份方案 backupdr.backupPlans.delete 管理员项目
获取备份方案 backupdr.backupPlans.get 管理员项目
列出备份方案 backupdr.backupPlans.list 管理员项目
备份方案关联 创建备份方案关联 cloudsql.instances.updateBackupDrConfig 工作负载项目
backupdr.backupPlanAssociations.createForCloudSqlInstance 工作负载项目
backupdr.backupPlans.useForCloudSqlInstance 管理员项目
删除备份方案关联 backupdr.backupPlanAssociations.deleteForCloudSqlInstance 工作负载项目
cloudsql.instances.updateBackupDrConfig 工作负载项目
在备份方案关联中触发按需备份 backupdr.backupPlanAssociations.triggerBackupForCloudSqlInstance 工作负载项目
获取备份方案关联 backupdr.backupPlanAssociations.getForCloudSqlInstance 工作负载项目
列出备份方案关联 backupdr.backupPlanAssociations.list 工作负载项目
提取备份方案关联 backupdr.backupPlanAssociations.fetchForCloudSqlInstance 工作负载项目
数据源 获取数据源 backupdr.bvdataSources.get 管理员项目
列出数据源 backupdr.backupPlanAssociations.list 管理员项目
PiTR 恢复 backupdr.bvdataSources.useReadOnlyForCloudSqlInstance 管理员项目
备份 获取备份 backupdr.bvbackups.get 管理员项目
列出备份 backupdr.bvbackups.list 管理员项目
提取备份 backupdr.bvbackups.fetchForCloudSqlInstance 管理员项目
删除备份 backupdr.bvbackups.delete 管理员项目
恢复备份 backupdr.bvbackups.useReadOnlyForCloudSqlInstance 管理员项目
数据源引用 获取数据源引用 backupdr.dataSourceReferences.getForCloudSqlInstance 工作负载项目
列出数据源引用 backupdr.dataSourceReferences.list 工作负载项目
提取数据源引用 backupdr.dataSourceReferences.fetchForCloudSqlInstance 工作负载项目
运维 列出运维 backupdr.operations.list 相应项目
获取运维 backupdr.operations.get 相应项目

在 Cloud SQL 项目中授予备份保险柜访问权限

如需在与创建备份保险柜的项目不同的项目中备份 Cloud SQL 实例,您必须在 Cloud SQL 项目中向备份保险柜服务代理授予 Backup and DR Cloud SQL Operator (roles/backupdr.cloudSqlOperator) IAM 角色。如果存储备份的备份保险柜项目与 Cloud SQL 项目不同,请在 Cloud SQL 项目中向备份保险柜服务代理分配该角色。

如需在创建备份保险柜的同一项目中备份 Cloud SQL 实例,则无需授予任何角色。

如需了解如何在您打算备份的项目中向备份保险柜服务代理授予角色 ,请参阅向服务代理授予角色

配置预定备份

请按照以下说明为 Cloud SQL 实例配置预定备份。

控制台

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

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

  2. 点击安排备份

  3. 资源类型 列表中,选择 Cloud SQL

  4. 项目 列表中,选择 Cloud SQL 实例所在的项目。

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

  6. 资源 列表中,点击浏览 。选择要备份的 Cloud SQL 实例,然后点击完成

  7. 点击继续

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

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

  10. 点击完成

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

gcloud

  1. 创建备份方案和 Cloud SQL 实例。

  2. 使用 gcloud backup-dr backup-plan-associations create 命令配置预定备份:

      gcloud backup-dr backup-plan-associations create BACKUP_PLAN_ASSOCIATION_NAME \
          --location=CSQL_REGION \
          --project=CSQL_PROJECT_ID \
          --resource=projects/CSQL_PROJECT_ID/instances/CSQL_INSTANCE_ID \
          --resource-type=sqladmin.googleapis.com/Instance \
          --backup-plan=projects/PROJECT_ID/locations/LOCATION/backupPlans/BACKUP_PLAN
    

    替换以下内容:

    • BACKUP_PLAN_ASSOCIATION_NAME:备份方案关联的名称。

    • CSQL_REGION:Cloud SQL 实例所在的区域。

    • CSQL_PROJECT_ID:Cloud SQL 实例所在项目的名称。

    • CSQL_INSTANCE_ID:Cloud SQL 实例 ID。

    • PROJECT_ID:备份方案所在项目的名称。

    • LOCATION:实例的位置。

    • BACKUP_PLAN:备份方案的名称。

Terraform

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


# Before creating a backup plan association, you need to create backup plan (google_backup_dr_backup_plan)
# and Cloud SQL Instance (google_sql_database_instance).
resource "google_backup_dr_backup_plan_association" "csql_association" {
  provider                   = google-beta
  location                   = "us-central1"
  backup_plan_association_id = "my-csql-bpa"
  resource                   = "projects/${google_sql_database_instance.default.project}/instances/${google_sql_database_instance.default.name}"
  resource_type              = "sqladmin.googleapis.com/Instance"
  backup_plan                = google_backup_dr_backup_plan.csql_default.name
}

列出已安排备份的实例

请按照以下说明列出已安排备份的 Cloud SQL 实例。

控制台

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

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

  2. 在表格顶部,依次选择过滤表格 > 资源类型。 选择 Cloud SQL 。这会将显示内容限制为仅显示已应用备份方案且备份已存储在项目中的备份保险柜内的 Cloud SQL 实例。

gcloud

使用 gcloud alpha backup-dr backup-plan-associations fetch-for-resource-type 命令列出已安排备份的 Cloud SQL 实例:

  gcloud alpha backup-dr backup-plan-associations fetch-for-resource-type sqladmin.googleapis.com/Instance \
  --location=LOCATION \
  --project=PROJECT_ID

替换以下内容:

  • LOCATION:预定备份的位置。

  • PROJECT_ID:Cloud SQL 实例所在项目的名称。

按需备份

您可以触发所选备份规则立即运行,从而为具有备份方案的 Cloud SQL 实例启动按需备份。 按需备份通常仅捕获自上次备份以来更改的数据(增量)。

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

创建按需备份

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

控制台

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

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

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

  2. 选择要备份的资源。从 菜单或资源的详细信息页面中,选择 创建按需备份

  3. 创建按需备份 窗口中,选择要使用的备份规则,然后点击创建

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

gcloud

  1. 创建按需备份。使用现有备份方案关联启动按需备份。指定规则 ID 以确定此单个按需备份的到期期限:

    gcloud backup-dr backup-plan-associations trigger-backup BACKUP_PLAN_ASSOCIATION_NAME \
    --backup-rule-id=RULE_ID \
    --project=PROJECT_ID \
    --location=LOCATION \
    [--no-async]
    

    替换以下内容:

    • BACKUP_PLAN_ASSOCIATION_NAME:备份方案关联的名称。

    • RULE_ID:您要关联以运行按需备份的备份规则名称。

    • PROJECT_ID:项目的名称。

    • LOCATION:预定备份的位置。

移除 Cloud SQL 实例的保护

您可以通过移除应用于 Cloud SQL 实例的备份方案来移除该实例的保护。从 Cloud SQL 实例中移除备份方案不会删除在使用备份方案时创建的任何备份。 您仍然可以访问和管理这些现有备份,直到它们过期。

请按照以下说明移除 Cloud SQL 实例的保护:

控制台

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

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

  2. 点击要从中移除备份方案的数据库的名称。

  3. 选择移除备份方案

gcloud

取消保护 Cloud SQL 实例。

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

替换以下内容:

  • BACKUP_PLAN_ASSOCIATION_NAME:要删除的备份 方案关联的名称。

  • PROJECT_ID:项目的名称。

  • LOCATION:预定备份的位置。