Postgresql

如何安排 PostgreSQL 複製?

  • June 20, 2013

我正在閱讀 postgresql 複製解決方案,但是,即使我剛剛開始了解它是如何工作的,也出現了另一個疑問。我將使用 postgres 內部複製解決方案,但據我了解,每個事件都將在實現時被複製;例如,如果我向主伺服器插入一些數據,它會自動複製到從伺服器……我說的對嗎?

好吧,是這樣嗎,我正在尋找將這種複制安排為被動備份的方法,但問題是,例如,我需要在每個星期一晚上將數據庫與當天插入的所有數據一起復製到Amazon EC2 虛擬伺服器中的從屬數據庫。我正在考慮使用 cron 作為第一種方法,但閱讀 postgres 文件後我意識到實際上只配置必要的文件,postgres 會為你做……

那麼,我怎樣才能在需要的時刻安排複製呢?

PD.-時間表可能會有所不同,因此它需要完全通用,而且…我在主伺服器和從伺服器中使用 Ubuntu 12.04 和 PostgreSQL 9.1。謝謝

您可以使用pg_basebackup通過複製協議獲取 PostgreSQL 數據庫的副本。它雖然複製了整個數據庫,但它不是增量的。--xlog-method=stream除非您設置了共享的 WAL 存檔,否則您將需要使用該參數。

流式複制不太適合您描述的目的。您可以將其設置為具有複製延遲,但它是幾分鐘或幾小時而不是幾天,因為您必須在主伺服器或存檔中保留的 WAL 數量才能獲得複制延遲的天數。它也是固定的,不可調度。

您可以通過大量 WAL 歸檔以及為每個備份自定義創建的 recovery.conf 來實現您所描述的內容,但它充其量只是繁瑣。

您需要意識到的是,到(比如說)星期五,master 不再有任何關於它在星期一所處的狀態的記錄。它無法將上週五的快照更新到本週五,因為它不再知道它在上週一……或上週五等中間日子的狀態。它不知道舊副本處於什麼狀態,也不知道如何將其從那裡獲取到現在的位置。

你可以告訴它通過歸檔 WAL 段來記住那麼多狀態,但是你需要大量的磁碟空間,如果你的數據庫很忙,從 WAL 中獲取備份是非常低效的。

我建議只使用pg_basebackup和/或pg_dump按計劃進行。

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