為 AlloyDB Omni 設定 Barman

選取說明文件版本:

本頁面說明如何設定 AlloyDB Omni 與開放原始碼資料庫備份伺服器 Barman 搭配運作,以保護資料。

您可以使用任何與 PostgreSQL 相容的資料庫備份技術,保護 AlloyDB Omni 資料。舉例來說,您可以設定 AlloyDB Omni,允許來自您控管的 Barman 伺服器的連線。這樣一來,Barman 伺服器就能持續備份儲存在 AlloyDB Omni 伺服器中的資料。

設定 Barman 和 AlloyDB Omni 伺服器,讓兩者能搭配運作後,您就可以執行 Barman 指令,完成各種資料保護和災害復原工作,包括:

  • 建立資料的隨選備份。
  • 設定資料變更的同步 WAL 串流至備份伺服器。
  • 從特定備份還原。
  • 執行時間點還原。

如要進一步瞭解 Barman 的運作方式,請參閱 Barman 手冊

事前準備

設定 AlloyDB Omni 與 Barman 搭配運作前,請先確認下列事項:

設定 AlloyDB Omni 以搭配 Barman 使用

如要準備 AlloyDB Omni 伺服器以搭配 Barman 使用,請在安裝 AlloyDB Omni 的伺服器上執行下列指令。

  1. 建立 barman 資料庫使用者,並授予適當權限:

    Docker

    docker exec CONTAINER_NAME psql -h localhost -U postgres -c "
    CREATE USER barman;
    GRANT EXECUTE ON FUNCTION pg_backup_start(text, boolean) to barman;
    GRANT EXECUTE ON FUNCTION pg_backup_stop(boolean) to barman;
    GRANT EXECUTE ON FUNCTION pg_switch_wal() to barman;
    GRANT EXECUTE ON FUNCTION pg_create_restore_point(text) to barman;
    GRANT pg_read_all_settings TO barman;
    GRANT pg_read_all_stats TO barman;
    CREATE USER streaming_barman WITH REPLICATION;
    "

    CONTAINER_NAME 替換為您在安裝 AlloyDB Omni 容器時指派的名稱。

    Podman

    podman exec CONTAINER_NAME psql -h localhost -U postgres -c "
    CREATE USER barman;
    GRANT EXECUTE ON FUNCTION pg_backup_start(text, boolean) to barman;
    GRANT EXECUTE ON FUNCTION pg_backup_stop(boolean) to barman;
    GRANT EXECUTE ON FUNCTION pg_switch_wal() to barman;
    GRANT EXECUTE ON FUNCTION pg_create_restore_point(text) to barman;
    GRANT pg_read_all_settings TO barman;
    GRANT pg_read_all_stats TO barman;
    CREATE USER streaming_barman WITH REPLICATION;
    "

    CONTAINER_NAME 替換為您在安裝 AlloyDB Omni 容器時指派的名稱。

  2. DATA_DIR/pg_hba.conf 檔案中,於檔案中現有的 host all all all scram-sha-256之前新增下列幾行:

    host all barman BARMAN_IP/32 AUTHN_METHOD
    host replication streaming_barman BARMAN_IP/32 AUTHN_METHOD
    

    更改下列內容:

    • DATA_DIR:用於 AlloyDB Omni 資料目錄的檔案系統路徑。

    • BARMAN_IP:Barman 伺服器的 IP 位址。

    • :PostgreSQL 驗證方法,AlloyDB for PostgreSQL 伺服器會預期 Barman 伺服器使用此方法。AUTHN_METHOD建議使用下列其中一個值:

      • 如要允許 Barman 伺服器在沒有密碼的情況下進行驗證,請使用 trust

      • 如要向 Barman 伺服器要求密碼,請使用 scram-sha-256

  3. DATA_DIR/postgresql.conf 檔案中新增下列幾行內容:

    archive_command='/bin/true'
    archive_mode=on
    listen_addresses='*'
    wal_level='replica'
    
  4. 重新啟動 AlloyDB Omni 服務:

    Docker

    docker restart CONTAINER_NAME

    Podman

    podman restart CONTAINER_NAME

    CONTAINER_NAME 替換為您在安裝 AlloyDB Omni 容器時指派的名稱。

  5. 執行下列指令,確認所有必要參數都已正確設定:

    Docker

    docker exec CONTAINER_NAME psql -h localhost -U postgres -c "
    SELECT name, setting
       FROM pg_catalog.pg_settings
       WHERE name IN ('archive_command',
                      'archive_mode',
                      'listen_addresses',
                      'wal_level')
       ORDER BY name;"

    Podman

    podman exec CONTAINER_NAME psql -h localhost -U postgres -c "
    SELECT name, setting
       FROM pg_catalog.pg_settings
       WHERE name IN ('archive_command',
                      'archive_mode',
                      'listen_addresses',
                      'wal_level')
       ORDER BY name;"

    輸出看起來像這樣:

       name          |  setting
    ------------------|-----------
    archive_command   | /bin/true
    archive_mode      | on
    listen_addresses  | *
    wal_level         | replica
    (4 rows)
    

設定 Barman 備份伺服器

如要設定及設定 Barman,使其與 AlloyDB Omni 伺服器搭配運作,請在 Barman 伺服器上執行下列指令。

  1. 確認串流複製連線是否正常運作:

    psql -h DATABASE_IP -U streaming_barman -c "IDENTIFY_SYSTEM" replication=1

    輸出結果會與下列內容相似:

          systemid       | timeline |  xlogpos   | dbname
    ---------------------+----------+------------+--------
     7265722823667040273 |        1 | 0/1F0AFCD0 |
    (1 row)
    
  2. 確認 Barman 可以 barman 資料庫使用者的身分連線至 AlloyDB Omni 伺服器。

    psql -t -h DATABASE_IP -U barman -d postgres -c "SELECT 'Connected as: '||current_user"

    DATABASE_IP 替換為 AlloyDB Omni 伺服器的 IP 位址。

    輸出結果會與下列內容相似:

    Connected as: barman
    
  3. 根據需求和偏好設定 Barman 備份伺服器

    設定必須包含下列設定:

    • 設定 conninfo,以 barman 使用者身分連線至 AlloyDB Omni postgres 資料庫。
    • 設定 streaming_conninfo,使用 streaming_barman 使用者。
    • 按照 Barman 說明文件指示,設定啟用 WAL 串流所需的其他指令。

    以下這個最簡單但完整的範例,會修改 Barman 文件中的串流設定範例

    [CONFIGURATION_TAG]
    description = "Backup settings for my AlloyDB Omni server"
    conninfo = host=DATABASE_IP user=barman dbname=postgres
    streaming_conninfo = host=DATABASE_IP user=streaming_barman
    backup_method = postgres
    streaming_archiver = on
    slot_name = barman
    

    更改下列內容:

    • CONFIGURATION_TAG:執行 barman 指令時,用來識別這個伺服器設定的簡短標記,例如 omni

    • DATABASE_IP:AlloyDB Omni 伺服器的 IP 位址。

  4. 切換到 barman 使用者。

    sudo su - barman
  5. 使用barman receive-wal 指令建立複製運算單元,然後開始從資料庫伺服器接收 WAL 串流:

    barman receive-wal --create-slot CONFIGURATION_TAG
    barman receive-wal CONFIGURATION_TAG &

    CONFIGURATION_TAG 替換為您在上一步選擇的設定代碼。

Barman 現在已設定完成,可與 AlloyDB Omni 伺服器搭配運作。如要檢查複製狀態、建立手動備份及執行其他工作,請參閱一般指令

舉例來說,如要建立手動備份,請執行barman backup 指令

後續步驟