2011-04-03 74 views
52

我目前使用pg_dump管道到gzip管道到split。但問題在於所有輸出文件總是被更改。所以基於校驗和的備份總是複製所有數據。PostgreSQL增量備份的最佳方法

是否有任何其他好的方法來執行PostgreSQL數據庫的增量備份,其中可以從備份數據恢復完整的數據庫?

例如,如果pg_dump可以使所有內容都絕對有序,那麼所有更改僅應用於轉儲結束時或類似內容。

+0

你有沒有發現在S備份olution?我也有相同的要求,即在PostgreSQL中進行增量備份。我經歷了許多文章和網站,但我找不到在PostgreSQL中進行增量備份的明確方法。 PostgreSQL是否支持獨立的增量備份,沒有像pg rman這樣的第三方工具?請幫助我。謝謝。 – Suniel 2016-07-03 17:13:17

回答

52

更新:Check out Barman爲更簡單的方法來設置WAL歸檔備份。可以使用PostgreSQL's continuous WAL archiving方法。首先,您需要設置wal_level=archive,然後執行完整的文件系統級備份(在發出pg_start_backup()pg_stop_backup()命令之間),然後通過配置archive_command選項來複制較新的WAL文件。

優點:

  • 增量,在WAL檔案包括需要還原數據庫
  • 幾乎沒有開銷的當前狀態的一切,複製WAL文件是便宜
  • 您可以在恢復數據庫任何時間點(此功能稱爲PITR或時間點恢復)

缺點:

  • 更復雜的設置比pg_dump的
  • 完全備份會比pg_dump的,因爲所有的內部表結構和索引包括
  • 不適合寫入密集型數據庫工作得很好,因爲恢復大得多將需要很長時間。

有一些工具,如pitrtoolsomnipitr可以簡化設置和恢復這些配置。但我自己並沒有使用過它們。

+1

現在就自己玩這個遊戲,發現即使在windows上(儘管大多數文檔都是linux重量級),這對Barman來說沒有工具 – 2012-04-03 21:31:29

+0

+1,因爲它提供了一個很好的開箱即用的解決方案。 – 2014-08-01 08:23:16

+2

Pinging for any updates/more recent developments。 – 2015-07-30 20:51:32

1

另一種方法是備份到純文本並使用rdiff創建增量差異。

+5

無法想象爲5G數據庫做到這一點,更不用說50G的數據庫了。 – Jerry 2012-05-09 14:00:32

+2

在過去使用數據目錄本身的快照時,我已經將它用在比50G更大的dbs上。但是,是的,一旦簡單的測試備份開始變得龐大而笨拙,使用其他方法是一個好主意。 – 2012-05-10 02:24:48

+1

我不知道barman是如何工作的,但據我所知,WAL歸檔並不保存索引(http://www.postgresql.org/docs/9.2/static/continuous-archiving.html#CONTINUOUS-ARCHIVING-告誡)。 – Bladt 2014-09-12 20:45:36

4

還檢查了http://www.pgbackrest.org

pgBackrest是PostgreSQL的另一個備份工具,你應該評估,因爲它支持:

  • 並行備份(測試,以幾乎直線多達32個內核擴展,但也許可以去更遠..)
  • 靜態壓縮備份
  • 增量和差異(壓縮!)備份
  • 流壓縮(在源數據被壓縮一次,然後通過網絡傳送並存儲)
  • 平行,增量恢復(能力來更新舊副本到最新)
  • 完全支持表空間
  • 備份輪換和存檔過期
  • 能夠恢復它由於某種原因失敗
  • 等等,等等。
+0

如何從待機狀態備份?我有/etc/pgbackrest.conf指出backup-standby = y,archive-async = y和remotebacup ini配置標籤,其中包含db-port = 5433和db-host = lanip(192.168.0.3)。每次調用/ opt/perlroot/bin/perl/opt/perlroot/bin/pgbackrest --stanza = remotebackup stanza-create時出錯124遠程進程終止於192.168.0.3退出狀態255:Permission denied public key。但奇怪的從備用sudo -u postgres ssh 192.168.0.3調用工作正常。添加cmd-ssh =/usr/bin/sudo -u postgres/usr/bin/ssh -vv也無法工作:( – user3453753 2017-01-28 06:22:51

+0

從備用備份包含在pgbackrest文檔中,主要涉及在備份中設置副本pgbackrest.conf文件。至於您的權限被拒絕的問題,我無法真正對其說話,但您的系統可能在您的SSH密鑰上存在配置錯誤。 – 2017-12-19 19:02:07