萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

深入分析 MySQL 四大日志類型:錯誤、查詢、慢查詢與二進制日志

1. 錯誤日志

  • 用途:記錄啟動、運行、關閉過程中的錯誤與警告。
  • 默認開啟,路徑查看:SHOW GLOBAL VARIABLES LIKE 'log_error';
  • 典型內容:InnoDB 初始化、服務器就緒、插件狀態等。

2. 一般查詢日志

  • 用途:記錄所有客戶端連接與執行的 SQL 語句。
  • 默認關閉(高併發下性能殺手),開發環境可開啟。
  • 配置:general_log=1, general_log_file=/var/log/mysql/mysql.log
  • 格式:時間 線程ID 命令 參數

3. 慢查詢日志

  • 用途:定位性能瓶頸 SQL,強烈建議生產環境開啟。
  • 配置:
    slow_query_log=1
    slow_query_log_file=/var/log/mysql/mysql-slow.log
    long_query_time=10          -- 超過 10 秒記錄,可設置毫秒如 0.5
    log_queries_not_using_indexes  -- 記錄無索引查詢
  • 格式含:用戶、執行時間、鎖等待、掃描行數、返回行數、SQL 文本。

4. 二進制日志

  • 用途:記錄所有數據變更語句,支持主從復制、時間點恢複。
  • 配置:
    log_bin=/var/log/mysql/mysql-bin.log
    expire_logs_days=10
    max_binlog_size=100M
  • 查看文件列表:SHOW BINARY LOGS;
  • 查看具體事件:
    SHOW BINLOG EVENTS IN 'mysql-bin.000004' FROM 870 LIMIT 4\G
    可見 BEGIN、INSERT_ID、QUERY、COMMIT 完整事務事件。

二進制日志恢複數據

# 按位置範圍導出 SQL
mysqlbinlog --start-position=870 --stop-position=1274 mysql-bin.000004 > /tmp/restore.sql

# 按時間範圍導出 SQL
mysqlbinlog --start-datetime="2012-07-16 00:00:00" --stop-datetime="2012-07-17 00:00:00" mysql-bin.000004 > /tmp/restore.sql

導出的 SQL 可直接管道導入 MySQL 實現時間點恢複。

copyright © 萬盛學電腦網 all rights reserved