文档目录

适用场景

  • 产品:ZCF。
  • 组件:ZCE-X。
  • 版本:5.2.115.8。
  • 对接云平台版本:4.8.x。
  • 操作系统:c76。
  • 触发条件:需要统一管理 PostgreSQL 日志轮转和保留策略。

问题现象

  • PostgreSQL 默认日志滚动方式不满足当前日志管理要求。
  • 希望关闭 PostgreSQL 自身的自动滚动,改由 logrotate 接管。

判断方法

  1. 检查 postgresql.conf 中 log_filename 与 log_truncate_on_rotation 配置是否更新。
  2. 检查 /etc/logrotate.d/postgres 是否存在正确规则且权限为 644。
  3. 检查 ZCE-X 健康状态正常。

原因说明

本操作将 PostgreSQL 日志滚动从数据库自身机制切换为由 logrotate 管理,以统一控制滚动频率、大小和保留时间。

解决方案

1. 执行前准备

  • 先关闭全局高可用。
  • 先备份原始配置文件。
  • 变更后重新检查 ZCE-X 健康状态。

2. 处理步骤

  1. 登录云平台并关闭全局高可用。
  • 预期结果:平台进入可变更状态。
  1. 备份原始配置文件。
  • 预期结果:具备快速回退基础。
  1. 编辑 PostgreSQL 配置:
   vim /opt/sds/postgres/data/postgresql.conf

设置:

   log_filename = 'postgresql.log'
   log_truncate_on_rotation = off
  • 预期结果:关闭 PostgreSQL 自身日志自动滚动。
  1. 重载 PostgreSQL 配置:
   docker exec -u postgres sds-postgres pg_ctl reload
  • 预期结果:新配置生效。
  1. 编辑 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 份。
  1. 确保规则文件权限为 644:
   chmod 644 /etc/logrotate.d/postgres
  • 预期结果:logrotate 规则权限正确。
  1. 检查 ZCE-X 健康状态,并重新开启全局高可用。
  • 预期结果:平台恢复正常运行。

验证方法

  • 检查 postgresql.conf 中目标配置已生效。
  • 检查 logrotate 规则文件内容与权限正确。
  • 检查 ZCE-X 健康状态正常。

风险与回滚

  • 风险:若规则配置错误,可能影响 PostgreSQL 日志轮转或日志文件权限。
  • 回滚:原文提供明确回退方案:
  1. 恢复备份的 postgresql.conf
  2. 执行:
     docker exec -u postgres sds-postgres pg_ctl reload
ZCE-X 使用 logrotate 管理 PostgreSQL 日志 | 技术方案 · KB | ZStack 资源中心