ERROR: Error in Log_event::read_log_event(): 'read error', data_len: 438, event_type: 2
嘗試解析從庫 mysql-bin.004271 失敗,同步報錯 1062 (Duplicate entry) 背景下排查。
/opt/mysql/.../bin/mysqlbinlog → 同樣報錯mysqlbinlog -f → 同樣報錯cp → 仍報錯Character set '#45' is not a compiled character set → 客戶端與服務器字符集不匹配mysql-bin.000152) 解析正常,說明主庫寫入無誤mysql-relay-bin.000455) 解析正常,包含相同 INSERT 語句| 假設 | 驗證/應對 |
|---|---|
| Binlog 文件損壞(磁盤故障/截斷) | ls -l 檢查大小;mysqlbinlog --verify-checksum 校驗 |
| 事件頭部校驗和錯誤 | 5.6+ 默認啟用 binlog_checksum=CRC32,舊版本工具不支持 |
| 字符集 #45 (utf8mb4) 客戶端不識別 | 升級 mysqlbinlog 版本或指定 --set-charset=utf8mb4 |
因開發催促,最終採用 SET GLOBAL sql_slave_skip_counter=1 跳過錯誤事件,從庫追趕同步。事後建議:
mysqlbinlog --verify-checksum 巡檢 Binlog 完整性