以下工作流程說明複製步驟:
- 設定
pgbackrest.conf
檔案,以存取 Cloud Storage 備份。 - 使用
pgBackRest
指令確認可存取來源備份。 - 使用
pgBackRest
指令將備份還原至目標伺服器。
事前準備
- 存取來源資料庫叢集備份所在的 Cloud Storage 值區完整路徑。這個路徑與您為來源資料庫叢集建立
BackupPlan
資源時使用的路徑相同。 - 系統會建立單一伺服器目標 AlloyDB Omni 資料庫叢集。如要進一步瞭解如何在 Kubernetes 上安裝 AlloyDB Omni,請參閱「安裝 AlloyDB Omni」。
- 確認您以
postgres
使用者身分登入資料庫。
在目標伺服器上設定 pgBackRest
檔案
設定 pgBackRest
檔案,讓目標資料庫叢集存取來源備份所在的 Cloud Storage bucket。
在目標伺服器中,前往
alloydb-data
目錄。建立
pgBackRest
設定檔,存取儲存在 Cloud Storage 中的備份:$ cat << EOF > /backup/pgbackrest.conf [db] pg1-path=/mnt/disks/pgsql/data-restored 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=/etc/ssl/certs/ca-certificates.crt repo1-retention-full=9999999 repo1-gcs-key-type=auto
更改下列內容:
- GCS_SOURCE_BACKUP_BUCKET_NAME:您在來源資料庫叢集中建立的 Cloud Storage
pgBackRest
bucket 名稱。這不是 bucket 的完整網址,請勿在 bucket 名稱加上gs://
前置字元。 - GCS_SOURCE_BACKUP_BUCKET_PATH:AlloyDB Omni 運算子將備份寫入的目錄路徑,位於來源資料庫叢集的 Cloud Storage bucket 中。路徑必須是絕對路徑,開頭為
/
。
repo1-gcs-key-type
設為auto
,使用執行個體的服務帳戶。如要進一步瞭解其他選項,請參閱「GCS 存放區金鑰類型選項」。- GCS_SOURCE_BACKUP_BUCKET_NAME:您在來源資料庫叢集中建立的 Cloud Storage
在目標伺服器中驗證來源備份
登入目標伺服器並執行 pgBackRest
指令,確認目標伺服器可存取來源資料庫叢集備份:
Docker
sudo docker exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 info
Podman
sudo podman exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 info
將 CONTAINER_NAME
替換為新的 AlloyDB Omni 容器名稱,例如 my-omni-1
。
以下是回應範例:
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=/mnt/disks/pgsql --stanza=db --repo=1 restore --set=20240213-231400F --type=immediate --target-action=promote --delta --link-all --log-level-console=info
從某個時間點還原
pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 restore --target="2024-01-22 11:27:22" --type=time --target-action=promote --delta --link-all --log-level-console=info
將資料複製到目標伺服器
還原指令順利完成後,您可以將資料從/mnt/disks/pgsql/data-restored
臨時目錄複製到目前的/alloydb-data/data
目錄。
- 在目標伺服器中停止資料庫服務:
Docker
docker stop CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
最佳做法是將目前的資料目錄重新命名為其他名稱:
mv ~/alloydb-data/data ~/alloydb-data/data-old
將
data-restored
臨時目錄重新命名為目前的資料目錄:mv ~/alloydb-data/data-restored ~/alloydb-data/data
在
postgresql.auto.conf
檔案中更新pg1-path
值,載入還原的資料:
vim ~/alloydb-data/data/postgresql.auto.conf
# Verify postgresql.auto.conf.
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
# Recovery settings generated by pgBackRest restore on 2024-03-13 20:47:11
restore_command = 'pgbackrest --config-path=/mnt/disks/pgsql --pg1-path=/mnt/disks/pgsql/data --repo=1 --stanza=db archive-get %f "%p"'
recovery_target = 'immediate'
recovery_target_action = 'promote'
recovery_target_timeline = 'current'
在目標伺服器中啟動資料庫服務:
Docker
docker start CONTAINER_NAME
Podman
podman start CONTAINER_NAME
資料庫服務啟動後,您可以連線至主要執行個體並執行查詢,確認資料已從備份還原。詳情請參閱「在單一伺服器上連線至 AlloyDB Omni」。