由於 AlloyDB Omni 與 PostgreSQL 相容,因此 pgBackRest 手冊中說明的資料還原指令和技術也適用於 AlloyDB Omni。本頁面將示範常見的復原工作,並提供相關指令的範例。
如要進一步瞭解如何設定 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_NAME
docker rm CONTAINER_NAME
Docker
docker stop CONTAINER_NAME
docker rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
podman rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
podman 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_NAME
docker rm CONTAINER_NAME
Docker
docker kill CONTAINER_NAME
docker rm CONTAINER_NAME
Podman
podman kill CONTAINER_NAME
podman rm CONTAINER_NAME
Podman
podman kill CONTAINER_NAME
podman 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
指令非常靈活,您可透過傳入不同的指令列選項,控管各種選項和功能。如需執行還原的完整指南,請參閱還原。