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

MySQL 日誌維護策略實戰總結:錯誤、查詢、二進制、慢查詢、事務日誌完整管理

     編輯:MySQL 綜合教學

五大日誌類型與用途

日誌類型記錄內容主要用途
錯誤日誌啟動/運行/停止問題故障診斷
查詢日誌客戶端連線與執行語句開發除錯、審計
二進制日誌所有更改資料的語句主從復制、時間點恢復
慢查詢日誌執行超過 long_query_time 的查詢效能調優、找出慢 SQL
事務日誌InnoDB 等事務引擎產生ACID 保證、崩潰恢復

1. 慢查詢日誌:按需啟用

  • 設定 slow_query_log=ON,閾值 long_query_time(預設 10 秒)
  • 日誌檔:slow_query_log_file,預設 主機名-slow.log
  • 調優時啟用,生產環境建議關閉

2. 通用查詢日誌:生產環境關閉

記錄所有操作,日誌量極大。MySQL 預設關閉。僅在開發/測試短期開啟定位問題。

SET GLOBAL general_log = 1;  -- 1 開啟, 0 關閉
SHOW GLOBAL VARIABLES LIKE '%general_log%';

3. 二進制日誌:定期備份(本地 + 遠端 + 儲存主機)

  • my.cnf 設 log-bin = filename 啟用,產生 filename.000001 遞增
  • 啟用時配合 mysqldump 全量備份為基準點
  • 崩潰恢復流程:全量備份 + 重放 Binlog 至故障點
  • mysqlbinlog filename 查看日誌內容

4. sync_binlog:資料安全與效能平衡

設定值行為效能風險
0 (預設)交由檔案系統決定何時刷盤最好Crash 丟失 binlog_cache 所有內容
1每次事務提交強制 fsync 刷盤最差(寫入效能差距可達 5 倍)最安全,僅可能丟失未完成事務
N每 N 次提交刷盤一次折中折中

高並發系統建議視業務容忍度在 1 與 N 之間取捨。

5. 事務型操作多時:調大 Binlog 快取

  • binlog_cache_size:單事務記憶體快取,不足時落地臨時檔 → 增加可減少 IO
  • max_binlog_cache_size:單事務最大快取,不足報錯 Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage

6. max_binlog_size:單檔大小上限

建議 512MB~1GB(不可超 1GB)。遇大事務接近尾部時為保完整性不切換,實際可能略超過設定值。

實測環境參數

mysql> SHOW VARIABLES LIKE '%binlog%';
+--------------------------------+------------+
| Variable_name                  | Value      |
+--------------------------------+------------+
| binlog_cache_size              | 1048576    |
| innodb_locks_unsafe_for_binlog | OFF        |
| max_binlog_cache_size          | 4294967295 |
| max_binlog_size                | 1073741824 |
| sync_binlog                    | 0          |
+--------------------------------+------------+
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved