适用场景
- 产品:ZCF。
- 组件:ZCE-X。
- 版本:5.2.115.8。
- 对接云平台版本:4.8.x。
- 操作系统:c76。
- 触发条件:需要统一管理 PostgreSQL 日志轮转和保留策略。
问题现象
- PostgreSQL 默认日志滚动方式不满足当前日志管理要求。
- 希望关闭 PostgreSQL 自身的自动滚动,改由
logrotate接管。
判断方法
- 检查
postgresql.conf中log_filename与log_truncate_on_rotation配置是否更新。 - 检查
/etc/logrotate.d/postgres是否存在正确规则且权限为644。 - 检查 ZCE-X 健康状态正常。
原因说明
本操作将 PostgreSQL 日志滚动从数据库自身机制切换为由 logrotate 管理,以统一控制滚动频率、大小和保留时间。
解决方案
1. 执行前准备
- 先关闭全局高可用。
- 先备份原始配置文件。
- 变更后重新检查 ZCE-X 健康状态。
2. 处理步骤
- 登录云平台并关闭全局高可用。
- 预期结果:平台进入可变更状态。
- 备份原始配置文件。
- 预期结果:具备快速回退基础。
- 编辑 PostgreSQL 配置:
vim /opt/sds/postgres/data/postgresql.conf
设置:
log_filename = 'postgresql.log'
log_truncate_on_rotation = off
- 预期结果:关闭 PostgreSQL 自身日志自动滚动。
- 重载 PostgreSQL 配置:
docker exec -u postgres sds-postgres pg_ctl reload
- 预期结果:新配置生效。
- 编辑
logrotate规则文件:
vim /etc/logrotate.d/postgres
内容:
/var/log/sds/postgres/postgresql.log {
daily
missingok
maxsize 2G
rotate 14
dateext
dateformat -%Y%m%d-%s
compress
delaycompress
notifempty
copytruncate
create 0644 root root
}
- 预期结果:日志按天轮转、单文件 2G 上限、保留 14 份。
- 确保规则文件权限为
644:
chmod 644 /etc/logrotate.d/postgres
- 预期结果:logrotate 规则权限正确。
- 检查 ZCE-X 健康状态,并重新开启全局高可用。
- 预期结果:平台恢复正常运行。
验证方法
- 检查
postgresql.conf中目标配置已生效。 - 检查
logrotate规则文件内容与权限正确。 - 检查 ZCE-X 健康状态正常。
风险与回滚
- 风险:若规则配置错误,可能影响 PostgreSQL 日志轮转或日志文件权限。
- 回滚:原文提供明确回退方案:
- 恢复备份的
postgresql.conf - 执行:
docker exec -u postgres sds-postgres pg_ctl reload
