將 Cloud SQL 執行個體備份至 backup vault

本頁說明如何將 Cloud SQL 執行個體備份至備份保存庫,確保備份資料不可變更,並強制執行保留期限。

在 Google Cloud 控制台中,您可以套用備份方案,將 Cloud SQL 執行個體備份至備份保存庫。您可以透過下列任一方式備份。這兩種方法都能讓您將備份安全地儲存在備份保存庫中,在資料遺失或其他意外事件發生時,提供可靠的 Cloud SQL 執行個體復原方式。

  • 排定備份時間:以特定間隔 (例如每天、每週、每月或每年) 自動備份 Cloud SQL 執行個體。
  • 隨選備份。您可以視需要建立隨選備份。 在對資料庫進行重大變更前,或進行臨時資料保護時,隨需備份功能就派得上用場。

事前準備

  1. 在 Cloud SQL 執行個體所在的專案中,啟用備份和災難復原服務 API。

    啟用 API

  2. 建立備份保存庫

  3. 建立備份方案

  4. 將 IAM 角色和權限指派給備份使用者

  5. 在 Cloud SQL 專案中授予 backup vault 存取權

  6. 在 bucket 上設定 Observability Analytics,監控備份和災難復原備份工作。

  7. 已啟用 CMEK 的執行個體:如果來源 Cloud SQL 執行個體受到客戶自行管理的加密金鑰 (CMEK) 保護,您必須將 roles/cloudkms.cryptoKeyEncrypterDecrypter Identity and Access Management 角色授予 Backup and DR Service 服務代理程式。來源 Cloud SQL 執行個體使用的 Cloud Key Management Service 金鑰必須具備這項權限。

    備份和災難復原服務代理位於備份儲存空間所在的專案。嘗試保護已啟用 CMEK 的 Cloud SQL 執行個體前,請先將這個角色授予服務帳戶。

備份使用者的 IAM 角色和權限

如要取得設定排程備份或執行隨選備份所需的權限,請要求管理員在備份保存庫專案中授予您下列 IAM 角色:

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

這些預先定義的角色具備設定排程備份或執行隨選備份所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要設定排程備份或執行隨選備份,您必須具備下列權限:

  • 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 呼叫所需的動態權限:

資源 要對資源執行的動作 各項 API 呼叫所需的權限 要指派權限的專案
backup vault 建立 backup vault backupdr.backupVaults.create 管理員專案
刪除備份儲存空間 backupdr.backupVaults.delete 管理員專案
更新備份儲存空間 backupdr.backupVaults.update 管理員專案
列出 backup vault backupdr.backupVaults.list 管理員專案
取得 backup vault backupdr.backupVaults.get 管理員專案
備份方案 建立備份方案 backupdr.backupPlans.create 管理員專案
刪除備份方案 backupdr.backupPlans.delete 管理員專案
取得備份方案 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 工作負載專案
資料來源 取得資料來源 backupdr.bvdataSources.get 管理員專案
列出資料來源 backupdr.backupPlanAssociations.list 管理員專案
時間點復原還原 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 專案中授予 backup vault 存取權

如要備份專案中的 Cloud SQL 執行個體,但備份保存庫是在其他專案中建立,您必須將備份和災難復原 Cloud SQL 操作者 (roles/backupdr.cloudSqlOperator) 身分與存取權管理角色授予 Cloud SQL 專案中的備份保存庫服務代理程式。如果備份儲存位置的 backup vault 專案與 Cloud SQL 專案不同,請在 Cloud SQL 專案中將角色指派給 backup vault 服務代理人。

如要備份與 backup vault 位於相同專案的 Cloud SQL 執行個體,不需要授予任何角色。

如要瞭解如何授予 backup vault 服務代理備份專案中的角色,請參閱「授予服務代理角色」。

設定排程備份

請按照下列操作說明,為 Cloud SQL 執行個體設定排程備份。

控制台

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

    前往 vault 中的備份

  2. 按一下「排定備份時程」

  3. 在「Resource Type」(資源類型) 清單中,選取「Cloud SQL」

  4. 在「專案」清單中,選取 Cloud SQL 執行個體所在的專案。

  5. 從「Region」(區域) 清單中,選取執行個體所在的區域。

  6. 在「資源」清單中,按一下「瀏覽」。選擇要備份的 Cloud SQL 執行個體,然後按一下「完成」

  7. 按一下「繼續」

  8. 在「備份方案」清單中,按一下「選取」

  9. 選擇要用來保護 Cloud SQL 執行個體的備份方案。

  10. 按一下「完成」

  11. 查看備份詳細資料,然後按一下「排程」

gcloud

  1. 建立備份方案和 Cloud SQL 執行個體。

  2. 使用 gcloud backup-dr backup-plan-associations create 指令設定排程備份:

      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 執行個體所在的專案名稱。

    • :Cloud SQL 執行個體 ID。CSQL_INSTANCE_ID

    • PROJECT_ID:備份計畫所在的專案名稱。

    • LOCATION:執行個體的位置。

    • BACKUP_PLAN:備份方案名稱。

Terraform

您可以使用 Terraform 資源設定排程備份


# Before creating a backup plan association, you need to create backup plan (google_backup_dr_backup_plan)
# and Cloud SQL Instance (google_sql_database_instance).
resource "google_backup_dr_backup_plan_association" "csql_association" {
  provider                   = google-beta
  location                   = "us-central1"
  backup_plan_association_id = "my-csql-bpa"
  resource                   = "projects/${google_sql_database_instance.default.project}/instances/${google_sql_database_instance.default.name}"
  resource_type              = "sqladmin.googleapis.com/Instance"
  backup_plan                = google_backup_dr_backup_plan.csql_default.name
}

列出已排定備份作業的執行個體

請按照下列操作說明,列出已排定備份作業的 Cloud SQL 執行個體。

控制台

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

    前往 vault 中的備份

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

gcloud

使用 gcloud alpha backup-dr backup-plan-associations fetch-for-resource-type 指令,列出已排定備份作業的 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 控制台中監控備份與還原作業」。

建立按照需求執行的備份

請按照下列操作說明建立隨選備份。

控制台

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

    前往 vault 中的備份

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

  2. 選取要備份的資源。從選單或資源的詳細資料頁面中,選取「建立隨選備份」

  3. 在「建立按照需求執行的備份」視窗中,選取要使用的備份規則,然後按一下「建立」

  4. 如要查看隨選備份工作的狀態,請按一下「通知」

gcloud

  1. 建立隨需備份。使用現有的備份方案關聯,啟動隨選備份。指定規則 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 執行個體移除保護措施:

控制台

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

    前往 vault 中的備份

  2. 按一下要移除備份計畫的資料庫名稱。

  3. 選取「移除備份方案」

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:排定備份作業的位置。

限制

對於以 CMEK 加密的 Cloud SQL 執行個體,備份和災難復原服務會主動驗證權限。如果備份儲存庫專案的備份和災難復原服務代理,在來源執行個體的 KMS 金鑰上沒有必要的 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色,備份方案關聯建立作業就會失敗。請先確認具備必要的 IAM 權限,再建立備份方案關聯。

後續步驟