Informix数据库的日志管理是保障数据一致性、系统稳定性及故障快速排查的核心环节。在CentOS系统上,需围绕日志配置、轮转、分析、监控及安全五大维度构建完整策略,以下是具体实施方案:
Informix的日志文件默认存储在INFORMIXDIR目录下的log子目录(如/opt/informix/log),主要包含:
onlog(逻辑日志与物理日志合并存储);log.ctl(记录日志文件的元信息);log.dat(存储实际的事务日志数据)。通过CREATE DATABASE语句指定日志模式,决定日志的写入方式:
CREATE DATABASE db_name WITHOUT LOG,不记录事务日志,适用于不需要事务支持的静态数据场景(如只读表);CREATE DATABASE db_name WITH BUFFERED LOG,日志先写入内存缓冲区,满后刷盘,提升性能但可能丢失缓冲区数据;CREATE DATABASE db_name WITH LOG(默认),日志直接写入磁盘,保证数据一致性,适用于生产环境。通过onconfig文件($INFORMIXDIR/etc/onconfig)调整日志大小与数量:
LOGSIZE:单个逻辑日志文件的大小(单位:页,默认4096页≈3MB);LOGFILES:逻辑日志文件的数量(建议至少4个,满足备份窗口需求);PHYSLOGSIZE:物理日志文件的大小(单位:MB,默认100MB);PHYSLOGNAME:物理日志文件的路径(如/opt/informix/log/physlog)。使用logrotate工具自动轮转日志,避免日志文件过大占用磁盘空间。配置示例如下:
在/etc/logrotate.d/下新建informix文件,内容如下:
/opt/informix/log/*.log {
daily # 每日轮转
rotate 7 # 保留7份旧日志
compress # 压缩旧日志(节省空间)
missingok # 忽略缺失的日志文件
notifempty # 空日志不轮转
create 0644 informix informix # 新日志文件权限与所有者
sharedscripts # 所有日志轮转完成后执行脚本
postrotate
if [ -f /opt/informix/logs/informix.pid ]; then
kill -USR1 `cat /opt/informix/logs/informix.pid` # 通知Informix刷新日志
fi
endscript
}
若需立即轮转,可执行以下命令:
/usr/sbin/logrotate -f /etc/logrotate.d/informix
此命令会强制按照配置文件规则轮转日志。
tail -f /opt/informix/log/onlog(跟踪在线日志);less /opt/informix/log/log.dat(支持上下翻页);grep "ERROR" /opt/informix/log/*.log(快速定位错误);awk '/ERROR/{count++} END{print count}' /opt/informix/log/*.log(统计错误频率)。使用onstat命令查看逻辑日志的使用情况:
onstat -l
输出内容包括:
C-当前使用,A-活动,U-未使用);journalctl查看系统日志(包含Informix相关错误),例如:journalctl -u informix -f # 实时跟踪Informix服务日志
ERROR、ORA-(Informix错误码)等关键词时触发邮件/短信警报。通过Informix审计框架记录用户操作,便于安全追溯:
$INFORMIXDIR/aaodir/adtcfg文件,启用审计模块:AUDIT_ENABLE=1
AUDIT_TRAIL=DB # 将审计日志写入数据库表
AUDIT_POLICY=ALL # 记录所有操作(可根据需求调整)
service informixserver restart
审计日志可通过onstat -g aud命令查看,或查询sysaudits系统表获取详细信息。
ontape工具备份(如ontape -s -L 0执行0级备份),备份前确保日志文件未被锁定;/opt/informix/log目录的磁盘使用率,建议预留20%以上空间,避免因日志满导致数据库停机;INFORMIX用户对日志目录有读写权限,禁止其他用户修改日志文件;ontape -r恢复备份)。