Postgresql

備份流式 WAL 從站

  • September 9, 2013

我有一個環境,​​其中設置了一對 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.

引用自:https://dba.stackexchange.com/questions/48103