logrotate實現MySQL慢日誌分割

MySQL慢日誌?mysql

  MySQL的慢查詢日誌是MySQL提供的一種日誌記錄,它用來記錄在MySQL中響應時間超過閥值的語句,具體指運行時間超過long_query_time值的SQL,則會被記錄到慢查詢日誌中。long_query_time的默認值爲10,意思是運行10s以上的語句。
  默認狀況下,MySQL數據庫並不啓動慢查詢日誌,須要咱們手動來設置這個參數,固然,若是不是調優須要的話,通常不建議啓動該參數,由於開啓慢查詢日誌或多或少會帶來必定的性能影響。慢查詢日誌支持將日誌記錄寫入文件,也支持將日誌記錄寫入數據庫表。sql

慢日誌產生狀況?數據庫

  第一執行時間過長(大於設置的long_query_time閾值);第二未使用索引,或者未使用最優的索引。ide

  這兩種日誌默認都是關閉狀態,特別是未使用索引的日誌,由於這一類的日誌可能會有不少,因此還有個特別的開關log_throttle_queries_not_using_indexes用於限制每分鐘輸出未使用索引的日誌數量。post

慢日誌輸出性能

  MySQL慢查詢日誌默認狀況下都是通通寫入一個文件中,文件會愈來愈大,很是不方便咱們分析。利用logrotate來對MySQL慢查詢日誌、錯誤日誌進行切割,便於分析和查找問題。日誌

定義日誌論滾策略 索引

[root@IDC_db_40 ~]# cat mysql-log-rotate
/opt/mysql/data/IDC_db_40-slow.log {
create 600 mysql mysql
dateext
notifempty
daily
maxage 60
rotate 30
missingok
compress
olddir /opt/mysql/data/
postrotateip

just if mysqld is really running

if test -x /opt/mysql/bin/mysqladmin && \
/opt/mysql/bin/mysqladmin ping -uroot -p123qwe,./ -S /tmp/mysql.sock &>/dev/null
then
/opt/mysql/bin/mysqladmin flush-logs -uroot -p123qwe,./ -S /tmp/mysql.sock
fi
endscript
}it

設置計劃任務

59 23 * /usr/sbin/logrotate -f mysql-log-rotate

#天天23:59進行日誌分割

相關文章
相關標籤/搜索