由于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
上)
再进到task所在的worker里,就能看到了
字符集的自动转换需要迁移工具支持才行,否则就会乱码,只能说DM还需要改进
你的是UTF8还是UTF8mb4? 如果是UTF8 改成UTF8mb4。是不是好些。
出现乱码,是不是你客户端设置问题
字符休得处理啊。