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

MySQL 日誌管理全解析:錯誤、二進制、查詢與慢查詢日誌配置實戰

     編輯:MySQL 綜合教學

MySQL 日誌管理全解析

MySQL 伺服器運行過程中會產生多種日誌,這些日誌對於故障排查、效能調優、資料恢複與安全稽核至關重要。MySQL 主要包含四大類日誌:錯誤日誌、二進制日誌、查詢日誌 (General Log) 與 慢查詢日誌。本文將逐一詳細說明各類日誌的功能、查看路徑、啟用/停用配置及常用管理指令。

一、錯誤日誌

錯誤日誌記錄了 MySQL 服務啟動、停止過程中的資訊,以及運行期間發生的嚴重錯誤 (如資料表損壞、記憶體不足等)。這是診斷資料庫無法啟動或異常崩潰的首要依據。

1. 查看錯誤日誌路徑

mysql> SHOW VARIABLES LIKE 'log_error%';

輸出範例顯示路徑為 .\HUEY-PC.err (Windows 相對路徑),實際檔案通常位於資料目錄下。

2. 修改錯誤日誌路徑

編輯配置檔 my.ini (Windows) 或 my.cnf (Linux),在 [mysqld] 區段下設定:

[mysqld]
log-error="自訂路徑/檔案名.err"

修改後需重啟 MySQL 服務生效。

3. 查看錯誤日誌內容

錯誤日誌為純文字檔,可直接用文字編輯器開啟,或使用 tail -f (Linux) 即時監看。

二、二進制日誌

二進制日誌記錄所有修改資料的 DDL (如 CREATE, ALTER) 與 DML (如 INSERT, UPDATE, DELETE) 語句,不包含 單純查詢的 SELECT 語句。它是主從複制與資料時間點恢複 (PITR) 的核心基礎。

1. 查看二進制日誌狀態

mysql> SHOW VARIABLES LIKE 'log_bin%';

關鍵欄位:log_bin 顯示 ON 表示已啟用;log_bin_basename 顯示檔案基礎名稱。

2. 啟用二進制日誌

編輯 my.ini/my.cnf,在 [mysqld] 區段添加:

[mysqld]
log-bin="自訂檔案名稱"

建議同時設定 server-id (主從複制必須)。儲存後重啟服務。

3. 查看二進制日誌內容

二進制日誌為二進制格式,需使用 mysqlbinlog 工具解析:

mysqlbinlog HUEY-PC-bin.000001

4. 清除二進制日誌

  • 清除所有日誌 (無主從複制時): RESET MASTER;
  • 清除指定日誌檔之前的所有日誌: PURGE MASTER LOGS TO 'HUEY-PC-bin.000005';
  • 清除特定時間點前的日誌: PURGE MASTER LOGS BEFORE '2023-01-01 00:00:00';
  • 清除 N 天前的日誌: PURGE MASTER LOGS BEFORE CURRENT_DATE - INTERVAL 10 DAY;

5. 自動過期設定 (expire_logs_days)

在配置檔中設定保留天數,MySQL 會自動刪除過期日誌 (於服務啟動或日誌切換時生效):

[mysqld]
expire_logs_days = 7

三、查詢日誌

查詢日誌記錄所有客戶端連接與執行的 SQL 語句 (含 SELECT)。高併發環境下會產生大量 I/O,嚴重影響效能,生產環境通常建議關閉,僅在開發除錯時短暫開啟。

1. 查看狀態與路徑

mysql> SHOW VARIABLES LIKE 'general_log%';

2. 啟用查詢日誌

[mysqld]
log-output=FILE
general-log=1
general_log_file="自訂路徑/檔案名.log"

3. 關閉查詢日誌

[mysqld]
log-output=NONE
general-log=0

修改配置後均需重啟服務。

四、慢查詢日誌

慢查詢日誌記錄執行時間超過 long_query_time (預設 10 秒) 的 SQL 語句,是 SQL 調優的關鍵數據來源。

1. 查看狀態與路徑

mysql> SHOW VARIABLES LIKE 'slow_query_log%';

2. 啟用慢查詢日誌

[mysqld]
log-output=FILE
slow-query-log=1
slow_query_log_file="自訂路徑/檔案名-slow.log"
long_query_time=2

建議將 long_query_time 設為 1-2 秒以捕捉更多潛在慢查詢。修改後重啟服務。

3. 關閉慢查詢日誌

[mysqld]
log-output=NONE
slow-query-log=0

最佳實踐建議: 生產環境務必啟用二進制日誌與慢查詢日誌,並配置合理的過期清理策略;錯誤日誌預設即開啟;查詢日誌平時關閉,需要時動態開啟 (MySQL 5.1+ 支援 SET GLOBAL general_log = ON; 無需重啟)。

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