饭光小团
2023 年9 月 4 日 02:58
1
【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】
TIDB版本从5.3.1 升级到6.5.3版本之后,发现数据库里面一些JSON列会变成base64:type253 开头的内容。
也参阅过其他的帖子DM 同步json类型字段出现base64加密(syncer) - #2,来自 Billmay表妹 。说是因为有特殊字符,但是我们自己解开base64 的内容,其实里面没有特殊字符的,类型都很简单。
诉求:
这个特性是否可以关闭?
饭光小团
2023 年9 月 4 日 03:15
3
我在文档里面没有找到这个enable-table-column-encoding 参数哎~
dba-kit
(张天师)
2023 年9 月 4 日 06:17
4
不应该啊,DM应该不会自己转换json类型的,能给出个行的示例么?
饭光小团
2023 年9 月 4 日 06:18
5
比如这个 ,图里面的就是被base64之后的数据。正常应该是一个
这样子的json串
饭光小团
2023 年9 月 4 日 07:44
6
这个应该是dm的问题把~ 不是TIDB集群配置的问题
这是dm写的数据?写的低版本没有问题,写到升级后的高版本就有问题?
你查一下你所有组件的版本看看
会不会存在有些组件版本并没有完整升级到6.5.3
有猫万事足
2023 年9 月 4 日 08:34
12
不一定是dm的问题。
MySQL 5.7:
mysql> select CAST(CAST('1234abcd' AS BINARY) AS JSON);
+------------------------------------------+
| CAST(CAST('1234abcd' AS BINARY) AS JSON) |
+------------------------------------------+
| "base64:type253:MTIzNGFiY2Q=" |
+------------------------------------------+
1 row in set (0.01 sec)
mysql上,这样类型转一下就变成base64:type253:开头的字符串了。查查看列的类型是否有这种类型转换?
redgame
(Ti D Ber Pa Amoi Ul)
2023 年9 月 4 日 23:57
15
这是为了提高查询性能,不会影响数据的正确性,我没查到哪里能关
aytrack
(Aytrack)
2023 年9 月 11 日 02:30
17
请问你这个数据是直接写入的还是 DM 同步的呢? 升级后有没有做 DM 同步操作
aytrack
(Aytrack)
2023 年9 月 11 日 03:06
18
TiDB 会将 binary string 的 JSON 存储为 Opaque
Json, 其格式为 ase64:typeXX
,详见这个 PR 。你可以根据这个 issue 看看你们是不是也有类似的 JSON 写入方法。 具体 JSON 的类型你可以通过 JSON_TYPE
来查询。
关于 JSON type 可以参考 https://dev.mysql.com/doc/refman/8.0/en/json.html#json-comparison
2 个赞
lazzyfu
(Lazzyfu)
2023 年9 月 22 日 09:17
19
请问这个问题怎么解决的?
我们现在升级到TiDB7.1.0后,通过DM同步的JSON类型数据全部变为了base64:type253:eyJmcGRt… 这种格式。
影响到了业务