今天有同学在搭建主从环境的时候发现一个问题,简单说明一下。感谢 @年代80s.
现象:
从库上Slave_IO_Running停止,Last_Error显示如下:
bin/mysqlbinlog: Character set ‘#45′ is not a compiled character set and is not specified in the ‘/u01/dingqi.lxb/transfer2/master/share/mysql/charsets/Index.xml’ file
分析:
此时用mysqlbinlog 执行对应的relaylog文件,也会出现上面这个错误提示。
查看这个提示位置的Index.xml,这里记录了这个server提供的所有字符集。我们发现,其实没有id为45的字符集。
也就是这个原因,导致slave在同步时,解析出错,导致同步停止。
SET @@session.character_set_client=45,@@session.collation_connection=45,@@session.collation_server=33
从这个命令中看,是有用户连接进master以后,执行了一个set names xxx (xxx是某个字符集名字),而这个xxx被翻译成45.
复现:
我们要找出编号45的字符集。在5.5上执行如下命令:
发现原来是这个叫做utf8mb4的字符集,这个字符集在5.1里面是还没有的。
解决:
给我们的提示就是在高版本对低版本的主从中,要注意不要用到低版本不支持的字符集(所以官方并不建议高版本的master同步到低版本的slave)。
对于已经在Master的里面已经存在的binlog,要让主从能够继续同步,只能在slave_skip_errors里加上 22这个错误号.
分享到:
相关推荐
Unicode and Character Set Reference (Windows)
NULL 博文链接:https://skywhsq1987.iteye.com/blog/1729773
The Unicode 2.0 Character Set.htm
代码如下:character_set_client、 character_set_connection、character_set_results 就始终都是和服务器端保持一致了,即便在mysql客户端加上选项 代码如下:–default-character-set=utf8 也不行,除非连接进去后...
谷歌设置编码插件SetCharacterEncoding,例如可以修改为UFT-8编码
打包工具必考webpack介绍、整理的一个流程(必考)webpack知识梳理webpack的优化做过什么(必考)webpack4.0的优化webpack性能优化
# Universal Character Set Detector (UCSD) 从Mozilla和siuying的代码中扒拉出来的文本编码自动检测模块,主要是基于字频判断,检测ANSI编码的CJK系还算比较准确,但是对于没有BOM的UTF16数据流效果很差 Code is ...
Unicode and Character Set Functions (Windows)
附件提供解决办法。response.setCharacterEncoding("gb2312");编译没有错误,但运行时报错:NoSuchMethodError setCharacterEncoding(Ljava/lang/String;)V
Set Character Encoding 谷歌浏览器编码插件,可以手动更改浏览器编码,如UTF-8,GBK等等,推荐开发人员使用
-- 报错 不支持 oracle-character-set-852 pstmt.setArray(1, array); pstmt.executeUpdate(); 将10g版本配套的3个文件集中到一起, orai18n.jar classes12.jar nls_charset12.jar 防止下载的文件版本不一样,仍...
本方法适用于Oracle9i, 10g以及XE. 在10.2.0.1.0下测试无错. 需要注意的是, 使用此方法会破坏数据库中的原有双字节字符. 一种办法是先将数据库导出, 修改完字符集后再导入; 另一种办法就是不管他, 就那样使用....
40100 DEFAULT CHARACTER SET utf8 */; CREATE TABLE `tb1` ( `Id` int(11) unsigned NOT NULL AUTO_INCREMENT, `co1` varchar(255) DEFAULT NULL, `co2` varchar(255) DEFAULT NULL, PRIMARY KEY (`Id`) ) ...
set character encoding,是谷歌浏览器的一款插件,用于设置字符编码
mysql链接建立之后,通过如下方式设置编码: 复制代码 代码如下: mysql_query(“SET character_set_connection=” . $GLOBALS[‘charset’] . “,character_set_results=” . $GLOBALS[‘charset’] . “,character_...
JAVA过滤器filter request.setCharacterEncoding仅对POST提交起作用,对GET提交还是会出现乱码问题
新版本google浏览器去掉了设置编码功能,需要安装插件才支持修改编码格式,可将此插件下载后加入到扩展程序中,右键即可看到 Set Character Encoding选项,选择“UTF-8”,即可解决查看源码中文乱码的问题
#include < character.h > #include #include #include < sensor.h>#include < character.h > #include #include #include #include #include #include #include < key.h >
新版的谷歌,无法修改网页编码,该插件可切换编码,搞开发的经常需要将网页的gbk编码,转换为utf-8编码查看