首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 線上清空慢查詢日誌文件完整操作指南

     編輯:MySQL 綜合教學

前言

隨著 MySQL 運行時間增長,慢查詢日誌(slow query log)會佔用大量磁盤空間,甚至影響資料庫效能。本文詳細說明如何在不重啟服務的情況下,線上輪換生成新的慢查詢日誌文件,並安全歸檔舊日誌,適用於 MySQL 5.6 及以上版本。

一、環境準備與慢查詢開啟

測試環境:MySQL 5.6.21,配置文件位於 /etc/my.cnf。編輯配置文件,新增或修改以下參數:

[mysqld]
slow_query_log=1                    # 開啟慢查詢日誌
slow_query_log_file=/var/lib/mysql/mysql-slow.log  # 指定日誌路徑
long_query_time=0.01                # 閾值設為 0.01 秒(測試用,生產建議 1~2 秒)

修改完成後需重啟 MySQL 服務使配置生效:

service mysql restart

二、驗證慢查詢配置

登入 MySQL 執行以下指令確認設定已生效:

SHOW VARIABLES LIKE '%slow_query_log%';

執行一條耗時查詢進行測試:

USE information_schema;
SELECT * FROM tables;

查詢耗時 1.1 秒,返回 314 行記錄。使用 cat /var/lib/mysql/mysql-slow.log 可見日誌已記錄完整的執行資訊(時間、鎖等待、掃描行數、SQL 語句等)。

三、線上輪換慢查詢日誌(核心步驟)

無需重啟即可切換新日誌文件,操作如下:

  1. 關閉全域慢查詢日誌
    SET GLOBAL slow_query_log=0;
  2. 確認已關閉
    SHOW VARIABLES LIKE '%query_log%';
  3. 指定新日誌文件路徑
    SET GLOBAL slow_query_log_file='/var/lib/mysql/mysql-slow_new.log';
  4. 重新開啟慢查詢日誌
    SET GLOBAL slow_query_log=1;
  5. 再次確認新路徑已生效
    SHOW VARIABLES LIKE '%query_log%';

此時資料目錄下會出現 mysql-slow_new.log,後續慢查詢將寫入新文件。舊文件 mysql-slow.log 即可安全移動歸檔(如 mv mysql-slow.log mysql-slow.log.20240120)。

四、重啟服務後的持久化配置

全域變數修改僅在當前運行期有效,重啟後會回讀 my.cnf。為使重啟後仍使用新路徑,需同步修改配置文件:

vim /etc/my.cnf
# 修改 slow_query_log_file=/var/lib/mysql/mysql-slow_new.log

重啟驗證:

service mysql restart
SHOW VARIABLES LIKE '%query_log%';

五、總結與建議

  • 線上輪換避免了業務中斷,適合 7×24 環境。
  • 歸檔舊日誌時建議配合 logrotate 自動化管理。
  • 慢查詢分析推薦使用 Percona Toolkit 中的 pt-query-digest,功能強大且免費。

掌握此技巧,可有效控制磁盤佔用,持續保障資料庫穩定運行。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved