tidb使用lightning导入dumper导出的数据
环境:tidb4.0.4、centos7
前提:使用dumper导出了数据文件,可以是csv、mysql都可以,如果导入的库中有数据,需要先手动清空表数据 truncate table check_data_sync ;
官网的说明:https://docs.pingcap.com/zh/tidb/stable/tidb-lightning-web-interface#tidb-lightning-web-界面
1、下载tidb-lightning工具,下载对应的版本
1 2 | 官网下载https: //docs.pingcap.com/zh/tidb/stable/download-ecosystem-tools#tidb-lightning 链接: https: //pan.baidu.com/s/1aiePjNWZ_9jEmmGqsC20bQ 提取码: vpcq |
2、启动tidb-lightning
1 2 3 4 5 6 7 8 9 | 官方建议运行 tidb-lightning。如果直接在命令行中用 nohup 启动程序,可能会因为 SIGHUP 信号而退出,建议把 nohup 放到脚本里面,如: 方法一、先启动程序,在页面去添加导入配置 (我这次用的该方法) mkdir /tmp/tidb-lightning #!/bin/bash nohup ./tidb-lightning --server-mode --status-addr :8289 > /tmp/tidb-lightning/lightning.log 2>&1 & 方法二、直接将配置文件修改好进行启动 #!/bin/bash nohup ./tidb-lightning -config tidb-lightning.toml > nohup. out & |
3、准备配置文件,可以直接官网下载
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | [lightning] # 转换数据的并发数,默认为逻辑 CPU 数量,不需要配置。 # 混合部署的情况下可以配置为逻辑 CPU 的 75% 大小。 region-concurrency = 12 # 日志 level = "info" file = "tidb-lightning.log" [checkpoint] # 是否启用断点续传。 # 导入数据时,TiDB Lightning 会记录当前表导入的进度。 # 所以即使 Lightning 或其他组件异常退出,在重启时也可以避免重复再导入已完成的数据。 enable = true # 存储断点的数据库名称。 schema = "tidb_lightning_checkpoint" # 存储断点的方式。 # - file:存放在本地文件系统。 # - mysql:存放在兼容 MySQL 的数据库服务器。 driver = "file" # dsn 是数据源名称 (data source name),表示断点的存放位置。 # 若 driver = "file",则 dsn 为断点信息存放的文件路径。 #若不设置该路径,则默认存储路径为“/tmp/CHECKPOINT_SCHEMA.pb”。 # 若 driver = "mysql",则 dsn 为“用户:密码@tcp(地址:端口)/”格式的 URL。 # 若不设置该 URL,则默认会使用 [tidb] 部分指定的 TiDB 服务器来存储断点。 # 为减少目标 TiDB 集群的压力,建议指定另一台兼容 MySQL 的数据库服务器来存储断点。 # dsn = "/tmp/tidb_lightning_checkpoint.pb" # 所有数据导入成功后是否保留断点。设置为 false 时为删除断点。 # 保留断点有利于进行调试,但会泄漏关于数据源的元数据。 # keep-after-success = false # https://docs.pingcap.com/zh/tidb/stable/tidb-lightning-checkpoints#tidb-lightning-断点续传 [tikv-importer] # backend 设置为 local 模式 backend = "local" # 设置本地临时存储路径 sorted-kv-dir = "/tmp/tidb-lightning" [mydumper] # Mydumper 源数据目录。 data-source-dir = "/bak/20201026bak" [tidb] # 目标集群的信息。tidb-server 的监听地址,填一个即可。 host = "172.21.210.40" port = 4000 user = "root" password = "password" # 表架构信息在从 TiDB 的“状态端口”获取。 status-port = 10080 # pd-server 的地址,填一个即可 pd-addr = "172.21.210.40:2379" [post-restore] #去除表分析 analyze = false |
3、访问lightning的web页面http://172.21.210.21:8289/web/progress,导入配置文件。在该页面可以看到进行中的active、完成的和排队的详情
4、如果数据量很大,最好在导入前将gc(垃圾回收时间)改长。
1 2 3 4 5 | 调整TiDB集群的GC时间 SELECT * FROM mysql.tidb WHERE VARIABLE_NAME = 'tikv_gc_life_time' ; update mysql.tidb set VARIABLE_VALUE = '10h' where VARIABLE_NAME = 'tikv_gc_life_time' ; 导入完成后改回原值 update mysql.tidb set VARIABLE_VALUE = '10m' where VARIABLE_NAME = 'tikv_gc_life_time' ; |
5、注意lightning异常退出情况
1 2 3 4 | 如果 tidb-lightning 异常退出,集群可能仍处于“导入模式” (import mode),该模式不适用于生产环境。此时可执行以下命令查看当前使用的模式:(工具拷贝到中控机执行下面命令) tidb-lightning-ctl --fetch-mode 可执行以下命令强制切换回“普通模式” (normal mode): tidb-lightning-ctl -- switch -mode=normal |
6、检查数据
导入完毕后,TiDB Lightning 会自动退出。若导入成功,日志的最后一行会显示 tidb lightning exit
。
做一个决定,并不难,难的是付诸行动,并且坚持到底。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)