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工具,下载对应的版本
官网下载https://docs.pingcap.com/zh/tidb/stable/download-ecosystem-tools#tidb-lightning 链接: https://pan.baidu.com/s/1aiePjNWZ_9jEmmGqsC20bQ 提取码: vpcq
2、启动tidb-lightning
官方建议运行 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、准备配置文件,可以直接官网下载
[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(垃圾回收时间)改长。
调整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异常退出情况
如果 tidb-lightning 异常退出,集群可能仍处于“导入模式” (import mode),该模式不适用于生产环境。此时可执行以下命令查看当前使用的模式:(工具拷贝到中控机执行下面命令) tidb-lightning-ctl --fetch-mode 可执行以下命令强制切换回“普通模式” (normal mode): tidb-lightning-ctl --switch-mode=normal
6、检查数据
导入完毕后,TiDB Lightning 会自动退出。若导入成功,日志的最后一行会显示 tidb lightning exit
。
做一个决定,并不难,难的是付诸行动,并且坚持到底。