您可以使用任何與 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
指令。