本頁面說明如何將 Cloud SQL 執行個體備份至 backup vault,確保資料不可變更,並強制執行保留政策。
在 Google Cloud 控制台中,您可以套用備份方案,將 Cloud SQL 執行個體備份到 backup vault。您可以透過下列兩種方式備份。這兩種方法都能將備份安全地儲存在備份 vault,在資料遺失或其他非預期事件發生時,可靠地復原 Cloud SQL 執行個體。
- 排定備份:自動定期備份 Cloud SQL 執行個體,例如每天、每週、每月或每年。
- 隨選備份。您隨時可以視需求建立備份。 在對資料庫進行重大變更前,或需要臨時保護資料時,隨需備份功能就非常實用。
事前準備
在 Cloud SQL 執行個體所在位置啟用 Backup and DR API。
在 bucket 設定 Observability Analytics,監控備份和災難復原備份工作。
啟用 CMEK 的執行個體:如果來源 Cloud SQL 執行個體受到客戶自行管理的加密金鑰 (CMEK) 保護,您必須將
roles/cloudkms.cryptoKeyEncrypterDecrypterIdentity and Access Management 角色授予備份和災難復原服務代理。來源 Cloud SQL 執行個體使用的 Cloud Key Management Service 金鑰必須具備這項權限。備份和災難復原服務代理位於 backup vault 所在的專案。請先將這個角色授予服務帳戶,再嘗試保護已啟用 CMEK 的 Cloud SQL 執行個體。
備份使用者的 IAM 角色和權限
如要取得設定排定備份或執行隨選備份所需的權限,請要求管理員授予您 backup vault 專案的下列 IAM 角色:
- 備份和災難復原備份使用者 (
roles/backupdr.backupUser) - 檢視者 (
roles/viewer)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備設定排定備份或執行隨選備份所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
您必須具備下列權限,才能設定排程備份或執行隨選備份:
-
backupdr.backupPlans.list -
backupdr.backupPlanAssociations.createForCloudSqlInstance -
backupdr.backupPlanAssociations.fetchForCloudSqlInstance -
backupdr.backupPlanAssociations.updateForCloudSqlInstance -
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 |
管理員專案 |
| 刪除 backup vault | backupdr.backupVaults.delete |
管理員專案 | |
| 更新 backup vault | 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 |
管理員專案 | |
| 更新備份方案 | backupdr.backupPlans.update |
管理員專案 | |
| 取得備份方案修訂版本 | backupdr.backupPlanRevisions.get |
管理員專案 | |
| 列出備份方案修訂版本 | backupdr.backupPlanRevisions.list |
管理員專案 | |
| 建立備份方案修訂版本 | backupdrproducer.backupPlanRevisions.create |
管理員專案 | |
| 刪除備份方案修訂版本 | backupdrproducer.backupPlanRevisions.delete |
管理員專案 | |
| 備份方案關聯 | 建立備份方案關聯 | cloudsql.instances.updateBackupDrConfigbackupdr.backupPlanAssociations.createForCloudSqlInstancebackupdr.backupPlans.useForCloudSqlInstance |
工作負載專案 工作負載專案 管理員專案 |
| 刪除備份方案關聯 | backupdr.backupPlanAssociations.deleteForCloudSqlInstancecloudsql.instances.updateBackupDrConfig |
工作負載專案 工作負載專案 |
|
| 觸發備份方案關聯的隨選備份 | backupdr.backupPlanAssociations.triggerBackupForCloudSqlInstance |
工作負載專案 | |
| 取得備份方案關聯 | backupdr.backupPlanAssociations.getForCloudSqlInstance |
工作負載專案 | |
| 列出備份方案關聯 | backupdr.backupPlanAssociations.list |
工作負載專案 | |
| 擷取備份方案關聯 | backupdr.backupPlanAssociations.fetchForCloudSqlInstance |
工作負載專案 | |
| 變更備份方案關聯 | backupdr.backupPlanAssociations.updateForCloudSqlInstance |
工作負載專案 | |
| 資料來源 | 取得資料來源 | 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 執行個體,但該執行個體與備份 vault 位於不同專案,您必須將備份和災難復原 Cloud SQL 操作者 (roles/backupdr.cloudSqlOperator) IAM 角色,授予 Cloud SQL 專案中的備份 vault 服務代理。如果儲存備份的 backup vault 專案與 Cloud SQL 專案不同,請將角色指派給 Cloud SQL 專案中的 backup vault 服務代理。
如要備份 Cloud SQL 執行個體,且該執行個體與 backup vault 位於相同專案,則不需授予任何角色。
如要瞭解如何將角色授予要備份專案中的 backup vault 服務代理,請參閱「將角色授予服務代理」。
設定排定的備份
請按照下列操作說明,設定 Cloud SQL 執行個體的排定備份。
控制台
前往 Google Cloud 控制台的「Vaulted backups」(已建立 vault 的備份) 頁面。
按一下「Schedule backup」(排定備份作業)。
在「Resource Type」(資源類型) 清單中,選取「Cloud SQL」。
從「Project」(專案) 清單中,選取 Cloud SQL 執行個體所在的專案。
從「Region」(區域) 清單中,選取執行個體所在的區域。
在「資源」清單中,按一下「瀏覽」。選擇要備份的 Cloud SQL 執行個體,然後按一下「Done」(完成)。
按一下「繼續」。
在「Backup plan」(備份方案) 清單中,按一下「Select」(選取)。
選擇要用來保護 Cloud SQL 執行個體的備份方案。
按一下「完成」。
查看備份詳細資料,然後按一下「排程」。
gcloud
建立備份方案和 Cloud SQL 執行個體。
使用
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 執行個體所在專案的名稱。CSQL_INSTANCE_ID:Cloud SQL 執行個體 ID。PROJECT_ID:備份計畫所在的專案名稱。LOCATION:執行個體的位置。BACKUP_PLAN:備份方案名稱。
Terraform
您可以使用 Terraform 資源設定排定的備份。
變更 Cloud SQL 執行個體的相關聯備份方案
您可以將套用至 Cloud SQL 執行個體的備份方案,更換為其他備份方案。您要變更的備份方案必須符合下列條件:
備份方案位於同一個 backup vault。
備份方案與 Cloud SQL 執行個體位於相同區域。
請按照下列操作說明,變更與 Cloud SQL 執行個體相關聯的備份方案。
控制台
前往 Google Cloud 控制台的「Backup and DR Vaulted backups」(備份和災難復原:已儲存至保管箱的備份) 頁面。
前往「Vaulted backups」(vault 中的備份) 頁面
「Vaulted backups」(已儲存至 vault 的備份) 頁面只會列出符合下列條件的執行個體:已套用 (或先前已套用) 備份方案,或備份儲存於專案中的 backup vault。
選取要變更方案的資料來源。在備份詳細資料頁面或 選單中,選取「Change backup plan」(變更備份方案)。「Select a backup plan」(選取備份方案) 視窗只會列出適用於這個執行個體的備份方案。
選取備份方案,然後按一下「套用」。
gcloud
變更指派的備份方案。
gcloud backup-dr backup-plan-associations update BACKUP_PLAN_ASSOCIATION_NAME \ --workload-project=INSTANCE_PROJECT_ID \ --location=INSTANCE_REGION \ --backup-plan=BACKUP_PLAN \ --project=SELECTED_BACKUP_PLAN_PROJECT_ID更改下列內容:
BACKUP_PLAN_ASSOCIATION_NAME:備份方案關聯資源的名稱。INSTANCE_PROJECT_ID:Cloud SQL 執行個體的專案 ID。INSTANCE_REGION:Cloud SQL 執行個體的位置。BACKUP_PLAN:要切換至的備份方案名稱。SELECTED_BACKUP_PLAN_PROJECT_ID:所選備份方案的專案 ID。
列出已排定備份作業的執行個體
請按照下列操作說明,列出已排定備份作業的 Cloud SQL 執行個體。
控制台
前往 Google Cloud 控制台的「Vaulted backups」(已建立 vault 的備份) 頁面。
在表格頂端,依序選取「篩選表格」「資源類型」。選取「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 執行個體相關聯的備份方案中選擇規則。這項規則會決定隨選備份的刪除時間。您可以在「Jobs」(工作) 頁面查看備份工作狀態。詳情請參閱「在 Google Cloud 控制台監控備份和還原工作」。
建立按照需求執行的備份
請按照下列操作說明建立隨選備份。
控制台
前往 Google Cloud 控制台的「Vaulted backups」(已建立 vault 的備份) 頁面。
前往「Vaulted backups」(vault 中的備份) 頁面
「Vaulted backups」(已儲存至 vault 的備份) 頁面只會列出已套用備份方案,且備份儲存於專案 backup vault 的資料資源。
選取要備份的資源。從 選單或資源的詳細資料頁面,選取「Create on-demand backup」(建立隨選備份)。
在「Create an on-demand backup」(建立隨選備份) 視窗中,選取要使用的備份規則,然後按一下「Create」(建立)。
如要查看隨選備份工作的狀態,請按一下「通知」。
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 控制台的「Vaulted backups」(已建立 vault 的備份) 頁面。
按一下要移除備份方案的資料庫名稱。
選取「移除備份方案」。
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 執行個體,備份和災難復原會主動驗證權限。如果 backup vault 專案的備份和災難復原服務代理,不具備來源執行個體 KMS 金鑰的必要 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色,就無法建立備份方案關聯。請先確認具備必要的 IAM 權限,再建立備份方案關聯。