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

Windows/Linux 啟用 MySQL 日誌管理完整指南:錯誤、查詢、慢查詢、二進制日誌配置

     編輯:MySQL 綜合教學

日誌類型總覽

日誌類型用途配置參數適用場景
錯誤日誌記錄啟動/停止/錯誤log-error必開,排查崩潰、啟動失敗
一般查詢日誌所有連線與 SQLgeneral_log / log臨時排查、審計 (高負載慎開)
慢查詢日誌超時或無索引查詢slow_query_log, long_query_time長期開啟,效能調優核心
二進制日誌所有變更操作 (行/語句/混合)log_bin, binlog_format主從複制、時間點恢復、審計
中繼日誌從庫接收主庫 Binlogrelay_log從庫自動管理

通用查看指令

-- 是否啟用二進制日誌
SHOW VARIABLES LIKE 'log_bin';

-- 當前 Binlog 狀態
SHOW MASTER STATUS;

-- 列出所有 Binlog 檔案
SHOW MASTER LOGS;

-- 解析 Binlog 內容
mysqlbinlog mysql-bin.000001
mysqlbinlog mysql-bin.000001 | tail  # 只看尾部

配置檔位置

  • Windows:my.ini (安裝目錄或 C:\Windows\)
  • Linux:/etc/my.cnf 或 /etc/mysql/my.cnf

所有設定均在 [mysqld] 區段。

Windows 範例 (my.ini)

[mysqld]
## 一般查詢日誌
general_log = 1
general_log_file = "E:/wamp/MySql/mysql_log/mysql.log"

## 錯誤日誌
log-error = "E:/wamp/MySql/mysql_log/error.log"

## 慢查詢日誌
slow_query_log = 1
slow_query_log_file = "E:/wamp/MySql/mysql_log/slowquery.log"
long_query_time = 2                    # 超過 2 秒
log_queries_not_using_indexes = 1      # 記錄無索引查詢

## 二進制日誌 (主從/恢復必開)
log_bin = "E:/wamp/MySql/mysql_log/mysql-bin"
binlog_format = ROW                    # ROW/STATEMENT/MIXED
expire_logs_days = 7                   # 自動清理 7 天前
max_binlog_size = 100M                 # 單檔上限

Linux 範例 (my.cnf)

[mysqld]
# 路徑建議放在獨立磁碟/分區
log-error = /var/log/mysql/error.log
general_log = 1
general_log_file = /var/log/mysql/mysql.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slowquery.log
long_query_time = 2
log_queries_not_using_indexes = 1
log_bin = /var/log/mysql/mysql-bin
binlog_format = ROW
expire_logs_days = 7
max_binlog_size = 100M
server_id = 1                          # 複制必須唯一

權限與目錄準備 (Linux)

mkdir -p /var/log/mysql
chown -R mysql:mysql /var/log/mysql
chmod 750 /var/log/mysql

動態開關 (無需重啟,5.1+)

SET GLOBAL general_log = ON/OFF;
SET GLOBAL slow_query_log = ON/OFF;
SET GLOBAL long_query_time = 1.5;  -- 即時生效 (需重新連線)
-- Binlog 無法動態開啟,必須配置檔 + 重啟

日誌切割與維護

  • Binlog:PURGE BINARY LOGS BEFORE '2024-01-01'; 或 expire_logs_days 自動清理。
  • Slow/General/Error Log:使用 logrotate (Linux) 或手動 FLUSH LOGS 重新開啟檔案 (需備份舊檔)。
  • mysqladmin flush-logs:觸發所有日誌輪轉 (Binlog 產生新檔,General/Slow 重開檔案)。

生產環境建議

  1. 錯誤日誌、慢查詢日誌、二進制日誌 → 長期開啟。
  2. 一般查詢日誌 → 僅臨時開啟排查,高併發下嚴重影響效能。
  3. binlog_format = ROW:最安全、支援複制過濾、避免非確定性函數問題。
  4. log_slave_updates = 1:從庫若做其他從庫的主庫必開。
  5. 定期 mysqlbinlog 解析驗證 Binlog 完整性。

依業務需求啟用對應日誌,配合自動清理與監控,構建可觀測、可恢復的 MySQL 環境。

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