Mysql
如何在 MySQL 5.5 上完全禁用 utf8mb4?
我知道你不應該這樣做,但我有一個 MySQL 5.5 主伺服器和一個 MySQL 5.1 複製從伺服器。這應該沒問題,除非我做一些愚蠢的事情,比如使用 5.1 不支持的 utf8mb4。好吧,一段時間以來一切都很順利,今天我遇到了複製從屬失敗,因為 MySQL 5.1 不支持 character_set_client #45。
我花了很多時間試圖找出 #45 是什麼……你看,它沒有出現在任何 MySQL 的配置文件中——即使在 5.5 上也是如此。我最終確定它是 utf8mb4(我曾懷疑過),但我不確定為什麼要使用它。我在主伺服器上執行了一個靜態查詢……一些簡單的事情
UPDATE table SET field='value'
,它通過將字元集設置為 utf8mb4 複製到從伺服器。我同時執行了數百條類似的UPDATE
語句,但其中一些觸發了utf8mb4的使用。所以…我要將我的奴隸升級到 5.5,但同時有沒有辦法告訴 MySQL永遠不要使用 utf8mb4?
政治正確答案
您不能從新主伺服器到舊從伺服器進行 MySQL 複製
我寫了很多關於這個的文章:
Nov 26, 2012
:將 MySQL 5.0 Master 複製到 5.5 Slave?Feb 08, 2012
:從 5.5.20 到 5.0.XX 伺服器的複制會起作用嗎?Dec 22, 2011
: mysqlbinlog 輸出中的base64 BINLOG 語句是什麼意思?Feb 04, 2011
: MySQL master binlog 損壞此外,還有可能處理內部 BINLOG 幻數在錯誤的位置和複製變得老舊。這是我關於 BINLOG 幻數的文章:
Oct 28, 2012
: Binlog 的幻數不好Dec 26, 2011
:即使 binlog_format=STATEMENT,mysql 也會發出 BINLOG 行由於在此期間您無能為力,請將您的 Slave 升級到 MySQL 5.5
另一種觀點
平心而論,@ChristopherSchultz是正確的,因為您可以實現它。我只是大喊大叫“RISK !!!” 由於 BINLOG 幻數在 MySQL 複製宇宙中的位置,所以要更加謹慎。