1. 程式人生 > >使用logrotate輪替MySQL的mysql-audit審計日誌

使用logrotate輪替MySQL的mysql-audit審計日誌

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審計日誌