为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
- 【TiDB 版本】:5.7.25-TiDB-v3.0.8
- 【问题描述】:mariadb 版本 10.2.16-MariaDB
把数据从mariadb迁移到tidb中。
原来mariadb中的数据,使用的AES_ENCRYPT函数加密,并且把编码转换成了gbk,在mariadb中,使用命令
CONVERT (AES_DECRYPT(col,‘key’) USING gbk)把明文解析出来,但是tidb中上面命令会报错,找不到字符集gbk,我把命令中的gbk换成utf8后,不再报错,但是解析出来的是乱码,并不是原始的明文。请问这个如何处理。
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
Lucien
( Lucien)
2
TiDB 目前不支持 gbk 字符集,只支持 utf8 的字符集。如果是数据迁移,建议通过工具 transfer 字符集到 utf 8.
Lucien
( Lucien)
4
这个可以手动将 mydumper 出来的 SQL 的 character 设置为 utf8,然后在 loader 导入。
我的mydumper版本是0.9.5,并没有character设置呢。也不能直接修改mariadb数据库中的字符集,否则会导致目前的系统就马上不能用了
Lucien
( Lucien)
6
使用 TiDB 的周边工具 mydumper 和 loader 来完成操作,
是否方便给个类似的周边工具操作文档,不太明白你说的周边工具范围,感谢
Lucien
( Lucien)
8
你好,在第一篇文章中,找到提示,用iconv做转换。
我的操作如下:
使用版本为0.9.5的mydumper,导出一个mariadb下的一个表。
导出之后,生成一个目录,目录下有4个文件
我使用如下命令做转码
iconv -f gbk -t utf-8 /db/bak/sd/sd.MobileOwner1805_u.sql -o /db/bak/sd/sd.MobileOwner1805_u.sql_utf8
报错如下
在网络上搜索了一下,并不能解决。
我的数据在mariadb中,是先做了gbk转码,然后再进行加密存储的,所以解析的时候,需要先做解密,再进行编码转码。 所以使用iconv无效。 请问下有没有其他解决方法呢
Lucien
( Lucien)
10
最好的办法就是将上游调整为 utf8,然后通过 DM 同步到下游 TiDB,目前工具处理字符集转化工具实践较少,发你的文档也是最佳实践了,建议参考一下。
system
(system)
关闭
13
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。