【MySQL】Slave can not handle replication events with the checksum ...

神諭丶發表於2016-05-18
【問題描述】:
該問題可能出現在為高版本master做低版本slave時。

在為master建立slave時,檢視從庫狀態,顯示Slave I/O: No,並在errer-log中出現如下錯誤,
[ERROR] Slave I/O: Got fatal error 1236 from master when reading data from binary log: 'Slave can not handle replication events with the checksum that master is configured to log;

然後發現,master為mysql-5.6.30,而slave為mysql-5.5.49。

在5.6.2中,新增了一個引數binlog_checksum,而且在5.6.6及以後的版本中,該引數的值由NONE改為了CRC32,
master為5.6.30的情況下,自然有該選項引數,並且其值為CRC32,
但slave為5.5.49,此時的該選項引數是不存在的。


在5.6以後的版本,為了驗證binlog events的正確,指定通過CRC32演算法來避免出現events corrupt,所以這個選項引數出現了。

【解決方案】:
 直接在master上執行,即可:
  1. mysql> SET GLOBAL binlog_checksum=none;
當然也要加到配置檔案的[mysqld]中,避免重啟失效:

  1. [mysqld]
  2. binlog-checksum = none

值的注意的一點是,在該引數值還未修改之前的binlog,似乎也是無法被io thread所接收的,故之前的binlog可能需要手動執行來補資料了。
在修改之後的binlog中的events,則可以被正確的傳輸到slave上。
當然出現 【(高版本)Master ----- Slave(低版本)】也是需要儘量避免的。


參考文件:
MySQL 5.6 Reference Manual - Chapter 17 Replication - 17.1.4.4 Binary Log Options and Variables



作者微信公眾號(持續更新)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29773961/viewspace-2102073/,如需轉載,請註明出處,否則將追究法律責任。

相關文章