首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 二進制日誌與中繼日誌讀取方法速查

     編輯:MySQL 資料庫相關知識

核心工具對比

日誌類型讀取方法適用場景命令示例
Binlog (二進制日誌) 1. mysqlbinlog 命令行工具
2. SQL: SHOW BINLOG EVENTS
主庫:時間點恢復(PITR)、審計、數據變更捕獲(CDC) mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.000001
SHOW BINLOG EVENTS IN 'mysql-bin.000001' FROM 154 LIMIT 10;
Relay Log (中繼日誌) 1. mysqlbinlog(5.4.4+ 亦可用 SHOW RELAYLOG EVENTS) 從庫:排查複製延遲、解析具體執行事件、損壞修復 mysqlbinlog relay-bin.000002
SHOW RELAYLOG EVENTS IN 'relay-bin.000002' LIMIT 5;

mysqlbinlog 進階用法精選

# 1. 指定時間範圍導出(PITR 核心)
mysqlbinlog --start-datetime="2023-01-01 10:00:00" \
            --stop-datetime="2023-01-01 11:00:00" \
            mysql-bin.000001 > /tmp/recover.sql

# 2. 指定位點範圍
mysqlbinlog --start-position=154 --stop-position=10240 mysql-bin.000001

# 3. 解析 ROW 格式為可讀 SQL(需 --base64-output=DECODE-ROWS -v)
mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.000001 | grep -A 20 "table_name"

# 4. 遠程讀取主庫 binlog(需 REPLICATION SLAVE 權限)
mysqlbinlog --read-from-remote-server --host=10.0.0.1 --user=repl --password \
            --raw --stop-never mysql-bin.000001
# --raw --stop-never 可作為備份流式下載工具

# 5. 導出並直接管道導入另一實例(異構同步)
mysqlbinlog mysql-bin.000001 | mysql -h 10.0.0.2 -u root -p

SHOW BINLOG EVENTS / RELAYLOG EVENTS 語法

SHOW BINLOG EVENTS
    [IN 'log_name']
    [FROM pos]
    [LIMIT [offset,] row_count]

SHOW RELAYLOG EVENTS
    [IN 'log_name']
    [FROM pos]
    [LIMIT [offset,] row_count]

適用於快速定位特定位點/事件類型,不需導出完整文件。

權限要求

  • mysqlbinlog 讀取本地文件:需文件系統讀權限(通常 root/mysql 用戶)
  • mysqlbinlog --read-from-remote-server:需 REPLICATION SLAVE 權限
  • SHOW BINLOG EVENTS:需 REPLICATION CLIENT 權限
  • SHOW RELAYLOG EVENTS:需 REPLICATION SLAVE 或 REPLICATION CLIENT 權限

運維建議

  1. binlog 格式統一 ROW:binlog-format=ROW,配合 mysqlbinlog -v --base64-output=DECODE-ROWS 可完整還原業務 SQL,便於審計與 PITR。
  2. 定期清理策略:expire_logs_days=7(或配合備份週期),防止磁盤寫滿。
  3. GTID 模式下:5.6+ 推薦啟用 gtid_mode=ON,複製定位不再依賴文件名+位點,mysqlbinlog --include-gtids 支援按 GTID 集合導出。
  4. 加密傳輸:遠程讀取 binlog 強制使用 SSL(--ssl-mode=REQUIRED),防止數據明文洩露。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved