以下工作流程說明複製時使用的步驟:
- 在目標資料庫叢集上建立並套用 DBCluster資訊清單檔案,並停用livenessProbe參數。
- 建立及設定 pgbackrest.conf檔案,以便存取 Cloud Storage 備份。
- 使用 pgBackRest指令確認您可以存取來源備份。
- 使用 pgBackRest指令將備份還原至目標資料庫叢集。
事前準備
- 請確認您有權存取儲存來源資料庫叢集備份的 Cloud Storage 值區完整路徑。這個路徑與您為來源資料庫叢集建立 BackupPlan資源時所用的路徑相同。
- 建立目標 AlloyDB Omni 資料庫叢集。 如要進一步瞭解如何在 Kubernetes 上安裝 AlloyDB Omni,請參閱建立資料庫叢集。
- 確認您以 postgres使用者身分登入資料庫。
在目標資料庫叢集中建立資料庫叢集
暫時停用 livenessProbe 參數,直到還原程序完成為止,即可建立資料庫叢集。
- 建立 - DBCluster資源資訊清單檔案:- apiVersion: v1 kind: Secret metadata: name: db-pw-DB_CLUSTER_NAME type: Opaque data: DB_CLUSTER_NAME: "ENCODED_PASSWORD" --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: DB_CLUSTER_NAME spec: primarySpec: availabilityOptions: livenessProbe: "Disabled" adminUser: passwordRef: name: db-pw-DB_CLUSTER_NAME resources: cpu: CPU_COUNT memory: MEMORY_SIZE disks: - name: DataDisk size: DISK_SIZE storageClass: standard- 更改下列內容: - DB_CLUSTER_NAME:這個資料庫叢集的名稱,例如- my-db-cluster。
- ENCODED_PASSWORD:預設- postgres使用者角色的資料庫登入密碼,以 Base64 字串編碼,例如- ChangeMe123的- Q2hhbmdlTWUxMjM=。
- CPU_COUNT:這個資料庫叢集中每個資料庫執行個體可用的 CPU 數量。
- MEMORY_SIZE:這個資料庫叢集的每個資料庫執行個體記憶體用量。建議您將此值設為每個 CPU 8 GB。舉例來說,如果您先前在這個資訊清單中將- cpu設為- 2,建議將- memory設為- 16Gi。
- DISK_SIZE:每個資料庫執行個體的磁碟大小,例如- 10Gi。
 
- 套用資訊清單檔案: - kubectl apply -f DBCLUSTER_FILENAME- 更改下列內容: - DBCLUSTER_FILENAME:在上一步中建立的 DBCluster資訊清單檔案名稱。
 
- DBCLUSTER_FILENAME:在上一步中建立的 
使用 kubectl describe 指令,確認資料庫叢集資源處於 READY 狀態。
設定 pgBackRest 檔案
設定 pgBackRest 檔案,讓目標資料庫叢集存取來源備份所在的 Cloud Storage bucket。
- 在目標資料庫叢集中,找出資料庫叢集 Pod 詳細資料: - kubectl get pod -l "alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME, alloydbomni.internal.dbadmin.goog/task-type=database"- 回應會包含叢集資料庫 Pod 的名稱。 
- 登入 Pod: - kubectl exec -ti DATABASE_POD_NAME -- /bin/bash- 更改下列內容: - DATABASE_POD_NAME:上一個步驟中的資料庫叢集 Pod 名稱。
 
- 更新 - pgBackRest設定檔前,請先停止 Pod:- supervisorctl.par stop postgres
- 建立 - pgBackRest設定檔,存取儲存在 Cloud Storage 中的備份:- cat << EOF > /backup/pgbackrest.conf [db] pg1-path=/mnt/disks/pgsql/data pg1-socket-path=/tmp pg1-user=pgbackrest [global] log-path=/obs/pgbackrest log-level-file=info repo1-type=gcs repo1-gcs-bucket=GCS_SOURCE_BACKUP_BUCKET_NAME repo1-path=GCS_SOURCE_BACKUP_BUCKET_PATH repo1-storage-ca-file=/scripts/ca-certificates.crt repo1-retention-full=9999999 repo1-gcs-key-type=auto- 更改下列內容: - GCS_SOURCE_BACKUP_BUCKET_NAME:建立來源資料庫叢集的- BackupPlan資源資訊清單檔案時,您建立的 Cloud Storage 值區名稱。這不是 bucket 的完整網址,請勿在 bucket 名稱加上- gs://前置字串。
- GCS_SOURCE_BACKUP_BUCKET_PATH:AlloyDB Omni 運算子將備份寫入的目錄路徑,位於來源資料庫叢集的 Cloud Storage bucket 中。路徑必須是絕對路徑,開頭為- /。
 - repo1-gcs-key-type設為- auto,即可使用執行個體的服務帳戶。如要進一步瞭解其他選項,請參閱「Cloud Storage 存放區金鑰類型選項」。
在目標資料庫叢集中驗證來源備份
執行 pgBackRest 指令,確認目標資料庫叢集可以存取來源資料庫叢集備份。
pgbackrest --config-path=/backup --stanza=db --repo=1 info以下是回應範例:
  stanza: db
      status: ok
      cipher: none
      db (current)
          wal archive min/max (15): 000000010000000000000002/00000001000000000000000D
          full backup: 20240213-231400F
              timestamp start/stop: 2024-02-13 23:14:00+00 / 2024-02-13 23:17:14+00
              wal start/stop: 000000010000000000000003 / 000000010000000000000003
              database size: 38.7MB, database backup size: 38.7MB
              repo1: backup set size: 4.6MB, backup size: 4.6MB
          incr backup: 20240213-231400F_20240214-000001I
              timestamp start/stop: 2024-02-14 00:00:01+00 / 2024-02-14 00:00:05+00
              wal start/stop: 00000001000000000000000D / 00000001000000000000000D
              database size: 38.7MB, database backup size: 488.3KB
              repo1: backup set size: 4.6MB, backup size: 84.2KB
              backup reference list: 20240213-231400F
回覆中的時間戳記可用於還原完整備份,或從復原時間範圍內的某個時間點還原。
在目標資料庫叢集中還原備份
找出要還原的備份或時間點後,請在目標資料庫叢集中執行 pgBackRest 指令。如要進一步瞭解這些指令,請參閱「還原指令」。
以下是部分 pgBackRest 還原指令範例:
- 從備份還原 - pgbackrest --config-path=/backup --stanza=db --repo=1 restore --set=20240213-231400F --type=immediate --target-action=promote --delta --link-all --log-level-console=info
- 從某個時間點還原 - pgbackrest --config-path=/backup --stanza=db --repo=1 restore --target="2024-01-22 11:27:22" --type=time --target-action=promote --delta --link-all --log-level-console=info
重新啟動 Pod
還原指令順利完成後,即可啟動 postgres 程序。
supervisorctl.par start postgrespostgres 程序啟動後,您可以連線至主要執行個體並執行查詢,確認資料已從備份還原。詳情請參閱「連線至在 Kubernetes 上執行的 AlloyDB Omni」。