TIDB使用DM集群从MYSQL迁移数据到TIDB,出现中文乱码

由于MYSQL存量数据的中文是以Latin1为字符编码格式,TIDB中是以UTF8为字符编码格式,导致使用DM从MYSQL迁移到TIDB的数据中文乱码,DM的迁移任务可以指定以Latin1字符编码导出进行迁移吗?
原先使用dumpling是执行以下这条就可以导出为正常的中文:
/dumpling -h 127.0 . 0.1 -P 13306 -u root -p *#^ippbx^#* -t 16 -F 256MB -B core -o /home/tidb_cjx/tidb-community-toolkit-v7. 5.0 -linux-amd64/cjx --params "character_set_client=latin1,character_set_connection=latin1,character_set_results=Latin1,character_set_server=Latin1"

字符集问题是比较麻烦的。

实在不行etl吧

1 个赞

这个是啥

数据库抽取工具

1 个赞

有什么解决方案吗?DM全量导出的数据在哪里可以查看

要是增量没问题,那就做手工全量吧

可以看下https://docs.pingcap.com/zh/tidb/stable/task-configuration-file-full ,配置一下这几个变量,这里的配置是在解析binlog后,写入TiDB时用到的

这个貌似还不可以指定导出阶段的参数,虽然官方说可以指定导出参数,但是我记得6.X版本我测试过,加上–params并没有生效,你可以用下7.5试下看现在能不能生效。 不过也可以全量数据手动导出导入一下,增量用上面提到的target-database.session参数来指定

迁移任务不能指定吗?

搜了下源代码: extra-args支持设置的命令行参数只有这几个,确实不包含--params这个参数。
https://github.com/pingcap/tiflow/blob/release-7.5/dm/pkg/dumpling/utils.go#L235

1 个赞

那还有啥其他方法吗

DM中全量到处的数据是存在哪里呢,我看默认应该是在./dumped_data,迁移时没有看到有这个文件夹产生

这个相对路径,是指相对于worker节点的deploy-dir目录(是的没看错,是deploy-dir,不是在data-dir上)


是在这个deploy下吗?没呀看到有文件生成
image

再进到task所在的worker里,就能看到了

字符集的自动转换需要迁移工具支持才行,否则就会乱码,只能说DM还需要改进

你的是UTF8还是UTF8mb4? 如果是UTF8 改成UTF8mb4。是不是好些。

出现乱码,是不是你客户端设置问题

字符休得处理啊。