Postgresql
使用 systemd 後清理 Postgres 中的檔案
我正在使用 Postgres 9.3,我有一個主數據庫和一個跟隨主數據庫的熱備用數據庫。作業系統為 CentOS 7。
我已經將啟動 Posgres 的方式從 SysV 更改為 systemd。我使用了標準
/usr/lib/systemd/system/postgresql-9.3.service
,它比舊的 SysV 腳本要簡化得多。更改後,我觀察到它繼續正常工作。唯一的缺點是熱備份中的檔案永遠不會被刪除。這就像
archive_cleanup_command
inrecovery.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'