使用時間點復原 (PITR)

如要從意外的資料修改或大規模資料遺失中快速復原,您可以使用時間點復原 (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.list
    • compute.addresses.create
    • compute.addresses.list
    • compute.globalAddresses.create
    • compute.globalAddresses.list
    • servicenetworking.services.addPeering

    如要取得這些權限,同時遵循最小權限原則,請要求管理員授予您 AlloyDB 管理員 (roles/alloydb.admin) 預先定義的 IAM 角色,其中包含必要的 alloydb.clusters.restore 和網路權限。

從最近的時間點還原

AlloyDB 可讓您從最近特定範圍內的任何時間點,完整還原有效叢集的資料。

可用的 PITR 時間範圍

您可以從下列兩個時間點中較晚的時間點之後的任何時間點還原:

  • 復原時間範圍上限代表的時間點。舉例來說,如果復原時間範圍為 14 天,則這個時間點就是 14 天前。

  • 上次啟用連續備份後,最早建立的備份時間。如果您在建立叢集時啟用了持續備份,且之後未停用,這個時間點實際上就是叢集最早備份的建立時間。

如果停用後又重新啟用持續備份功能,則必須等到您或 AlloyDB 建立叢集的第一個新備份後,才能執行時間點復原。這可以是隨選備份,也可以是啟用持續備份後,AlloyDB 每日備份的第一個備份。如要進一步瞭解備份類型,請參閱「資料備份和復原總覽」。

只有在原始叢集存在時,才能執行時間點復原。您無法對已刪除的叢集執行這類還原作業。

即使主要執行個體已刪除,您仍可對處於就緒狀態的叢集執行時間點復原。不過,復原作業只能將叢集還原至執行個體刪除前的時間點。

執行時間點還原

  1. 使用 Google Cloud 控制台或 Google Cloud CLI 執行還原作業。

    控制台

    1. 前往「Clusters」(叢集) 頁面。

      前往叢集

    2. 在「Resource Name」(資源名稱) 欄中,按一下叢集。

    3. 點選「資料保護」。

    4. 在「Restore from a point in time」(從某個時間點還原) 下方,按一下「Restore」(還原)。

    5. 在「Target time」(目標時間) 欄位中,輸入要還原的日期和時間。

    6. 在「Cluster ID」(叢集 ID) 欄位中,輸入新叢集的名稱。

    7. 在「Network」(網路) 欄位中,選取新叢集要使用的虛擬私有雲網路。

    8. 如要使用客戶自行管理的加密金鑰 (CMEK),而非預設的 Google 代管加密金鑰,來加密這個叢集的連續備份和資料變更記錄,請按照下列額外步驟操作:

      1. 按一下「進階加密選項」。

      2. 按一下「Customer-managed encryption key (CMEK)」(客戶自行管理的加密金鑰 (CMEK)) 圓形按鈕。

      3. 按一下「Select a customer-managed key」(選取客戶自行管理的金鑰) 清單,然後選取金鑰。

    9. 按一下「還原」。

    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_CLUSTER

    • TIMESTAMP:說明要從哪個時間點復原資料,以 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 旗標。

  2. AlloyDB 建立叢集後,請為叢集建立主要執行個體。您可以透過該執行個體存取還原的資料。請注意,新執行個體的設定不一定要與原始主要執行個體完全相同。

  3. 選用:建立讀取集區執行個體。

還原作業完成後,即可開始使用叢集。

後續步驟