本页介绍如何将 Cloud SQL 实例备份到备份保险柜。 将备份发送到备份保险柜可提供不可变性和强制保留。
在 Google Cloud 控制台中,您可以通过应用备份方案将 Cloud SQL 实例备份到 备份保险柜。您可以通过以下两种方式进行备份。这两种方法都允许您将备份安全地存储在备份保险柜中,从而在发生数据丢失或其他意外事件时提供一种可靠的方式来恢复 Cloud SQL 实例。
- 计划备份 。您可以按特定时间间隔(例如每天、每周、每月或每年)自动备份 Cloud SQL 实例。
- 按需备份 。您可以根据需要随时创建按需备份。 按需备份对于在对数据库进行重大更改之前创建备份或进行临时数据保护非常有用。
准备工作
在 Cloud SQL 实例所在的位置启用 Backup and DR Service API。
在存储桶上设置 Observability Analytics 以监控 Backup and DR 备份作业。
备份用户的 IAM 角色和权限
如需获得配置计划备份或运行按需备份所需的权限,请让您的管理员向您授予备份保险柜项目的以下 IAM 角色:
- Backup and DR Backup User (
roles/backupdr.backupUser) - Viewer (
roles/viewer)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含 配置计划备份或运行按需备份所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
配置计划备份或运行按需备份需要以下权限:
-
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 调用所需的权限 | 需要分配权限的项目 |
|---|---|---|---|
| 备份保险柜 | 创建 BackupVault | backupdr.backupVaults.create | 管理员项目 |
| 删除 BackupVault | backupdr.backupVaults.delete | 管理员项目 | |
| 更新 BackupVault | backupdr.backupVaults.update | 管理员项目 | |
| 列出 BackupVault | backupdr.backupVaults.list | 管理员项目 | |
| 获取 BackupVault | backupdr.backupVaults.get | 管理员项目 | |
| 备份方案 | 创建 BackupPlan | backupdr.backupPlans.create | 管理员项目 |
| 删除 BackupPlan | backupdr.backupPlans.delete | 管理员项目 | |
| 获取 BackupPlan | 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 | 工作负载项目 | |
| 数据源 | 获取 DataSource | backupdr.bvdataSources.get | 管理员项目 |
| 列出 DataSource | 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 实例配置计划备份。
控制台
在 Google Cloud 控制台中,前往 受保管的备份 页面。
点击安排备份 。
从资源类型 列表中,选择 Cloud SQL 。
从项目 列表中,选择 Cloud SQL 实例所在的项目。
从区域 列表中,选择实例所在的区域。
在资源 列表中,点击浏览 。选择要备份的 Cloud SQL 实例,然后点击完成 。
点击继续 。
在备份方案 列表中,点击选择 。
选择要用于保护 Cloud SQL 实例的备份方案。
点击完成 。
查看备份详细信息,然后点击安排 。
gcloud
创建备份方案和 Cloud SQL 实例。
配置计划备份。
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 资源配置计划备份。
列出已安排备份的实例
按照以下说明列出已安排备份的 Cloud SQL 实例。
控制台
在 Google Cloud 控制台中,前往 受保管的备份 页面。
在表格顶部,依次选择过滤表格 > 资源类型。 选择 Cloud SQL 。这会将显示内容限制为仅显示已应用备份方案且备份已存储在项目中的备份保险柜内的 Cloud SQL 实例。
gcloud
列出已安排备份的 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 。
按照以下说明创建按需备份。
控制台
在 Google Cloud 控制台中,前往 受保管的备份 页面。
受保管的备份 页面仅列出已应用备份方案且备份已存储在项目中的备份保险柜内的数据资源。
选择要备份的资源。从 菜单或资源的详情页面中,选择 创建按需备份。
在创建按需备份 窗口中,选择要使用的备份规则,然后点击创建 。
如需查看按需备份作业的状态,请点击通知 。
gcloud
创建按需备份。使用现有备份方案关联启动按需备份。指定规则 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 实例。
控制台
在 Google Cloud 控制台中,前往 受保管的备份 页面。
点击要从中移除备份方案的数据库的名称。
选择移除备份方案 。
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:计划备份的位置。