使用logrotate輪替MySQL的mysql-audit審計日誌
阿新 • • 發佈:2017-10-06
mysql logrotate audit
最近一段時間發現在一臺服務器上的MySQL的audit(http://jim123.blog.51cto.com/4763600/1955487)插件日誌沒有數據,剛開始以為是配置出問題就進數據庫檢查了一下發現沒有問題,後來發現在MySQL的audit的指定文件路徑下發現有輪替日誌,初步分析是在使用系統的logrotate(http://jim123.blog.51cto.com/4763600/1880582)做日誌輪替就去/etc/logrotate.d目錄下找自定義的輪替日誌,發現在做audit日誌輪替時沒有停止audit_json_file的日誌寫入,導致錯於是在就修改了一下:
/data/mysqldata/mysql-audit.json { prerotate # stop mysql audit if test -x /usr/local/mysql/bin/mysql && /usr/local/mysql/bin/mysqladmin ping &>/dev/null then /usr/local/mysql/bin/mysql -e "SET GLOBAL audit_json_file=OFF;" fi endscript create 0600 mysql mysql notifempty daily rotate 5 missingok compress postrotate # just if mysqld is really running and start mysql audit if test -x /usr/local/mysql/bin/mysqladmin && /usr/local/mysql/bin/mysqladmin ping &>/dev/null then /usr/local/mysql/bin/mysqladmin flush-logs && /usr/local/mysql/bin/mysql -e "SET GLOBAL audit_json_file=ON;" fi endscript }
在修改好後再測試一下輪替後審計日誌可以正常寫入。在這裏不得不提的有兩點:首先,在這裏需要註意的是在使用MySQL的audit插件做審計時,在沒有停止audit_json_file時多審計日誌修改時會導致之後的日誌無法寫入會出錯,所以在對audit_json_file日誌做輪替修改時都需要SET GLOBAL audit_json_file=OFF關閉審計後再進行進行操作;其次在在你的root用戶的家目錄下一定要有你寫好的~/.my.cnf密碼文件,其中mysql和mysqladmin兩個命令都需要有,這個以前有提及過,需要可以參看:http://jim123.blog.51cto.com/4763600/1900634
本文出自 “Jim的技術隨筆” 博客,謝絕轉載!
使用logrotate輪替MySQL的mysql-audit審計日誌