使用 pgBackRest 還原 AlloyDB Omni 叢集

選取說明文件版本:

本頁面說明如何使用 pgBackRest 建立的備份,還原 AlloyDB Omni 叢集。pgBackRest 是 AlloyDB Omni Docker 容器隨附的開放原始碼備份解決方案。

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 設定啟用持續備份功能。

  1. 在目標環境中執行 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。

  2. 在目標環境中,使用下列指令停止容器:

    Docker

    docker container stop CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
  3. 為確保安全,請重新命名資料目錄的 data 子目錄:

    cd DATA_DIR
    sudo mv data data-OLD

    將 DATA_DIR 替換為 AlloyDB Omni 資料目錄的檔案系統路徑。

  4. 將還原的資料移至適當位置,並清除 postgresql.auto.conf:

    sudo mv data-RESTORED data
    sudo sed -i 's|data-RESTORED|data|' data/postgresql.auto.conf
  5. 啟動 AlloyDB Omni 容器和資料庫伺服器:

    Docker

    docker container start CONTAINER_NAME

    Podman

    podman container start CONTAINER_NAME

現在可以使用 psql 連線至資料庫,並確認資料已按照預期還原。如果是,您可以刪除先前建立的 data 子目錄 data-OLD 副本。

如要進一步瞭解 pgBackRest 的 PITR,請參閱「時間點復原」。如要進一步瞭解如何準備要與 AlloyDB Omni 搭配使用的 pgbackrest.conf 檔案,請參閱「設定 AlloyDB Omni 的 pgBackRest」。

其他選項

pgbackrest restore 指令非常靈活,可透過傳入不同的指令列選項,控制各種選項和功能。其中包括:

  • 僅還原變更過的檔案。
  • 只還原所選資料庫。

如需在 pgBackRest 執行還原作業的完整指南,請參閱「還原」。