從備份保存庫還原 Cloud SQL 執行個體

本文說明如何使用 Google Cloud 控制台或 gcloud CLI,從備份保存庫還原 Cloud SQL 執行個體。本文說明如何還原至新執行個體或現有執行個體、覆寫來源執行個體,或執行時間點復原 (PITR)。

如要進一步瞭解備份和災難復原服務的概念功能,請參閱備份和災難復原服務總覽。如要先備份資料庫,請參閱「將 Cloud SQL 執行個體備份至備份保存庫」。

災難復原與韌性

備份和災難復原服務提供 Cloud SQL 執行個體的災難復原選項。儲存在 backup vault 的備份與來源執行個體的生命週期和專案無關。

  • 刪除專案:即使含有來源 Cloud SQL 執行個體的原始工作負載專案已刪除,您仍可還原備份。這是因為系統會將 CMEK 加密備份的必要解密權限,授予備份專案中的備份和災難復原服務代理,而不是工作負載專案。只要備份保存庫和 Cloud Key Management Service 金鑰完好無損,且服務代理程式具備權限,即可確保備份資料可供存取及還原。

  • 彈性還原目標:您可以還原至相同或不同專案中的新執行個體,在復原情境中提供彈性。

事前準備

從備份保存庫還原 Cloud SQL 執行個體前,請確認您具備必要角色。

如要取得從備份保存庫還原 Cloud SQL 執行個體所需的權限,請要求管理員授予下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這些預先定義的角色具備從 backup vault 還原 Cloud SQL 執行個體所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要從備份保存庫還原 Cloud SQL 執行個體,您必須具備下列權限:

  • 如要建立還原目標,請執行下列操作: cloudsql.instances.restore
  • 如要從保險箱讀取備份: backupdr.bvbackups.useReadOnlyForCloudSqlInstance

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

從最新備份還原 Cloud SQL 執行個體

請按照下列操作說明還原 Cloud SQL 執行個體:

控制台

  1. 前往 Google Cloud 控制台的「Vaulted backups」(已封存備份) 頁面。

    前往 vault 中的備份

    「已封存的備份」頁面只會列出符合下列條件的資料資源:已套用備份方案,而且備份儲存於該專案中的 backup vault。

  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:備份保存庫的位置。

      • :Cloud SQL 執行個體的名稱。CSQL_INSTANCE_ID

      • 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 執行個體名稱。

    • :要還原 Cloud SQL 執行個體的專案。RESTORE_PROJECT

    • RESTORE_REGION:要還原至新 Cloud SQL 執行個體的區域。區域備份則為選用。 還原至現有執行個體時,請勿使用這項功能。

  4. 選用:如要覆寫其他屬性,請參閱 Backup and DR 服務 gcloud CLI 指令總覽。

將 Cloud SQL 執行個體還原至不同時間點

請按照下列操作說明,將 Cloud SQL 執行個體還原至特定時間點。還原至特定時間點時,系統會建立 Cloud SQL 副本。

  1. 前往 Google Cloud 控制台的「Vaulted backups」(已封存備份) 頁面。

    前往 vault 中的備份

  2. 在表格頂端選取「篩選表格」,然後按一下「資源類型」。 選取「Cloud SQL」。這樣一來,畫面就只會顯示已套用備份方案,且備份儲存於專案 backup vault 的 Cloud SQL 執行個體。

  3. 按一下「從某個時間點還原」。 Cloud SQL 的「建立副本」頁面隨即開啟。

  4. 按照「使用備份保存庫執行 PITR」一文中的程序操作。

後續步驟

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。