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:物理日志文件的大?。▎挝唬篗B,默認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恢復備份)。