溫馨提示×

centos中mysql日志管理技巧

小樊
44
2025-10-13 01:07:00
欄目: 云計算

一、日志配置優化
在CentOS中,MySQL日志的配置主要通過/etc/my.cnf(或/etc/mysql/my.cnf)文件完成,合理配置是高效管理的基礎。需重點設置以下參數:

  • 錯誤日志log_error = /var/log/mysql/error.log(指定錯誤日志路徑,記錄啟動、運行及錯誤信息);
  • 慢查詢日志slow_query_log = 1(啟用慢查詢)、slow_query_log_file = /var/log/mysql/slow-query.log(指定日志路徑)、long_query_time = 2(設置慢查詢閾值,默認10秒,可根據業務調整);
  • 通用查詢日志general_log = 1(啟用,記錄所有客戶端查詢,生產環境慎用)、general_log_file = /var/log/mysql/mysql.log(指定路徑);
  • 二進制日志log_bin = /var/log/mysql/mysql-bin(啟用,記錄數據變更語句,用于復制和恢復)、expire_logs_days = 7(自動清理7天前的二進制日志,減少磁盤占用)。
    配置修改后,需重啟MySQL服務使生效:sudo systemctl restart mysqld。

二、常用日志查看命令

  1. 實時查看日志:使用tail -f命令跟蹤日志文件的實時更新,例如查看錯誤日志:sudo tail -f /var/log/mysql/error.log;
  2. 過濾關鍵字:結合grep篩選特定信息,如查找錯誤日志中的“ERROR”記錄:sudo grep 'ERROR' /var/log/mysql/error.log;
  3. 分頁查看:使用less命令分頁瀏覽大日志文件,例如:sudo less /var/log/mysql/slow-query.log(按空格翻頁,q退出);
  4. 查看二進制日志:使用mysqlbinlog工具解析二進制日志(位于/var/lib/mysql/目錄,文件名如hostname-bin.000001),例如:sudo mysqlbinlog /var/lib/mysql/hostname-bin.000001。

三、日志輪轉配置(避免磁盤爆滿)
使用CentOS自帶的logrotate工具定期輪轉日志,防止日志文件過大。創建/etc/logrotate.d/mysql配置文件,添加以下內容:

/var/log/mysql/*.log {
    daily          # 每天輪轉
    rotate 14      # 保留14個舊日志
    compress       # 壓縮舊日志(節省空間)
    delaycompress  # 延遲壓縮(避免壓縮當天日志)
    missingok      # 忽略缺失的日志文件
    notifempty     # 空日志不輪轉
    create 640 mysql mysql  # 創建新日志文件并設置權限
    sharedscripts  # 所有日志輪轉完成后執行腳本
    postrotate
        /usr/bin/mysqladmin flush-logs > /dev/null 2>&1 || true  # 通知MySQL刷新日志
    endscript
}

配置完成后,logrotate會自動按計劃執行(默認每天),無需手動干預。

四、日志清理策略

  1. 二進制日志
    • 自動清理:通過expire_logs_days參數設置保留天數(如expire_logs_days = 7),MySQL會自動刪除過期日志;
    • 手動清理:使用PURGE BINARY LOGS命令,例如刪除2025-10-01之前的日志:PURGE BINARY LOGS BEFORE '2025-10-01';;
  2. 其他日志
    使用find命令定期清理舊日志(如7天前),例如清理慢查詢日志:find /var/log/mysql/ -type f -name "*.log" -mtime +7 -exec rm {} \;(需謹慎操作,避免誤刪)。

五、日志分析技巧

  1. 慢查詢分析
    • 使用mysqldumpslow(MySQL自帶):mysqldumpslow -s t /var/log/mysql/slow-query.log(按查詢時間排序,找出最耗時的查詢);
    • 使用pt-query-digest(Percona Toolkit):pt-query-digest /var/log/mysql/slow-query.log > slow_query_analysis.txt(生成詳細分析報告,包含慢查詢占比、執行頻率等);
  2. 錯誤日志分析
    使用grep篩選錯誤類型,例如查找“Connection refused”錯誤:sudo grep 'Connection refused' /var/log/mysql/error.log;
  3. 可視化工具
    對于大規模日志,可使用ELK Stack(Elasticsearch+Logstash+Kibana)、Grafana+Loki或Percona Monitoring and Management(PMM)進行集中存儲、索引和可視化,快速定位性能瓶頸。

六、注意事項

  • 權限控制:確保日志文件僅授權用戶(如mysql用戶或root)可訪問,避免數據泄露;
  • 性能影響:通用查詢日志和慢查詢日志會占用I/O資源,生產環境建議僅在調試時啟用通用查詢日志;
  • 備份優先:清理或修改日志前,務必備份重要日志(如二進制日志),防止數據丟失;
  • 磁盤監控:定期檢查/var/log/mysql/目錄的磁盤使用情況(如df -h /var/log/mysql),避免日志占滿磁盤導致服務中斷。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女