Slave 錯誤日誌刷屏:
[ERROR] Slave: Error 'Character set '#28' is not a compiled character set and is not specified in the '/usr/local/mysql/share/mysql/charsets/Index.xml' file'
Master 寫入正常,Windows 客戶端插入數據即報錯。mysqlbinlog 顯示:
SET @@session.character_set_client=28, -- 28 = GBK
@@session.collation_connection=33,
@@collation_server=8;
而 Linux 直連插入則為 character_set_client=8 (latin1)。
SHOW CHARACTER SET; 確認 Slave 實例確實缺少 GBKcd /usr/local
mv mysql mysql-old
tar zxvf mysql-5.0.37-linux-i686-glibc23.tar.gz
mv mysql-5.0.37-linux-i686-glibc23 mysql
# 保留原 data 目錄或重新初始化
/etc/init.d/mysql start
啟動後 SHOW CHARACTER SET; 已包含 GBK,同步恢復正常。
-DDEFAULT_CHARSET=latin1 -DWITH_EXTRA_CHARSETS=all 控制內置字符集WITH_EXTRA_CHARSETS=all,僅包含 latin1、utf8 等極少集合Index.xml 為字符集元數據索引,運行時動態加載依賴編譯產物8=latin1、28=gbk、33=gbk_chinese_ci 等cmake . -DWITH_EXTRA_CHARSETS=all 或 ./configure --with-extra-charsets=allcharacter_set_server=utf8mb4、連接層 SET NAMES utf8mb4Slave_IO_Running / Slave_SQL_Running 及 Seconds_Behind_Masterlatin1 改為 utf8mb4utf8mb4_0900_ai_ci(Unicode 9.0,無口音、大小寫不敏感)utf8 別名,統一用 utf8mb4WITH_EXTRA_CHARSETS 編譯選項,所有字符集內置