Postgresql
如何執行 pg_dump 以免減慢其他連接?
我每天在 PostgreSQL 9.3.14 數據庫上執行大約 pg_dump。50 GB 大小:
pg_dump -Fc dbname > file
我遇到的問題是,雖然
pg_dump
執行需要幾個小時,但所有其他數據庫連接都非常慢。有什麼方法可以
pg_dump
減少資源消耗,還是有更合適的方法來創建不會降低數據庫伺服器速度的定期備份?例如,從不同的伺服器執行 pg_dump 會幫助其工作伺服器上的數據庫 I/O 嗎?
使用atop和pg_activity來確定瓶頸。這可能是伺服器資源以及非最佳 PG 配置/非最佳查詢或缺少索引。
為了提高轉儲速度,您執行轉儲:
- 從另一台伺服器(需要良好的網路)
- 使用零壓縮選項 -Z0 (減少轉儲時間,由於 pg_dump 不能並行壓縮,但增加了對 IO 的要求,這可能會使您的其他請求在時間轉儲執行時更慢)
- 使用目錄格式進行備份:-Fd
- 使用作業:-j8(取決於您的伺服器擁有的核心數量)
很難說,因為我們不知道您的數據庫設置。
您的數據庫是否使用帶有視圖的模式。您可以使用 -n 選項僅轉儲數據模式並在還原後重建您的視圖。
也許您可以在伺服器上的退出時刻執行此操作,使用 -j 您可以並行化轉儲。這將花費更少的時間,但使用更多的記憶體。
否則,從屬選項是一個好習慣