mariadb迁移到tidb中,解密后乱码

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【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后,不再报错,但是解析出来的是乱码,并不是原始的明文。请问这个如何处理。

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

TiDB 目前不支持 gbk 字符集,只支持 utf8 的字符集。如果是数据迁移,建议通过工具 transfer 字符集到 utf 8.

请问有具体的文档吗,我迁移,使用的是loader

这个可以手动将 mydumper 出来的 SQL 的 character 设置为 utf8,然后在 loader 导入。

我的mydumper版本是0.9.5,并没有character设置呢。也不能直接修改mariadb数据库中的字符集,否则会导致目前的系统就马上不能用了

使用 TiDB 的周边工具 mydumper 和 loader 来完成操作,

是否方便给个类似的周边工具操作文档,不太明白你说的周边工具范围,感谢

请见官方文档

你好,在第一篇文章中,找到提示,用iconv做转换。 我的操作如下: 使用版本为0.9.5的mydumper,导出一个mariadb下的一个表。 导出之后,生成一个目录,目录下有4个文件 image

我使用如下命令做转码

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无效。 请问下有没有其他解决方法呢

最好的办法就是将上游调整为 utf8,然后通过 DM 同步到下游 TiDB,目前工具处理字符集转化工具实践较少,发你的文档也是最佳实践了,建议参考一下。

好的,非常感谢

:+1: