由於 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 會根據可用性、預期速度和其他因素,選擇要從哪個存放區還原。
本範例假設:
目標 AlloyDB Omni 資料目錄的頂層有
pgbackrest.conf
檔案。這會讓容器化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
更改下列內容:
:您在安裝 AlloyDB Omni 容器時指派的名稱,例如
my-omni
。CONTAINER_NAME
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
更改下列內容:
:您在安裝 AlloyDB Omni 容器時指派的名稱,例如
my-omni
。CONTAINER_NAME
STANZA
:由pgbackrest.conf
檔案定義的設定節,用於套用至這項還原作業,例如omni
。TIMESTAMP
:要還原的時間,例如2024-02-22 19:50:00
。
在目標環境中,使用下列指令停止容器:
Docker
docker container stop CONTAINER_NAME
Podman
podman container stop CONTAINER_NAME
為確保安全,請重新命名資料目錄的
data
子目錄:cd DATA_DIR
sudo mv data data-OLD
將
DATA_DIR
替換為 AlloyDB Omni 資料目錄的檔案系統路徑。將還原的資料移回原位,並清理「
postgresql.auto.conf
」:sudo mv data-RESTORED data
sudo sed -i 's|data-RESTORED|data|' data/postgresql.auto.conf
使用資料庫伺服器啟動 AlloyDB Omni 容器:
Docker
docker container start CONTAINER_NAME
Podman
podman container start CONTAINER_NAME
您現在可以使用 psql
連線至資料庫,並確認資料已如預期還原。如果是,您可以刪除先前建立的 data-OLD
子目錄副本data
。
如要進一步瞭解 pgBackRest 中的 PITR,請參閱「時間點復原」。如要進一步瞭解如何準備 pgbackrest.conf
檔案以搭配 AlloyDB Omni 使用,請參閱「為 AlloyDB Omni 設定 pgBackRest」。
其他選項
pgbackrest restore
指令非常靈活,可透過傳入不同的指令列選項,控制各種選項和功能。其中包括:
- 僅復原變更的檔案。
- 只還原選取的資料庫。
如需使用 pgBackRest 執行還原的完整指南,請參閱「還原」。