本页介绍了如何将 Cloud SQL 实例备份到备份保险库。 将备份发送到备份保险柜可确保备份不可变,并强制执行保留期限。
在 Google Cloud 控制台中,您可以通过应用备份方案将 Cloud SQL 实例备份到备份保险柜。您可以通过以下两种方式之一进行备份。这两种方法都允许您将备份安全地存储在备份保险库中,从而在发生数据丢失或其他意外事件时,提供一种可靠的方式来恢复 Cloud SQL 实例。
- 计划备份。您可以按特定间隔(例如每天、每周、每月或每年)自动备份 Cloud SQL 实例。
- 按需备份。您可以随时根据需要创建按需备份。 在对数据库进行重大更改之前创建备份,或进行临时数据保护时,按需备份非常有用。
准备工作
- 在 Cloud SQL 实例所在的位置启用 Backup and DR Service API。
- 启用该 API
- 创建备份保险柜
- 创建备份方案
- 为备份用户分配 IAM 角色和权限
- 在 Cloud SQL 项目中授予备份保险柜访问权限
- 在存储桶上设置 Log 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 | 管理员项目 |
列出数据源 | backupdr.backupPlanAssociations.list | 管理员项目 | |
PiTR 恢复 | backupdr.bvdataSources.useReadOnlyForCloudSqlInstance | 管理员项目 | |
备份 | 获取备份 | backupdr.bvbackups.get | 管理员项目 |
列出备份 | backupdr.bvbackups.list | 管理员项目 | |
删除备份 | backupdr.bvbackups.delete | 管理员项目 | |
恢复备份 | backupdr.bvbackups.useReadOnlyForCloudSqlInstance | 管理员项目 | |
数据源参考 | 获取数据源引用 | backupdr.dataSourceReferences.getForCloudSqlInstance | 工作负载项目 |
提取数据源引用 | backupdr.dataSourceReferences.fetchForCloudSqlInstance | 工作负载项目 | |
运维 | 列出操作 | backupdr.operations.list | 相应项目 |
GET 操作 | 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
配置预定备份。
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
:实例的位置。
列出已安排备份的实例
按照以下说明列出已安排备份的 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:预定备份的位置。