从备份保险柜恢复 Cloud SQL 实例

本文档介绍如何使用控制台或 gcloud CLI 从 备份保险柜恢复 Cloud SQL 实例。 Google Cloud 它介绍了如何恢复到新实例或现有实例、覆盖源实例或执行时间点恢复 (PITR)。

如需详细了解 Backup and DR Service 的概念功能,请参阅 Backup and DR Service 概览。 如果您想先备份数据库,请参阅 将 Cloud SQL 实例备份到备份保险柜

灾难恢复和弹性

Backup and DR Service 为您的 Cloud SQL 实例提供灾难恢复选项。存储在备份保险柜中的备份独立于源实例的生命周期和项目。

  • 项目删除:即使包含源 Cloud SQL 实例的原始工作负载 项目已被删除,您也可以恢复备份。这是因为,CMEK 加密备份所需的解密权限是在备份保险柜的项目内授予 Backup and DR 服务代理,而不是在工作负载项目中授予。这可确保只要备份保险柜和 Cloud Key Management Service 密钥完好无损,且服务代理具有权限,您的备份就始终可访问和可恢复。

  • 灵活的恢复目标:您可以恢复到同一项目 或不同项目中的新实例,从而在恢复场景中提供灵活性。

准备工作

在从备份保险柜恢复 Cloud SQL 实例之前,请确保您拥有所需的角色。

如需获得从备份保险柜恢复 Cloud SQL 实例所需的权限,请让您的管理员向您授予以下 IAM 角色:

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

这些预定义角色包含 从备份保险柜恢复 Cloud SQL 实例所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需从备份保险柜恢复 Cloud SQL 实例,您需要具备以下权限:

  • 如需创建恢复目标: cloudsql.instances.restore
  • 如需从保险柜读取备份: backupdr.bvbackups.useReadOnlyForCloudSqlInstance

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

从最新备份恢复 Cloud SQL 实例

请按照以下说明恢复 Cloud SQL 实例:

控制台

  1. 在 Google Cloud 控制台中,前往 保险柜备份 页面。

    前往保险柜备份

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

  2. 选择要恢复的备份。您可以从备份的备份 详情页面中选择,也可以从 菜单中选择 恢复

    恢复 页面会显示您在其中选择以下恢复选项:

    • 资源类型 预先填充了 Cloud SQL

    • 资源名称 中,选择要恢复的 Cloud SQL 实例。

    • 点击备份后,系统会打开一个窗格,其中显示所有可用的备份。 选择要恢复的特定备份。

    • 对于选择恢复目标,选择要将 Cloud SQL 实例恢复到的项目。

  3. 点击继续

  4. 当系统提示您选择恢复目标时,请从以下选项中进行选择:

    • 恢复到新实例:根据您在备份中存储的 配置创建一个新实例。恢复完成后,您可以对实例进行自定义。使用小写字母、数字和连字符提供新的实例 ID 。以字母开头。
    • 覆盖现有实例:从可用实例列表中选择要 覆盖的现有实例。

    • 覆盖源实例:覆盖当前 实例。所选实例中的所有当前数据都将被覆盖,包括先前的时间点恢复日志。覆盖的数据以后无法恢复。不建议用于生产用途。

gcloud

  1. 找到包含要恢复的备份的数据源。您可以从 Cloud SQL 实例项目或备份保险柜项目中找到数据源:

    • 从 Cloud SQL 实例项目:使用 data-source-reference

      gcloud alpha backup-dr data-source-references fetch-for-resource-type sqladmin.googleapis.com/Instance \
      --location=LOCATION \
      --project=CSQL_INSTANCE_PROJECT_ID \
      --filter='dataSourceGcpResourceInfo.cloudSqlInstanceProperties.name="projects/CSQL_INSTANCE_PROJECT_ID/instances/CSQL_INSTANCE_ID"' \
      --format="table(RESOURCE_NAME,DATA_SOURCE)"
      

      替换以下内容:

      • LOCATION:备份保险柜的位置。

      • CSQL_INSTANCE_ID: Cloud SQL 实例的数据库名称。

      • CSQL_INSTANCE_PROJECT_ID:包含 Cloud SQL 实例的项目。

    • 从备份保险柜项目:使用 data-source

      gcloud backup-dr data-sources list \
      --location=LOCATION \
      --project=BACKUP_VAULT_PROJECT_ID \
      --filter='dataSourceGcpResource.cloudSqlInstanceDatasourceProperties.name=projects/CSQL_INSTANCE_PROJECT_ID/instances/CSQL_INSTANCE_ID' \
      --format="table(dataSourceGcpResource.cloudSqlInstanceDatasourceProperties.name:label=RESOURCE_NAME,name:label=DATA_SOURCE)"
      

      替换以下内容:

      • LOCATION:备份保险柜的位置。

      • CSQL_INSTANCE_ID:Cloud SQL 实例的名称。

      • CSQL_INSTANCE_PROJECT_ID:包含 Cloud SQL 实例的项目。

      • BACKUP_VAULT_PROJECT_ID:包含 备份保险柜的项目。

  2. 使用 gcloud backup-dr backups list 命令列出数据源中的所有备份,然后列出并选择要恢复的备份。

    gcloud backup-dr backups list --data-source=DATA_SOURCE \
    --format="table(consistencyTime,backupType,name:label=BACKUP_NAME)"
    
  3. 使用 gcloud sql backups restore 命令恢复 Cloud SQL 实例:

    gcloud sql backups restore BACKUP_NAME \
    --restore-instance=RESTORE_INSTANCE \
    --project=RESTORE_PROJECT
    --region=RESTORE_REGION
    

    替换以下内容:

    • BACKUP_NAME:您要从中恢复数据的备份保险柜名称。

    • RESTORE_INSTANCE:目标 Cloud SQL 实例 名称。

    • RESTORE_PROJECT:您要将 Cloud SQL 实例 恢复到的项目。

    • RESTORE_REGION:您要将 Cloud SQL 实例恢复到的新区域 。对于区域备份,这是可选的。 恢复到现有实例时,请勿使用此选项。

  4. (可选)如需替换其他属性,请参阅 Backup and DR Service gcloud CLI 命令概览。

将 Cloud SQL 实例恢复到不同的时间点

请按照以下说明将 Cloud SQL 实例恢复到某个时间点。当您恢复到某个时间点时,系统会创建一个 Cloud SQL 克隆。

  1. 在 Google Cloud 控制台中,前往 保险柜备份 页面。

    前往保险柜备份

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

  3. 点击从时间点恢复 。 系统会打开 Cloud SQL 创建克隆 页面。

  4. 按照使用备份保险柜执行 PITR中的步骤操作。

后续步骤

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