tidb的数据导入工具tidb-lighting可以不可以把同一个集群的一个schema的表导入同一个集群的另外一个schema?

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】 v7.5.3
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
tidb的数据导入工具tidb-lighting可以不可以把同一个集群的一个schema的表导入同一个集群的另外一个schema?
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

参考这个,需要结合起来用,先用 dumping 导出,在通过 lightning 导入

你意思是两个schema不一样吗,这样不行

schema得相同才能导入

把所有文件名从a.改成b.就能把a库中导出的表导入b库中

1 个赞

把dumpling出来的文件名字从schema改成另一个schema就可以了

比如把db1下的表导出,导入到db2下,可以进行如下操作:
1、使用dumpling把db1下的表导出来;
2、创建db2,如果有则忽略;在db2下创建表;
3、把导出的文件rename,比如导出的文件是 db1.table1.001.csv 、db1.table2.001.csv.,将文件名rename成db2.table1.001.csv 、db2.table2.001.csv.
4、使用lightning进行导入,此时就把db1的表导入到db2下

1 个赞
  1. 使用 tidb-lightning--database 参数: 在启动 tidb-lighting 时,您可以使用 --database 参数来指定目标数据库(即 schema)。如果源数据和目标 schema 不同,您可以在配置文件中指定正确的数据库名,这样 tidb-lightning 就会将数据导入到指定的 schema 中。
  2. 使用 mydumpertidb-lightning 的组合: 您可以先用 mydumper 工具导出数据,然后在 tidb-lightning 导入时指定不同的 schema。在 mydumper 导出的数据文件中,数据库名会被包含在文件名中,tidb-lightning 在导入时会根据文件名中的数据库名来确定目标 schema。
  3. 在导入后使用 SQL 语句修改 schema: 如果您已经使用 tidb-lightning 将数据导入到了错误的 schema,您可以在导入完成后,使用 SQL RENAME TABLE 语句将表移动到正确的 schema。例如:

sql

RENAME TABLE old_schema.old_table TO new_schema.new_table;

请注意,这种方法需要在业务低峰期进行,以减少对业务的影响。
4. 使用 TiDB 的在线 DDL 工具 gh-ostpt-online-schema-change: 这些工具可以在不锁定表的情况下,在线修改表的 schema。您可以使用这些工具将数据从一个 schema 移动到另一个 schema。
5. 编写自定义脚本来处理 schema 变更: 如果您有特定的需求,也可以编写自定义脚本来处理数据的导出、修改 schema 信息、然后导入到目标 schema。

1 个赞

可以把导出的文件用脚本批量重命名,改下db的名字 如
把study_vegas2开头的文件改为test_huitui

for file in study_vegas2.*; do
  mv "$file" "test_huitui${file#study_vegas2}"
done

修改一下就可以了,这种场景在测试环境蛮多,mysql也可以的

lightning 导入时可以指定database参数,或者把dumpling导出 的文件的所有源schema前缀都改成需要导入的schema,再导入应该就可以了

参考官方文档:https://docs.pingcap.com/zh/tidb/stable/tidb-lightning-data-source#表库重命名