Postgresql

我應該如何配置我的 postgresql.conf 文件以每小時備份一次數據庫?

  • April 4, 2022

我的目標是每小時在 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然後我使用(我也嘗試過)重新啟動 PostgreSQL restart

但是,沒有任何東西可以復製到 /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/”。如果可以通過 連接psqlshow data_directory;顯示什麼?

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