如要從意外的資料修改或大規模資料遺失中快速復原,您可以使用時間點復原 (PITR) 功能,將 AlloyDB for PostgreSQL 叢集還原至最近的特定狀態。
事前準備
- 您使用的 Google Cloud 專案必須啟用 AlloyDB 存取權。
- 您必須在使用的 Google Cloud 專案中具備下列其中一個 IAM 角色:
roles/alloydb.admin(AlloyDB 管理員預先定義的 IAM 角色)roles/owner(擁有者基本 IAM 角色)roles/editor(編輯者基本 IAM 角色)
如果您不具備上述任一角色,請向組織管理員要求存取權。
- 您必須在使用的 Google Cloud 專案中,具備下列所有 Identity and Access Management (IAM) 權限:
compute.networks.listcompute.addresses.createcompute.addresses.listcompute.globalAddresses.createcompute.globalAddresses.listservicenetworking.services.addPeering
如要取得這些權限,同時遵循最小權限原則,請要求管理員授予您 AlloyDB 管理員 (
roles/alloydb.admin) 預先定義的 IAM 角色,其中包含必要的alloydb.clusters.restore和網路權限。
從最近的時間點還原
AlloyDB 可讓您從最近特定範圍內的任何時間點,完整還原有效叢集的資料。
可用的 PITR 時間範圍
您可以從下列兩個時間點中較晚的時間點之後的任何時間點還原:
復原時間範圍上限代表的時間點。舉例來說,如果復原時間範圍為 14 天,則這個時間點就是 14 天前。
上次啟用連續備份後,最早建立的備份時間。如果您在建立叢集時啟用了持續備份,且之後未停用,這個時間點實際上就是叢集最早備份的建立時間。
如果停用後又重新啟用持續備份功能,則必須等到您或 AlloyDB 建立叢集的第一個新備份後,才能執行時間點復原。這可以是隨選備份,也可以是啟用持續備份後,AlloyDB 每日備份的第一個備份。如要進一步瞭解備份類型,請參閱「資料備份和復原總覽」。
只有在原始叢集存在時,才能執行時間點復原。您無法對已刪除的叢集執行這類還原作業。
即使主要執行個體已刪除,您仍可對處於就緒狀態的叢集執行時間點復原。不過,復原作業只能將叢集還原至執行個體刪除前的時間點。
執行時間點還原
使用 Google Cloud 控制台或 Google Cloud CLI 執行還原作業。
控制台
前往「Clusters」(叢集) 頁面。
在「Resource Name」(資源名稱) 欄中,按一下叢集。
點選「資料保護」。
在「Restore from a point in time」(從某個時間點還原) 下方,按一下「Restore」(還原)。
在「Target time」(目標時間) 欄位中,輸入要還原的日期和時間。
在「Cluster ID」(叢集 ID) 欄位中,輸入新叢集的名稱。
在「Network」(網路) 欄位中,選取新叢集要使用的虛擬私有雲網路。
如要使用客戶自行管理的加密金鑰 (CMEK),而非預設的 Google 代管加密金鑰,來加密這個叢集的連續備份和資料變更記錄,請按照下列額外步驟操作:
按一下「進階加密選項」。
按一下「Customer-managed encryption key (CMEK)」(客戶自行管理的加密金鑰 (CMEK)) 圓形按鈕。
按一下「Select a customer-managed key」(選取客戶自行管理的金鑰) 清單,然後選取金鑰。
按一下「還原」。
gcloud
使用
gcloud alloydb clusters restore指令,指定叢集和時間戳記。gcloud alloydb clusters restore NEW_CLUSTER \ --source-cluster=SOURCE_CLUSTER \ --point-in-time=TIMESTAMP \ --region=REGION這個指令會傳回作業,您可以使用
gcloud alloydb operations describe指令查詢作業狀態。gcloud alloydb operations describe OPERATION_ID \ --region=REGION更改下列內容:
NEW_CLUSTER:新叢集要使用的 ID。SOURCE_CLUSTER:要復原資料的叢集 ID。
如要從其他專案中的叢集還原,請按照下列格式替換為完整叢集路徑:
projects/SOURCE_PROJECT/locations/SOURCE_REGION/clusters/SOURCE_CLUSTERTIMESTAMP:說明要從哪個時間點復原資料,以 RFC 3339 格式表示,例如2012-11-15T16:19:00.094Z。您可以指定小至微秒的小數秒。請注意,這個時間戳記必須在您建立叢集時指定的保留期限內。
REGION:來源叢集所在的區域,也是 AlloyDB 建立新叢集的位置。例如:us-central1。PROJECT_ID:新叢集所在專案的 ID。
如要使用客戶自行管理的加密金鑰 (CMEK),而非 Google 代管的加密金鑰,來加密新叢集的資料,則必須提供下列額外引數:
--kms-key=KEY_ID:要使用的 CMEK 金鑰 ID。--kms-keyring=KEYRING_ID:金鑰的金鑰環 ID。--kms-location=LOCATION_ID:該金鑰環所在區域的 ID。請注意,這個值必須與叢集區域相符。--kms-project=PROJECT_ID:金鑰環專案的 ID。
如要還原至已啟用 Private Service Connect 的叢集,請務必新增
--enable-private-service-connect旗標。AlloyDB 建立叢集後,請為叢集建立主要執行個體。您可以透過該執行個體存取還原的資料。請注意,新執行個體的設定不一定要與原始主要執行個體完全相同。
選用:建立讀取集區執行個體。
還原作業完成後,即可開始使用叢集。