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

posted @ 2020-10-26 21:18  苍茫宇宙  阅读(659)  评论(0编辑  收藏  举报