由於 AlloyDB Omni 與 PostgreSQL 相容,因此 pgBackRest 手冊中說明的資料還原指令和技術也適用於 AlloyDB Omni。本頁將示範常見的復原作業,並提供相關指令範例。
啟用 TDE 的叢集也支援使用 pgBackRest 進行備份和還原。詳情請參閱「建立啟用 TDE 的叢集」。
如要進一步瞭解如何設定 pgBackRest 以搭配 AlloyDB Omni 使用,請參閱「為 AlloyDB Omni 設定 pgBackRest」。
如需 Kubernetes 相關資訊,請參閱「在 Kubernetes 中備份及還原」。
事前準備
還原 AlloyDB Omni 叢集前,請確認您已備妥下列項目:
為 AlloyDB Omni 執行個體設定及配置 pgBackRest。
目的地檔案系統有足夠的磁碟空間,可儲存還原的 AlloyDB Omni 資料庫叢集。
用於還原容器的 AlloyDB Omni 主要版本與原始來源容器相同。
如要檢查 PostgreSQL 版本,請執行下列指令:
Docker
docker exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
Docker
docker exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
Podman
podman exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
Podman
podman exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
請替換下列變數:
CONTAINER_NAME:您為容器使用的名稱。例如:my-omni-1。
如要檢查 pgBackRest 版本,請執行下列指令:
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest version
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest version
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest version
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest version
請替換下列變數:
CONTAINER_NAME:您為容器使用的名稱。例如:my-omni-1。
如果目標容器的 PostgreSQL、pgBackRest 或兩者版本不同,則必須建立版本相符的新目標容器。如果無法這麼做,則必須使用替代方法,例如 PostgreSQL 隨附的
pg_dump或pg_dumpall公用程式,跨版本複製資料庫。
停止 AlloyDB Omni 容器
如要模擬 AlloyDB Omni 資料庫叢集無法使用,請停止容器。
Docker
docker stop CONTAINER_NAMEdocker rm CONTAINER_NAME
Docker
docker stop CONTAINER_NAMEdocker rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAMEpodman rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAMEpodman rm CONTAINER_NAME
請替換下列變數:
CONTAINER_NAME:您為容器使用的名稱。例如:my-omni-1。
建立閒置的 AlloyDB Omni 容器
Docker
docker run -d --name CONTAINER_NAME \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest sleep infinity
Docker
docker run -d --name CONTAINER_NAME \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest sleep infinity
Podman
podman run -d --name CONTAINER_NAME \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest sleep infinity
Podman
podman run -d --name CONTAINER_NAME \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest sleep infinity
請替換下列變數:
CONTAINER_NAME:您為容器使用的名稱。例如:my-omni-1。DATA_DIR:儲存資料的主機目錄路徑。BACKUP_DIR:備份檔儲存所在外部目錄的路徑。HOST_PORT:容器應將自己的通訊埠5432發布至主體機器上的 TCP 通訊埠。如要在主體機器上使用 PostgreSQL 預設通訊埠,請指定5432。
移除資料目錄
如要清除 AlloyDB Omni 資料庫叢集,請移除資料目錄。
Docker
docker exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"
Docker
docker exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"
Podman
podman exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"
Podman
podman exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"
請替換下列變數:
CONTAINER_NAME:您為容器使用的名稱。例如:my-omni-1。
確認備份內容是否可見
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=STANZA_NAME \ info
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=STANZA_NAME \ info
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=STANZA_NAME \ info
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=STANZA_NAME \ info
請替換下列變數:
CONTAINER_NAME:您為容器使用的名稱。例如:my-omni-1。STANZA_NAME:您建立的節名稱。例如:my-stanza。
還原備份
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=STANZA_NAME \ restore
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=STANZA_NAME \ restore
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=STANZA_NAME \ restore
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=STANZA_NAME \ restore
請替換下列變數:
CONTAINER_NAME:您為容器使用的名稱。例如:my-omni-1。STANZA_NAME:您建立的節名稱。例如:my-stanza。
移除閒置的 AlloyDB Omni 容器
Docker
docker kill CONTAINER_NAMEdocker rm CONTAINER_NAME
Docker
docker kill CONTAINER_NAMEdocker rm CONTAINER_NAME
Podman
podman kill CONTAINER_NAMEpodman rm CONTAINER_NAME
Podman
podman kill CONTAINER_NAMEpodman rm CONTAINER_NAME
請替換下列變數:
CONTAINER_NAME:您為容器使用的名稱。例如:my-omni-1。
建立 AlloyDB Omni 容器
Docker
docker run -d --name CONTAINER_NAME \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Docker
docker run -d --name CONTAINER_NAME \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
請替換下列變數:
CONTAINER_NAME:您為容器使用的名稱。例如:my-omni-1。DATA_DIR:儲存資料的主機目錄路徑。BACKUP_DIR:備份檔儲存所在外部目錄的路徑。HOST_PORT:容器應將自己的通訊埠5432發布至主體機器上的 TCP 通訊埠。如要在主體機器上使用 PostgreSQL 預設通訊埠,請指定5432。
確認 AlloyDB Omni 已啟動
Docker
docker logs -f CONTAINER_NAME
Docker
docker logs -f CONTAINER_NAME
Podman
podman logs -f CONTAINER_NAME
Podman
podman logs -f CONTAINER_NAME
請替換下列變數:
CONTAINER_NAME:您為容器使用的名稱。例如:my-omni-1。
其他選項
pgBackRest restore 指令非常靈活,您可透過傳入不同的指令列選項,控管各種選項和功能。如需執行還原的完整指南,請參閱「還原」。