Postgresql
備份流式 WAL 從站
我有一個環境,其中設置了一對 postgresql 伺服器來進行 WAL 流複製。
我也有一個測試環境,並且我想定期對生產 DBMS 進行快照並將其恢復到測試伺服器上。
現在我做:
ID=db-$(date +%F_%T) pg_basebackup --format=tar --pgdata=- --xlog --gzip --label=$ID
然後在測試伺服器上恢復該存檔。
不幸的是,這使得生產伺服器上的事情真的變慢了,所以我想將其切換為從複製從屬伺服器中提取複製。
但我不能 - 我得到的錯誤是:
pg_basebackup: could not connect to server: FATAL: recovery is still in progress, can't accept WAL streaming connections
當我需要複製它時,我需要做些什麼來實現不破壞主伺服器性能的目標?
在 Ubuntu 12.04 x86_64、postgresql 伺服器上執行
9.1.9-0ubuntu12.04
PostgreSQL 9.2 支持鍊式複製。
9.1 不支持鍊式複製。您將需要從主伺服器獲取基本備份,或者:
- 停止副本
- 手動複製副本
- 啟動副本備份
我在備用伺服器上使用rsync。
1. A=$(psql -h <master> -tAc "select pg_start_backup('label')") 2. rsync -rptgoDLK --delete $PGDATA/ <standby>:9.2/main --exclude postmaster.pid 3. B=$(psql -h <master> -tAc "select pg_stop_backup()") 4. With pg_xlogfile_name('$A') and pg_xlogfile_name('$B') i decide, which WAL-files i have to copy.