標籤:
在 MySQL 中,有 4 種不同的日誌,分別是錯誤記錄檔、二進位日誌、查詢日誌和慢查詢日誌。
錯誤記錄檔
錯誤記錄檔記錄了 MySQL 啟動和停止時以及伺服器在運行過程中發生嚴重錯誤時的相關資訊。
查看錯誤記錄檔檔案的路徑
mysql> SHOW VARIABLES LIKE ‘log_error%‘;+---------------+---------------+| Variable_name | Value |+---------------+---------------+| log_error | .\HUEY-PC.err |+---------------+---------------+
修改錯誤記錄檔檔案的路徑
編輯 my.ini,修改 log-error 參數:
# Error Logging.log-error="HUEY-PC.err"
查看錯誤記錄檔檔案
錯誤檔案為普通的文字檔,可直接查看。
二進位日誌
二進位日誌記錄了所有的 DDL(資料定義語言 (Data Definition Language))語句和 DML(資料操縱語言)語句,但是不包括資料查詢語句。
查看 log_bin 狀態
mysql> SHOW VARIABLES LIKE ‘log_bin%‘;+---------------------------------+-------+| Variable_name | Value |+---------------------------------+-------+| log_bin | OFF || log_bin_basename | || log_bin_index | || log_bin_trust_function_creators | OFF || log_bin_use_v1_row_events | OFF |+---------------------------------+-------+
啟用二進位日誌功能
編輯 my.ini:
# Binary Logging.log-bin="HUEY-PC-bin"
儲存 my.ini 更改,重啟 MySQL 服務。
查看二進位日誌
使用 mysqlbinlog 工具來查看二進位日誌的內容:
D:\ProgramData\MySQL\MySQL Server 5.6\data>mysqlbinlog HUEY-PC-bin.000001
清除二進位日誌
清除所有日誌(不存在主從複製關係):
mysql> RESET MASTER;
清除指定日誌之前的所有日誌:
mysql> PURGE MASTER LOGS TO ‘HUEY-PC-bin.000005‘;
清除某一時間點前的所有日誌:
mysql> PURGE MASTER LOGS BEFORE ‘2015-01-01 00:00:00‘;
清除 n 天前的所有日誌:
mysql> PURGE MASTER LOGS BEFORE CURRENT_DATE - INTERVAL 10 DAY;
expire_logs_days 參數
在 my.ini 中配置 expire_logs_days 參數指定二進位日誌的有效天數,MySQL 會自動刪除到期的二進位日誌。expire_logs_days 設定在伺服器啟動或者 MySQL 切換二進位日誌時生效,因此,如果二進位日誌沒有增長和切換,伺服器不會清除老條目。
# 二進位日誌的有效天數expire_logs_days = 5
查詢日誌
預設情況下查詢日誌是關閉的。查詢日誌記錄了用戶端的所有操作,而二進位日誌不記錄只查詢資料的語句。在並發環境易產生大量日誌資訊而導致大量磁碟 I/O,影響 MySQL 的效能,通常情況下不建議啟用查詢日誌。
查看查詢日誌是否啟用及查詢日誌的路徑
mysql> SHOW VARIABLES LIKE ‘general_log%‘;+------------------+-------------+| Variable_name | Value |+------------------+-------------+| general_log | ON || general_log_file | HUEY-PC.log |+------------------+-------------+
啟用查詢日誌和設定查詢日誌的路徑
編輯 my.ini,修改 general-log 參數為 1,同時設定 log-output 參數(日誌輸出類型)和 general_log_file 參數(查詢日誌路徑):
# General logging.:log-output=FILEgeneral-log=1general_log_file="HUEY-PC.log"
儲存 my.ini 更改,重啟 MySQL 服務。
關閉查詢日誌
編輯 my.ini,設定 general-log 參數為 0:
# General logging.log-output=NONEgeneral-log=0general_log_file="HUEY-PC.log"
儲存 my.ini 更改,重啟 MySQL 服務。
慢查詢日誌
慢查詢日誌記錄了所有執行時間超過 long_query_time 秒的 SQL 陳述式。
查看慢查詢日誌是否啟用及慢查詢日誌的路徑
mysql> SHOW VARIABLES LIKE ‘slow_query_log%‘;+---------------------+------------------+| Variable_name | Value |+---------------------+------------------+| slow_query_log | OFF || slow_query_log_file | HUEY-PC-slow.log |+---------------------+------------------+
啟用慢查詢日誌和設定慢查詢日誌的路徑
編輯 my.ini,設定 slow-query-log 參數為 1,同時設定 log-output 參數(日誌輸出類型)、slow-query-log_file 參數(慢查詢日誌路徑)和 long_query_time 參數:
# Slow logging.log-output=FILEslow-query-log=1slow_query_log_file="HUEY-PC-slow.log"long_query_time=10
儲存 my.ini 更改,重啟 MySQL 服務。
關閉慢查詢日誌
編輯 my.ini,設定 slow-query-log 參數為 0:
# Slow logging.log-output=NONEslow-query-log=0slow_query_log_file="HUEY-PC-slow.log"long_query_time=10
MySQL 日誌管理