通过mydumper导出mysql数据库,用loader导入tidb报错--invalid table schema file/invalid db table sql file name

【 系统版本 & kernel 版本 】CentOS Linux release 7.6.1810 (Core) 3.10.0-957.el7.x86_64 【 TiDB 版本 】 v3.0.0 【 磁盘型号 】普通磁盘 【 集群节点分布 】2tidb 3pd 3tikv,5台机器,2台部署tidb,其余3台部署pd tikv 【 数据量 & region 数量 & 副本数 】 【 问题描述(我做了什么) 】使用mudumper工具从mysql5.7.27导出一库,名称:fgemsv4.0_idc,导出过程正常,然后用loader导入时报错。 【 关键词 】mydumper mysql loader tidb

报错信息如下:

2019/10/12 09:32:18 loader.go:449: [warning] invalid table schema file - fgemsv4.0_idc.deviceexceptionmetas-schema.sql 2019/10/12 09:32:18 loader.go:449: [warning] invalid table schema file - fgemsv4.0_idc.tmuoms-schema.sql 2019/10/12 09:32:18 loader.go:449: [warning] invalid table schema file - fgemsv4.0_idc.devicedatanew-schema.sql …

2019/10/12 09:32:18 loader.go:493: [warning] invalid db table sql file name - fgemsv4.0_idc.devicedatahistories.000000069.sql 2019/10/12 09:32:18 loader.go:493: [warning] invalid db table sql file name - fgemsv4.0_idc.devicedatahistories.000000067.sql 2019/10/12 09:32:18 loader.go:493: [warning] invalid db table sql file name - fgemsv4.0_idc.devicedatahistories.000000096.sql …

2019/10/12 09:32:18 loader.go:336: [error] [loader] scan dir[./db_bak_old/fgemsv4.0_idc] failed, err[invalid data sql file name - fgemsv4.0_idc.igbsbwconsumeyear.sql, cannot find CREATE DATABASE file fgemsv4-schema-create.sql]

—数据库名称是fgemsv4.0_idc,但是导入时找的数据库名称却是fgemsv4

2019/10/12 09:32:18 main.go:84: [fatal] /home/jenkins/workspace/build_tidb_enterprise_tools_master/go/src/github.com/pingcap/tidb-enterprise-tools/loader/loader.go:504: invalid data sql file name - fgemsv4.0_idc.igbsbwconsumeyear.sql, cannot find CREATE DATABASE file fgemsv4-schema-create.sql /home/jenkins/workspace/build_tidb_enterprise_tools_master/go/src/github.com/pingcap/tidb-enterprise-tools/loader/loader.go:337:

这种情况怎么解决?谢谢

之前的库 fgemsv4.0_idc 是有特殊字符 “.” 如果能改库名应该是最快的方法了。

这个库是从生产上导出来的,数据量比较大,如果改库名的话,里面涉及的sql语句都要更改,操作量太大了。有没有其他的办法,比如更改下导入的约束条件,不用更改库名就可直接导入的。

这是一个问题,我们内部复现,看看怎么修复。

@john402 您好,经查这是 loader 的 bug ,我们将尽快fix 要绕过这个问题,目前的方向还是想办法改库名?请问现在更改dump sql文件里面的库名遇到了什么问题? 是否方便发一下脱敏后的 create table 和 insert 语句的例子,以及dump sql文件的规模

你好,没有尝试更改库名的操作,而是使用mysqldump导出和source重新导入数据规避了库名不能含特殊字符的限制。