Postgresql
在熱備用伺服器上執行 pg_dump?
免責聲明:我承認我還沒有嘗試過,但我不確定我是否會知道它是否工作不正常,所以我想問一下。
我想
pg_dumpall
從執行流複製的熱備用伺服器執行每晚備份作業(通過),以避免將負載放在主伺服器上。我只看到提到人們遇到的一些問題,例如這里和這裡,但很少有指導。如果備份稍微落後於主數據庫,這沒關係,只要它是一致的(它應該是)。我的問題是:
- 我真的要這樣做,還是應該在主伺服器上進行備份?為什麼?
- 在備用設備上進行轉儲時,我需要哪些設置以及我應該使用哪些程序來正確執行此操作?例如,我必須在備份期間停止複制嗎?
AFAIK,
pg_dump
在熱備用上執行是備用的主要用途之一。它是完全安全的,儘管它不是完全可靠的——如果備用數據庫落後於主數據庫太遠而中止事務,則轉儲可能會失敗。您真正需要注意的唯一一件事是確保待機是最新的並且跟上。如果備用數據庫失去了與主數據庫的連接並且落後太遠,那麼您不會想要愉快地備份一個三週過時的備用數據庫。
在備份期間,您需要讓備用伺服器遠遠落後於主伺服器,否則它必須取消您的
pg_dump
事務才能繼續重播 WAL。請參閱有關熱備的文件,尤其是“處理查詢衝突”部分以及max_standby_archive_delay
和max_standby_streaming_delay
參數。請注意,master 必須願意保留足夠的 WAL 檔案以允許 slave 再次趕上。