AlloyDB Omni 與 PostgreSQL 相容,因此 pgBackRest 手冊中說明的資料還原指令和技術也適用於 AlloyDB Omni。本頁面示範一些常見的復原工作,並提供相關指令範例。
如要進一步瞭解如何設定 pgBackRest 以搭配 AlloyDB Omni 使用,請參閱「設定 AlloyDB Omni 的 pgBackRest」。
如需 Kubernetes 相關資訊,請參閱「在 Kubernetes 中備份及還原」。
事前準備
設定 AlloyDB Omni 搭配 pgBackrest 運作前,您必須在控管的伺服器上安裝並執行 AlloyDB Omni。
目標資料庫伺服器,執行與要還原備份相同的 AlloyDB Omni 主要版本。如要進一步瞭解如何安裝 AlloyDB Omni,請參閱「安裝 AlloyDB Omni」。
pgBackRest 備份存放區,其中至少包含一個來源 AlloyDB Omni 資料庫的備份。
目標伺服器有足夠的可用磁碟空間,可容納還原的資料庫。
總覽
如要使用 pgBackRest 還原 AlloyDB Omni,請執行 pgbackrest restore 指令。您提供給指令的參數會因情況而異。
一般來說,您執行 pgbackrest restore 指令時,會使用提供下列資訊的旗標:
pgbackrest.conf檔案的位置。- 要還原的 pgBackRest 備份存放區名稱。這些存放區會在
pgbackrest.conf檔案中命名及定義。 - 本機檔案系統中要寫入還原資料的位置。
- 要還原的特定備份或時間點 ID。
執行容器化 pgbackrest restore 指令時,請記得使用容器角度的檔案系統路徑。舉例來說,無論 AlloyDB Omni 資料目錄在主機伺服器上的位置為何,其路徑一律為 /var/lib/postgresql/data。詳情請參閱「檔案系統路徑注意事項」。
執行時間點還原
這個範例會從 pgBackRest 存放區還原資料,並指定要還原的時間點。如果您在目標環境的 pgbackrest.conf 檔案中定義了多個存放區,pgBackRest 會根據可用性、預期速度和其他因素,選擇要從哪個存放區還原。
範例假設如下:
您有一個
pgbackrest.conf檔案,位於目標 AlloyDB Omni 資料目錄的頂層。這樣一來,容器化pgbackrest就能以/var/lib/postgresql/data的形式使用該檔案。您已透過 pgBackRest 設定啟用持續備份功能。
在目標環境中執行 PITR 還原,並指定要還原的時間戳記:
Docker
docker exec CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/data \ --stanza=STANZA \ --type=time \ --pg1-path=/var/lib/postgresql/data/data-RESTORED \ --target="TIMESTAMP" \ restore更改下列內容:
CONTAINER_NAME:您在安裝 AlloyDB Omni 容器時指派的名稱,例如my-omni。STANZA:由pgbackrest.conf檔案定義的設定段落,要套用至這項還原作業,例如omni。TIMESTAMP:要還原的時間,例如2024-02-22 19:50:00。
Podman
podman exec CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/data \ --stanza=STANZA \ --type=time \ --pg1-path=/var/lib/postgresql/data/data-RESTORED \ --target="TIMESTAMP" \ restore更改下列內容:
CONTAINER_NAME:您在安裝 AlloyDB Omni 容器時指派的名稱,例如my-omni。STANZA:由pgbackrest.conf檔案定義的設定段落,要套用至這項還原作業,例如omni。TIMESTAMP:要還原的時間點,例如2024-02-22 19:50:00。
在目標環境中,使用下列指令停止容器:
Docker
docker container stop CONTAINER_NAMEPodman
podman container stop CONTAINER_NAME為確保安全,請重新命名資料目錄的
data子目錄:cd DATA_DIRsudo mv data data-OLD將
DATA_DIR替換為 AlloyDB Omni 資料目錄的檔案系統路徑。將還原的資料移至適當位置,並清除
postgresql.auto.conf:sudo mv data-RESTORED datasudo sed -i 's|data-RESTORED|data|' data/postgresql.auto.conf啟動 AlloyDB Omni 容器和資料庫伺服器:
Docker
docker container start CONTAINER_NAMEPodman
podman container start CONTAINER_NAME
現在可以使用 psql 連線至資料庫,並確認資料已按照預期還原。如果是,您可以刪除先前建立的 data 子目錄 data-OLD 副本。
如要進一步瞭解 pgBackRest 的 PITR,請參閱「時間點復原」。如要進一步瞭解如何準備要與 AlloyDB Omni 搭配使用的 pgbackrest.conf 檔案,請參閱「設定 AlloyDB Omni 的 pgBackRest」。
其他選項
pgbackrest restore 指令非常靈活,可透過傳入不同的指令列選項,控制各種選項和功能。其中包括:
- 僅還原變更過的檔案。
- 只還原所選資料庫。
如需在 pgBackRest 執行還原作業的完整指南,請參閱「還原」。