本文章仅针对4.0.0版本。
1. 介绍:
TIDB使用Dumpling工具进行数据导出, 使用Lightning工具进行数据恢复。
导出时直接使用Dumpling工具即可导出, 导入时需要先启动tikv-importer再使用tidb-lightning进行数据导入.
TiDB Lightning 运行后,TiDB 集群将无法正常对外提供服务
若tidb-lightning
崩溃,集群会留在“导入模式”。若忘记转回“普通模式”,集群会产生大量未压缩的文件,继而消耗 CPU 并导致延迟。此时,需要使用tidb-lightning-ctl
手动将集群转回“普通模式”:
bin/tidb-lightning-ctl -switch-mode=normal
2. 数据导出-Dumpling
下载工具:https://download.pingcap.org/tidb-toolkit-{version}-linux-amd64.tar.gz
以4.0.0为例:
wget https://download.pingcap.org/tidb-toolkit-v4.0.0-linux-amd64.tar.gz
tar -xvf tidb-toolkit-v4.0.0-linux-amd64.tar.gz
/root/tidb-toolkit-v4.0.2-linux-amd64/bin/dumpling
-u root
-P 4000
-p xxxxxxxx
-h 127.0.0.1
--filetype sql
--threads 32
-o /tmp/test
--filter "test_mysql.*"
3. 数据恢复-tikv-importer 和 tidb-lightning
3.1 配置tikv-importer
vi tikv-importer.toml
# TiKV Importer 配置文件模版
# 日志文件。
log-file = "tikv-importer.log"
# 日志等级:trace、debug、info、warn、error、off。
log-level = "debug"
[server]
# tikv-importer 监听的地址,tidb-lightning 需要连到这个地址进行数据写入。
addr = "xxx.xx.xxx.xx:xxxx"
[import]
# 存储引擎文档 (engine file) 的文件夹路径。
import-dir = "/mnt/ssd/data.import/"
nohup /root/tidb-toolkit-v4.0.2-linux-amd64/bin/tikv-importer -C tikv-importer.toml > nohup.out &
3.2 使用tidb-lighting导入
#!/bin/bash
nohup /root/tidb-toolkit-v4.0.2-linux-amd64/bin/tidb-lightning
--importer xxx.xx.xxx.xx:xxxx
-d /tmp/test/
--tidb-host xxx.xx.xxx.xx
--tidb-user root
--tidb-port 4000
-tidb-status 10080
--pd-urls xxx.xx.xxx.xx:2379
--log-file tidb-lightning.log
> nohup.out &
3.3 troubleshot
3.3.1 中途取消导入, 再次尝试
遇到错误: [error="rpc error: code = Canceled desc = context canceled"]
解决方法:
删除tikv-importer缓存文件,并重启tikv-importer.
1. 到import-dir手工删除
cd /mnt/ssd/data.import/
rm -rf ./.temp
2. 使用tidb-lightning-ctl删除
./tidb-lightning-ctl
-tidb-host xxx.xx.xxx.xx
-tidb-user root
-tidb-port 4000
-tidb-status 10080
-pd-urls xxx.xx.xxx.xx:2379
-log-file tidb-lightning_tool.log
-importer xxx.xx.xxx.xx:8287
3.3.2 "TiDB Lightning has failed last time; please resolve these errors first"
failed: checksum mismatched remote vs local
rm -rf /tmp/tidb_lightning_checkpoint.pb