本文說明如何使用 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 角色:
-
如要建立還原目標,請在目標執行個體所在的專案中,擁有 Cloud SQL 管理員 (
roles/cloudsql.admin) 權限。 -
如要從 vault 讀取備份:
備份和災難復原還原使用者 (
roles/backupdr.restoreUser) 位於來源備份所在的專案中
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備從 backup vault 還原 Cloud SQL 執行個體所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要從備份保存庫還原 Cloud SQL 執行個體,您必須具備下列權限:
-
如要建立還原目標,請執行下列操作:
cloudsql.instances.restore -
如要從保險箱讀取備份:
backupdr.bvbackups.useReadOnlyForCloudSqlInstance
從最新備份還原 Cloud SQL 執行個體
請按照下列操作說明還原 Cloud SQL 執行個體:
控制台
前往 Google Cloud 控制台的「Vaulted backups」(已封存備份) 頁面。
「已封存的備份」頁面只會列出符合下列條件的資料資源:已套用備份方案,而且備份儲存於該專案中的 backup vault。
選取要還原的備份。在備份詳細資料頁面或 選單中,選取「還原」。
「還原頁面」會顯示下列還原選項:
「資源類型」會預先填入
Cloud SQL。在「資源名稱」中,選取要還原的 Cloud SQL 執行個體。
按一下「備份」,開啟窗格並顯示所有可用的備份。 選取要還原的特定備份。
在「選擇還原目的地」部分,選取要還原 Cloud SQL 執行個體的專案。
按一下「繼續」。
系統提示「選擇還原目的地」時,請從下列選項中選取:
- 還原至新的執行個體:依據備份中儲存的設定建立新的執行個體。還原完畢之後,您可以自訂執行個體。請使用小寫英文字母、數字和連字號,提供新的執行個體 ID。並以英文字母開頭。
覆寫現有執行個體:從可用執行個體清單中選取要覆寫的現有執行個體。
覆寫來源執行個體:覆寫目前的執行個體。所選執行個體中的現有資料都會遭到覆寫,包括先前的時間點復原記錄。資料覆寫後即無法復原。不建議用於正式環境。
gcloud
找出包含要還原備份的資料來源。您可以從 Cloud SQL 執行個體專案或備份保存庫專案中尋找資料來源:
從 Cloud SQL 執行個體專案:使用
data-source-referencegcloud 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-sourcegcloud 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:包含備份保存庫的專案。
使用
gcloud backup-dr backups list指令列出資料來源中的所有備份,然後選取要還原的備份。gcloud backup-dr backups list --data-source=DATA_SOURCE \ --format="table(consistencyTime,backupType,name:label=BACKUP_NAME)"使用
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 執行個體的區域。區域備份則為選用。 還原至現有執行個體時,請勿使用這項功能。
選用:如要覆寫其他屬性,請參閱 Backup and DR 服務 gcloud CLI 指令總覽。
將 Cloud SQL 執行個體還原至不同時間點
請按照下列操作說明,將 Cloud SQL 執行個體還原至特定時間點。還原至特定時間點時,系統會建立 Cloud SQL 副本。
前往 Google Cloud 控制台的「Vaulted backups」(已封存備份) 頁面。
在表格頂端選取「篩選表格」,然後按一下「資源類型」。 選取「Cloud SQL」。這樣一來,畫面就只會顯示已套用備份方案,且備份儲存於專案 backup vault 的 Cloud SQL 執行個體。
按一下「從某個時間點還原」。 Cloud SQL 的「建立副本」頁面隨即開啟。
按照「使用備份保存庫執行 PITR」一文中的程序操作。
後續步驟
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。