我已经安装
PostgreSQL 10.6 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3), 64-bit
并配置:
log_filename = 'postgresql.log'
但我想通过 logrotate 而不是 PostgreSQL 的内部 logrotation 来管理日志轮换:
#vim /etc/logrotate.d/postgresql
/var/lib/pgsql/data/log/postgresql.log {
daily
rotate 7
compress
create 0664 postgres postgres
missingok
notifempty
sharedscripts
}
logrotate 按预期工作,但 PostgreSQL 将停止登录到旋转/var/lib/pgsql/data/log/postgresql.log
文件。唯一的解决方案是systemctl restart postgresql
可以放在 logrotatepostrotate/endscript
块内,但如果这是在关键生产系统上完成的,我不能这样做。
你有什么建议如何在不需要重新启动 PostgreSQL 的情况下正确地 logrotate PostgreSQL 日志文件?
谢谢!
更新: 在重新加载 PostgreSQL 期间,它会查找更改。我找到了一种解决方法,如何实现 PostgreSQL 将开始登录到旋转的postgresql.log文件 - 我需要修改配置文件,例如注释掉/修改log_filename然后重新加载 PostgreSQL 并恢复更改并再次重新加载 PostgreSQL。因为 PostgreSQL 在配置文件中寻找变化。但如果有比触摸配置文件更好的解决方案,我会很高兴。