Postgresql

使用 systemd 後清理 Postgres 中的檔案

  • December 28, 2017

我正在使用 Postgres 9.3,我有一個主數據庫和一個跟隨主數據庫的熱備用數據庫。作業系統為 CentOS 7。

我已經將啟動 Posgres 的方式從 SysV 更改為 systemd。我使用了標準/usr/lib/systemd/system/postgresql-9.3.service,它比舊的 SysV 腳本要簡化得多。

更改後,我觀察到它繼續正常工作。唯一的缺點是熱備份中的檔案永遠不會被刪除。這就像archive_cleanup_commandinrecovery.conf被忽略了。

在.service中,Postgres是這樣啟動的:

pg_ctl start -D ${PGDATA} -s -w -t 300

而在 SysV 中以這種方式:

postmaster -p $PGPORT -D $PGDATA

我認為他們兩個是相當的。

如果我改回 SysV,則不再累積存檔。

為什麼我的檔案沒有用 systemd 清理?

問題是PATH環境不同。

我有這條線recovery.conf

archive_cleanup_command = 'pg_archivecleanup /var/lib/pgsql/9.3/standby/archive %r'

而 Postgres 沒有找到pg_archivecleanup並默默地忽略它。

解決方案是將行更改為:

archive_cleanup_command = '/usr/pgsql-9.3/bin/pg_archivecleanup /var/lib/pgsql/9.3/standby/archive %r'

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