我應該如何配置我的 postgresql.conf 文件以每小時備份一次數據庫?
我的目標是每小時在 Ubuntu 18.04 VPS 上備份一次 PostgreSQL 10 數據庫。
但是,我顯然不明白如何實現這一點。這是我所做的。
我通過四種方式修改 postgresql.conf 文件:
wal_level = replica # minimal, replica, or logical archive_mode = on # enables archiving; off, on, or always archive_command = 'cp %p /test/%f' # copy the database file to the /test directory archive_timeout = 3600 # force a logfile segment switch after this # number of seconds; 0 disables
這些是我更改的 postgresql.conf 中唯一的條目。AIUI,我的意思是:使用與數據庫文件名相同的文件名,每小時將目前數據庫文件複製到 /test。
/etc/init.d/postgresql reload
然後我使用(我也嘗試過)重新啟動 PostgreSQLrestart
。但是,沒有任何東西可以復製到 /test。此外,/etc/postgresql/10/main/pg_wal 目錄不包含任何文件。
我究竟做錯了什麼?也許文件中的其他條目需要更改?謝謝。
對於每小時備份,您可以通過安排 Cronjob 使用 Pg_dump 來實現這一點。或者,您可以配置 Bart 並安排備份。
WAL 存檔本身不是備份。每個 WAL 文件都是要應用的更改列表,但您需要從應用它的東西開始,即“基本備份”。您可以使用“pg_basebackup”最簡單地創建其中之一。這不會在 postgresql.conf 中配置,因為它是一個外部工具。
有了基本備份後,您可以每小時配置一次 WAL 開關。這本質上是一個每小時的“增量備份”。您顯然已經對此進行了配置,但您可能對錯誤的系統進行了配置。
此外,/etc/postgresql/10/main/pg_wal 目錄不包含任何文件。
如果沒有 pg_wal 中的文件,Postgresql 將無法執行。您正在執行的伺服器很可能並非真正基於“/etc/postgresql/10/main/”。如果可以通過 連接
psql
,show data_directory;
顯示什麼?