近期业务准备上线一个新功能,灌入数据之后突然发现主从同步停止,报错如下:

Error 'Duplicate entry '66310984-2014-04-18 00:00:00--122815.sh' for key 'PRIMARY'' on query. Default database: 'bill'. Query: 'INSERT INTOBOND3311(OBJECTID,BONDID,BONDNAME,DECLAREDATE,F001D,F002D,F003N,F004N,F005D,F006D,F007D,F008D,MEMO,RECTIME,MODTIME,ISVALID,F009N,SEQID,SECNAME,F010N,F014V,F011D,F013N,SECCODE)VALUES(0x373236313333373339,0x3636333130393834,0x32303131C4EAD0C2BDAEB9E3BBE3CAB5D2B5CDB6D7CA28BCAFCDC529D3D0CFDED4F0C8CEB9ABCBBEB9ABCBBED5AEC8AF,'2014-04-14 00:00:00',NULL,NULL,0x352E3833,0x35382E33,'2014-04-18 00:00:00',NULL,NULL,NULL,0xBBD8CADBB2BFB7D6B6D2B8B6,'2014-04-14 13:48:56','2014-04-14 13:48:56',0x31,0x3230,0x31373430333831393837,0x3131B9E3BBE3D5AE,0x352E3833,0xB6D2B8B6,'2014-04-21 00:00:00',0x3130352E3833,0x3132323831352E7368)'

从报错信息可以看到,很多ID(int类型)字段的values被转换成了ASCII码执行,这也就导致了同步的中断。第一反应是字符集问题,由于MySQL的字符集设置有多个参数,而在使用中文的时候,字符集的转换会受到cline,connection,server,table都多处字符集的影响,所以经常会有一些乱码的情况出现。

于是我们先去检查主库的数据是否正常写入,结果是正常的。然后根据如下结构:

cline ——> master ——> slave

既然主库数据写入正常,那么只能怀疑在master和slave做replication的时候发生了字符的转义,导致了上述情况发生。我们先后检查了如下参数设置,全部都一致。

  • 表字符集设置
  • server的字符集设置
  • 数据库版本
  • sql mode

如此诡异的问题,只好求助万能的搜索引擎了,最终找到如下这篇blog,解释的非常清晰。按照blog中的解释,这个问题发生的前提有2个:

  • 程序使用prepared statement
  • 字符集使用多字节字符集,比如GBK

根据博客中提供的解决方案,我们先将同步中止,修改binlog format,然后将主库的数据复制到从库中保证数据一致性,在开启同步,最终问题得以解决。

ps:如此诡异的问题,真是不遇到不知道,这才是赤裸裸的经验问题。

转载于:https://www.cnblogs.com/billyxp/p/4216194.html

一次由于字符集问题引发的MySQL主从同步不一致问题追查相关推荐

  1. mysql 主从同步不一致_涨知识!MySQL 主从同步原理原来是这样的

    什么是 MySQL 主从同步 当 master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库. 主从同步有什么好处 水平扩展数据库的负载能力 容错,高可用.Failover/Hig ...

  2. mysql 主从同步不一致_MySQL 主从同步延迟的原因及解决办法

    mysql 用主从同步的方法进行读写分离,减轻主服务器的压力的做法现在在业内做的非常普遍. 主从同步基本上能做到实时同步.我从别的网站借用了主从同步的原理图. 在配置好了, 主从同步以后, 主服务器会 ...

  3. mysql 主从同步不一致_为什么mysql会经常出现主从同步不一致的情况

    1. MySQL数据库主从同步延迟原理. 答:谈到MySQL数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作,主库对所有DDL和 DML产生binl ...

  4. MySQL 主从同步延迟的原因及解决办法

    首页 博客 专栏·视频 下载 论坛 问答 代码 直播 能力认证 高校 会员中心 收藏 动态 消息 创作中心 MySQL 主从同步延迟的原因及解决办法 hao_yunfeng 2018-09-04 23 ...

  5. mysql 主从同步-读写分离

    主从同步与读写分离测试 一.  实验环境(主从同步) Master                   centos 7.3              192.168.138.13 Slave     ...

  6. [MySQL]-主从同步实战-主从搭建

    [MySQL]-主从同步实战 森格 | 2022年12月14日 本文主要为在平时work中遇到的主从同步上的问题的处理,对其进行巩固总结. 一.场景介绍 ​ 在一个风和日丽的下午4点半,突然就收到一个 ...

  7. MySQL 主从同步percona-toolkit工具(数据一致性监测、延迟监控)使用梳理

    在mysql工作中接触最多的就是mysql replication,mysql在复制方面还是会有一些常规问题,比如主库宕机或者从库宕机有可能会导致复制中断,通常需要进行人为修复,或者很多时候需要把一个 ...

  8. mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理

    在mysql工作中接触最多的就是mysql replication,mysql在复制方面还是会有一些常规问题,比如主库宕机或者从库宕机有可能会导致复制中断,通常需要进行人为修复,或者很多时候需要把一个 ...

  9. 项目性能优化(MySQL读写分离、MySQL主从同步、Django实现MySQL读写分离)

    当项目中数据库表越来越多,数据量也逐渐增多时,需要做数据库的安全和性能的优化.对于数据库的优化,可以选择使用MySQL读写分离实现. 1.MySQL主从同步 1.主从同步机制 1.1.主从同步介绍和优 ...

最新文章

  1. 【Qt】Qt5在ubuntu16.04无法输入中文解决方式
  2. Unity 3D 一个简单的角色控制脚本
  3. java 获取系统当前时间
  4. C++匿名对象调用成员函数
  5. 如何为 .NET Core CLI 启用 TAB 自动补全功能
  6. Python之Hello World
  7. python tkinter进度条_在python tkinter中Canvas实现进度条显示的方法
  8. opencv 轮廓 缺陷检测
  9. 没有与这些操作数【】匹配的运算符_Maxima软件-7运算符(翻译)
  10. mysql sqlite 语法_浅谈sqlite与mysql的数据库语法差异_沃航科技
  11. python RTL自动生成_RTL建模
  12. 【labelme】制作标签数据的完整流程
  13. word教程之word2007和2010版本查找和替换快捷键介绍
  14. 有个程序员的老公是种什么体验,嫁给程序员,我超级后悔!
  15. tushare pro 版本获取股票历史数据
  16. 用python 打印等腰三角形
  17. 格灵深瞳将登陆科创板募资18亿,AI天才未来能否走出巨亏困局?
  18. 【OSPF-一类router、二类network】(根据lsdb画出拓扑)
  19. 博客的WordPress地址(URL)修改后博客打不开解决方法
  20. 100条养生、养心秘笈,值得一看

热门文章

  1. 11g CRS 磁盘选择external,normal,high
  2. fedora6下安装xmms和qq
  3. 庆祝深圳.net俱乐部成立
  4. 四. RxJava之基本原理
  5. opencv python BRIEF描述子
  6. 重磅消息:蚂蚁金服推出RPC框架
  7. SQL中的join操作总结(非常好)
  8. C#中Dispose和Close的区别
  9. 【VMware中搭建iOS开发环境的引导工具】
  10. solr 函数使用之map