为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
- 【TiDB 版本】:tidb 4.0.8 dm:2.0 nightly
- 【问题描述】:使用dm工具同步mysql数据到tidb,发现json 类型得字段值,在tidb和mysql中有一些区别:
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
请问目前 上游 MySQL 的版本是什么
先排除下上下游元数据是否一致
先看下 json 的元数据在上下游数据库是否一致。看起来 TiDB 中的 json 元素提取时都是以 string 类型进行的 数据提取。
并且排查下Binlog event 的解析失真问题
建议跟踪下 对应记录的 binlog event 具体的数据内容。
mysql版本是5.7.27得, 下面是具体得binlog
@48=’\x00\x08\x00Ô\x00<\x00\x06\x00B\x00\x09\x00K\x00\x0a\x00U\x00\x0c\x00a\x00\x0c\x00m\x00\x13\x00<80>\x00\x14\x00<94>\x00\x14\x00\x0c¨\x00\x0c®\x00\x0b³\x00\x0c»\x00\x0cÄ\x00\x0cÊ\x00\x0cÏ\x00\x0cÒ\x00itemNostoreAreamaxSignQtydeliveryDatetaxFreePricesettlementW houseproductOutputTaxCodeproductOutputTaxRate\x0500010\x04B998<8f>Âõ(\x5c<8f>0@\x0820210129\x0567.00\x04W0G2\x02X0\x010’ /* JSON meta=4 nullable=0 is_null=0 *
看了一下响应程序代码得json类型定义,有问题得key是定义了bigdecimal,如果定义为string就没问题
使用 mysqlbinlog -vv --decode-rows 解析看下对应的 SQL
然后 手动在下游 TiDB 插入数据确认对应的字段是否会发生隐式转换
mysql表中有字段为json类型,要求mysql 和tidb中得数据要一模一样