心血來朝,想復習一下MySQL主從搭建,雖開打VM,分別開啟了我以前安裝的兩台虛擬機,一台CentOS6 一台Ubuntu,這兩台都安裝好了MySQL數據庫,安裝啥的不說了,配置也沒問題。但是但我把主上的數據庫dump出來,復制來從上,然後做同步的時候報錯了:
Slave_IO_Running: No
Slave_SQL_Running: Yes
Last_IO_Error: 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; the first event 'binlog.000005' at 805, the last event read from '/data/dbdata/mysqllog/binlog/binlog.000005' at 805, the last byte read from '/data/dbdata/mysqllog/binlog/binlog.000005' at 120.'
百思不得奇解,還叫過DBA把我從做了一遍,還是報這個錯,雖放 Google 一搜索,好家伙。
這是由於 master 用的 mysql5.6 , binlog_checksum 默認設置的是 crc32。 如果slave用的 5.5 或者更早的版本,請將master的 binglog_checksum設置為 none。
才記起來我 CentOS6 安裝的是 mysql 5.6 版本, Ubuntu系統上安裝的是 5.5版本
root@mysql 19:22>select @@version;
+------------+
| @@version |
+------------+
| 5.6.16-log |
+------------+
1 row in set (0.00 sec)
root@(none) 19:36>select @@version;
+------------+
| @@version |
+------------+
| 5.5.27-log |
+------------+
1 row in set (0.00 sec)
解決步驟:
關閉 master checksum:
set global binlog_checksum='NONE';
show variables like '%checksum%';
添加 my.cnf 配置文件中添加如下設置,下次重啟就可以不用做步驟1,直接生效了。
binlog_checksum=NONE
重新查詢master狀態:
show master status\G;
搞定。
然後我叫DAB也要把這問題好好記一下,沒准下次就會遇到了。