Mysql

MySQL Master 5.5 - Slave 5.6 - 未知系統變數“binlog_checksum”,錯誤程式碼:1193

  • August 11, 2017

我在從屬伺服器上看到以下警告:

2016-11-18 22:48:03 12808 [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0
2016-11-18 22:48:03 12808 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.018098' at position 920330293, relay log '/mnt/data/mysql/mysqld-relay-bin.318142' position: 473446279
2016-11-18 22:48:03 12808 [Note] Slave I/O thread: connected to master 'repl@xxx:3306',replication started in log 'mysql-bin.018103' at position 271452699
2016-11-18 22:48:03 12808 [Warning] Slave I/O: Notifying master by SET @master_binlog_checksum= @@global.binlog_checksum failed with error: Unknown system variable 'binlog_checksum', Error_code: 1193
2016-11-18 22:48:03 12808 [Warning] Slave I/O: Unknown system variable 'SERVER_UUID' on master. A probable cause is that the variable is not supported on the master (version: 5.5.42-log), even though it is on the slave (version: 5.6.31-log), Error_code: 1193
  1. 據我了解,當 master 與 5.6 slave 不兼容時會發生這種情況,是否正確?
  2. 我應該忽略這些警告嗎?如果不是,如何在不損壞任何 MYSQL MASTER 的情況下解決此問題?

大師版:

Variable_name            Value                         
-----------------------  ------------------------------
innodb_version           5.5.42                        
protocol_version         10                            
slave_type_conversions                                 
version                  5.5.42-log                    
version_comment          MySQL Community Server (GPL)  
version_compile_machine  x86_64                        
version_compile_os       Linux         

奴隸版:

Variable_name            Value                         
-----------------------  ------------------------------
innodb_version           5.6.31                        
protocol_version         10                            
slave_type_conversions                                 
version                  5.6.31-log                    
version_comment          MySQL Community Server (GPL)  
version_compile_machine  x86_64                        
version_compile_os       Linux      

謝謝 !

如果您SHOW SLAVE STATUS\G在 Slave 上執行,並且看到Slave_IO_Running: Yes,那麼 IO 執行緒就可以了。

儘管如此,請注意警告

2016-11-18 22:48:03 12808

$$ Warning $$Slave SQL:如果發生崩潰,此配置不保證中繼日誌資訊一致,Error_code:0

錯誤程式碼 0 表示這不是錯誤,只是提供資訊。

2016-11-18 22:48:03 12808

$$ Warning $$從站 I/O:通過 SET @master_binlog_checksum= @@global.binlog_checksum 通知主站失敗並出現錯誤:未知系統變數“binlog_checksum”,錯誤程式碼:1193

您提到錯誤涉及變數binlog_checksum

根據binlog_checksum 的 MySQL 文件

啟用此選項會導致主伺服器為寫入二進制日誌的事件寫入校驗和。設置為 NONE 以禁用,或用於生成校驗和的算法的名稱;目前,僅支持 CRC32 校驗和。從 MySQL 5.6.6 開始,CRC32 是預設值。

此選項是在 MySQL 5.6.2 中添加的。

由於您的 Master 是 5.5.42,因此無法binlog_checksum將 Master 與 Slave 進行比較。警告有效。

也許在從站上將 binlog_checksum 設置為“NONE”可能會禁用此檢查。

2016-11-18 22:48:03 12808

$$ Warning $$從站 I/O:主站上的未知系統變數“SERVER_UUID”。一個可能的原因是主伺服器(版本:5.5.42-log)不支持該變數,即使它在從伺服器(版本:5.6.31-log)上,Error_code:1193

這是同樣的問題。正如消息本身所說,選項server_uuid在 MySQL 5.5.42(主)中不存在。

結語

只要複製正在執行,您現在就可以了。強烈建議盡快讓你的 Master 升級到 MySQL 5.6.31。為什麼 ?

MySQL 5.6 向DATETIME. 如果 Master (5.5.42) 向 Slave (5.6.31) 發送 DATETIME,IO Thread 將立即中斷。請從2015-01-02我提到這一點的地方閱讀我的文章。

您可以通過在Master (5.5)Slave (5.6)DATETIME上切換到STATEMENT複製(設置binlog_formatSTATEMENT)來解決這個問題。

引用自:https://dba.stackexchange.com/questions/155747