您可以使用任何與 PostgreSQL 相容的資料庫備份技術,保護 AlloyDB Omni 資料。Google 建議的最佳做法是使用 Barman。您可以設定 AlloyDB Omni,允許來自您控管的 Barman 伺服器的連線。這樣一來,Barman 伺服器就能持續備份儲存在 AlloyDB Omni 伺服器中的資料。
設定 Barman 和 AlloyDB Omni 伺服器,讓兩者能搭配運作後,您就可以執行 Barman 指令,完成各種資料保護和災害復原工作,包括:
- 建立資料的隨選備份。
- 設定資料變更的同步 WAL 串流至備份伺服器。
- 從特定備份還原。
- 執行時間點還原。
如要進一步瞭解 Barman 的運作方式,請參閱 Barman 手冊。
事前準備
設定 AlloyDB Omni 與 Barman 搭配運作前,請先確認下列事項:
- Barman 安裝在獨立伺服器上。您安裝 Barman 的伺服器必須能透過 TCP 與 AlloyDB Omni 伺服器通訊。 
設定 AlloyDB Omni 以搭配 Barman 使用
如要準備 AlloyDB Omni 伺服器以搭配 Barman 使用,請在安裝 AlloyDB Omni 的伺服器上執行下列指令。
- 建立 - barman資料庫使用者,並授予適當權限:- docker exec pg-service 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; "
- 在 - /var/alloydb/config/pg_hba.conf中新增下列程式碼:- host all barman BARMAN_IP/32 AUTHN_METHOD host replication alloydbreplica BARMAN_IP/32 AUTHN_METHOD- 更改下列內容: - BARMAN_IP:Barman 伺服器的 IP 位址。
- :PostgreSQL 驗證方法,AlloyDB for PostgreSQL 伺服器會預期 Barman 伺服器使用此方法。 - AUTHN_METHOD建議使用下列其中一個值:- 如要允許 Barman 伺服器在沒有密碼的情況下進行驗證,請使用 - trust。
- 如要向 Barman 伺服器要求密碼,請使用 - scram-sha-256。
 
 
- 在 - /var/alloydb/config/postgresql.conf檔案中新增下列幾行內容:- archive_command='/bin/true' archive_mode=on listen_addresses='*' wal_level='replica'
- 重新啟動 AlloyDB Omni 服務: - sudo alloydb database-server stop- sudo alloydb database-server start
- 執行下列指令,確認所有必要參數都已正確設定: - docker exec pg-service 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)
- 確認串流複製連線是否正常運作: - docker exec pg-service psql -h localhost -U postgres -c "IDENTIFY_SYSTEM" replication=1- 輸出結果會與下列內容相似: - systemid | timeline | xlogpos | dbname ---------------------+----------+------------+-------- 7265722823667040273 | 1 | 0/1F0AFCD0 | (1 row)
設定 Barman 備份伺服器
如要設定及設定 Barman,使其與 AlloyDB Omni 伺服器搭配運作,請在 Barman 伺服器上執行下列指令。
- 確認 Barman 可以 - barman資料庫使用者的身分連線至 AlloyDB Omni 伺服器。- psql -h DATABASE_IP -U barman -d postgres -c "SELECT 'Connected as: '||current_user"- 將 - DATABASE_IP替換為 AlloyDB Omni 伺服器的 IP 位址。- 輸出結果會與下列內容相似: - ?column? ---------------------- Connected as: barman (1 row)
- 根據需求和偏好設定 Barman 備份伺服器。 - 設定必須包含下列設定: - 設定 conninfo,以barman使用者身分連線至 AlloyDB Omnipostgres資料庫。
- 設定 streaming_conninfo,使用alloydbreplica使用者。
- 按照 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=alloydbreplica backup_method = postgres streaming_archiver = on slot_name = barman- 更改下列內容: - CONFIGURATION_TAG:執行- barman指令時,用來識別這個伺服器設定的簡短標記,例如- omni。
- DATABASE_IP:AlloyDB Omni 伺服器的 IP 位址。
 
- 設定 
- 切換到 - barman使用者。- sudo su barman
- 使用 - barman receive-wal指令建立複製運算單元,然後開始從資料庫伺服器接收 WAL 串流:- sudo barman receive-wal --create-slot CONFIGURATION_TAG- sudo barman receive-wal CONFIGURATION_TAG &- 將 - CONFIGURATION_TAG替換為您在上一步選擇的設定代碼。
Barman 現在已設定完成,可與 AlloyDB Omni 伺服器搭配運作。如要檢查複製狀態、建立手動備份及執行其他工作,請參閱一般指令。
舉例來說,如要建立手動備份,請執行barman backup 指令。