| 日誌類型 | 用途 | 配置參數 | 適用場景 |
|---|---|---|---|
| 錯誤日誌 | 記錄啟動/停止/錯誤 | log-error | 必開,排查崩潰、啟動失敗 |
| 一般查詢日誌 | 所有連線與 SQL | general_log / log | 臨時排查、審計 (高負載慎開) |
| 慢查詢日誌 | 超時或無索引查詢 | slow_query_log, long_query_time | 長期開啟,效能調優核心 |
| 二進制日誌 | 所有變更操作 (行/語句/混合) | log_bin, binlog_format | 主從複制、時間點恢復、審計 |
| 中繼日誌 | 從庫接收主庫 Binlog | relay_log | 從庫自動管理 |
-- 是否啟用二進制日誌
SHOW VARIABLES LIKE 'log_bin';
-- 當前 Binlog 狀態
SHOW MASTER STATUS;
-- 列出所有 Binlog 檔案
SHOW MASTER LOGS;
-- 解析 Binlog 內容
mysqlbinlog mysql-bin.000001
mysqlbinlog mysql-bin.000001 | tail # 只看尾部
my.ini (安裝目錄或 C:\Windows\)/etc/my.cnf 或 /etc/mysql/my.cnf所有設定均在 [mysqld] 區段。
[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 # 單檔上限
[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 # 複制必須唯一
mkdir -p /var/log/mysql
chown -R mysql:mysql /var/log/mysql
chmod 750 /var/log/mysql
SET GLOBAL general_log = ON/OFF;
SET GLOBAL slow_query_log = ON/OFF;
SET GLOBAL long_query_time = 1.5; -- 即時生效 (需重新連線)
-- Binlog 無法動態開啟,必須配置檔 + 重啟
PURGE BINARY LOGS BEFORE '2024-01-01'; 或 expire_logs_days 自動清理。logrotate (Linux) 或手動 FLUSH LOGS 重新開啟檔案 (需備份舊檔)。mysqlbinlog 解析驗證 Binlog 完整性。依業務需求啟用對應日誌,配合自動清理與監控,構建可觀測、可恢復的 MySQL 環境。