作用:
log-bin[=name],默認文件名為 主機名-bin.序列號,存放於數據目錄。.index 文件:記錄歷史 binlog 文件列表,用於輪換管理。| 參數 | 說明 | 默認值 (5.5/5.6+) |
|---|---|---|
max_binlog_size | 單個 binlog 文件最大值,超過則輪換 | 1G (1073741824) |
binlog_cache_size | 事務期間緩存 binlog 的會話級內存大小 | 32KB |
sync_binlog | 每 N 次寫入緩存同步刷盤。1 為最安全 (同步寫入),需配合 innodb_support_xa=1 保證 XA 事務一致性 | 0 (異步) |
binlog-do-db / binlog-ignore-db | 指定/忽略記錄的庫 | 空 (所有庫) |
log-slave-update | 從庫是否將復制事件寫入自己的 binlog (鏈式復制必開) | OFF |
binlog_format | STATEMENT (SQL 邏輯) / ROW (行變更) / MIXED (混合)。ROW 格式可配合 READ COMMITTED 獲得更高並發 | MIXED (5.7+) / STATEMENT (舊版) |
UUID(), USER(), CURRENT_USER(), FOUND_ROWS(), ROW_COUNT()。INSERT DELAYED。文件:默認 ib_logfile0, ib_logfile1 (循環寫入)。
目的:實例/介質故障後的崩潰恢復,保證事務持久性 (WAL 機制)。
innodb_log_file_size:單個重做日志文件大小。innodb_log_files_in_group:日志文件組數量 (默認 2)。innodb_log_group_home_dir:日志文件目錄。| 維度 | 二進制日志 | 重做日志 |
|---|---|---|
| 記錄範圍 | 所有存儲引擎的邏輯操作 | 僅 InnoDB 事務的物理頁修改 |
| 記錄內容 | 邏輯 SQL (STATEMENT) 或行變更 (ROW) | 頁級物理修改 |
| 寫入時機 | 事務提交 前 (組提交時刻) | 事務執行 過程中 持續寫入 |
| 用途 | PITR、主從復制 | 崩潰恢復、事務持久化 |
參數 innodb_flush_log_at_trx_commit:
0:提交時不寫日志文件,依賴後台線程每秒刷盤 (性能最好,可能丟 1 秒數據)。1:提交時 同步 寫入並 fsync 到磁盤 (最安全,ACID 完全保證)。2:提交時寫入 OS 緩存 (write),不保證 fsync (折中,掛電可能丟數據)。注意:重做日志有容量上限,檢查點不能超過最老未刷盤的 LSN。