2015-06-05 24 views
2

這裏是sql和pg的相對新手,所以這是一個相對開放的問題,關於從流中備份日常數據。具體的命令/腳本,如果它很簡單,將不勝感激,否則我很樂意被引導到更具體的文章/教程如何實現需要做什麼。自動將Postgresql從小型SSD備份到多個硬盤驅動器的數據庫備份

形勢

我的幾個GB /天的量每天記錄一些外部服務器的各種數據流。我希望能夠將這些數據存儲到較大的硬盤驅動器上,這些硬盤驅動器隨後將用於從以後的日期抽取信息進行分析。

硬件

X1 SSD(128GB)(OS +應用程序)

X2 HDD(4TB每個)(存儲,以備不時之需第2盤)

需要採取哪些措施

當前的計劃是讓SSD存儲由每日記錄數據組成的臨時數據庫。當服務器負載較低(清晨)時,將整個臨時數據庫轉儲到兩個存儲磁盤上的兩個單獨的備份實例上。存儲臨時數據庫的動機是減少硬盤上的負載。此外,日常數據足夠小,以便在服務器負載恢復之前能夠將其複製到存儲驅動器。

問題

  1. 這是一個可以接受的方法?
  2. 將數據直接推送到其中一個存儲驅動器,考慮主數據庫並自動執行從該驅動器到第二個存儲驅動器的計劃備份是更好還是更安全?
  3. 什麼具體的命令將被要求這樣做是爲了保證數據的完整性(即在備份過程中,新的數據仍然會被記錄)

在以後的日子,當預算允許的硬件會升級,但以上是現在的東西。

謝謝!

+0

您是否熟悉PITR/WAL歸檔? –

+0

@CraigRinger我不是;但我目前正在閱讀關於它的pg文檔 – undercurrent

回答

0

建立備份系統時的第一條規則 - 做最適合您的最簡單的事情。

運行pg_dump將確保數據的完整性。你要注意最後一項備份是什麼,以確保你不刪除任何新的東西。在刪除數據後,如果您可以負擔日誌,您可能希望在各種表上運行CLUSTER或VACUUM FULL。

另一種選擇是有一個空的模板數據庫,並完成類似:

  1. 暫停應用+斷開 「current_db」
  2. 重命名數據庫 「old_db」
  3. CREATE DATABASE current_db模板my_template_db
  4. 複製您需要的任何其他位(序列號等)
  5. 重新連接應用程序
  6. 轉儲old_db +將備份複製到其他磁盤。

如果您實際需要的是兩個獨立的實時數據庫,那麼對於長時間運行的查詢,一個較小的快速數據庫和一個較大的快速數據庫,然後調查表空間。創建兩個表空間 - 大磁盤上的默認值和SSD上的「小」表空間。把你的小型數據庫放在SSD上。然後,您可以使用外部數據包裝器(FDW)或轉儲/恢復等從一個表複製到另一個表。

+0

嗨@RichardHuxton,謝謝你的回覆。理想情況下,數據庫不會斷開,因爲數據總是有可能到達。只需要一個實時數據庫,但該數據庫需要每天至少一次不斷備份。對於在SSD上保存一個小型臨時數據庫並將其用於轉儲到存儲硬盤驅動器而不是連續寫入存儲硬盤驅動器,您有什麼看法?不值得額外的複雜程度?從塊中複製SSD的理由將減少HDD的磨損。 – undercurrent