logrotate實現MySQL慢日誌分割

來源:互聯網
上載者:User

logrotate實現MySQL慢日誌分割

MySQL慢日誌?

  MySQL的慢查詢日誌是MySQL提供的一種日誌記錄,它用來記錄在MySQL中回應時間超過閥值的語句,具體指已耗用時間超過long_query_time值的SQL,則會被記錄到慢查詢日誌中。long_query_time的預設值為10,意思是運行10s以上的語句。
  預設情況下,MySQL資料庫並不啟動慢查詢日誌,需要我們手動來設定這個參數,當然,如果不是調優需要的話,一般不建議啟動該參數,因為開啟慢查詢日誌或多或少會帶來一定的效能影響。慢查詢日誌支援將日誌記錄寫入檔案,也支援將日誌記錄寫入資料庫表。

慢日誌產生情況?

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

  這兩種日誌預設都是關閉狀態,特別是未使用索引的日誌,因為這一類的日誌可能會有很多,所以還有個特別的開關log_throttle_queries_not_using_indexes用於限制每分鐘輸出未使用索引的日誌數量。

慢日誌輸出

  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/
postrotate
# 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
}

設定計劃任務

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

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

效果展示

每天都會產生一個壓縮包非常方便管理!!!

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.