TiDB教程(3)使用TiDB Lighting导入MySQL数据

tanglu 886 2021-06-21

一、下载TiDB Lightning

TiDB Lightning是一个可以高速将数据导入TiDB集群的工具,目前支持导入Dumpling、CSV数据源,还支持从本地磁盘或Amazon S3云盘读取数据。该工具在TiDB官方工具页面进行下载,TiDB Lightning完全兼容低版本TiDB集群,建议选择最新稳定版本

wget https://download.pingcap.org/tidb-toolkit-v5.0.0-linux-amd64.tar.gz


二、使用dumpling导出MySQL数据

1、dumpling介绍

dumpling是PingCAP之前所维护的Mydumper分支工具的下一代。针对TiDB的特性进行了优化,Mydumper绝大部分功能已经被Dumpling取代。该工具可以把存储在TiDB/MySQL中的数据导出为 SQL 或者 CSV 格式,可以用于逻辑备份或导出


2、dumpling安装

推荐使用tiup install dumpling命令进行安装。也可以下载tidb-toolkit安装包(https://docs.pingcap.com/zh/tidb/stable/download-ecosystem-tools#dumpling)进行安装。


3、dumpling常用选项

-B:指定需要导出的数据库,默认Dumpling会导出系统数据库外的所有库

-T:指定需要导出的表,只接受库名.表名形式,如-T employees.WorkOrder代表employees.WorkOrder表

-f:指定需要导出的表,支持通配符
-t:指定导出线程数,增加线程数会增加 Dumpling 并发度提高导出速度,但也会加大数据库内存消耗

-F:指定导出时数据拆分文件大小,如果想使用TiDB Lightning 将该文件加载到 TiDB 实例中,建议控制到256MB或以下

-o:指定导出路径

--where:用于过滤需要导出的数据

--filter:指定需要过滤的库表,如--filter "employees.*"代表导出employees库的所有表


4、dumpling使用示例

dumpling成功执行后,会输出metadata、{schema}-schema-create.sql、{schema}.{table}-schema.sql这样的文件,其中metadata记录了position信息,其他文件则是建表和导入数据的SQL


· 将MySQL数据导出为SQL文件

dumpling -h 172.20.0.140 -P 3306 -u root -p 123456 -t 8 -F 256MB -B linuxe -o /data/backup/linuxe/


· 将MySQL数据导出为CSV文件

#可以使用--sql导出指定SQL所查询出来的记录,例如导出所有id < 100 的记录
dumpling -h 172.20.0.140 -P 3306 -u root -p 123456 -t 8 -F 256MB -B linuxe --filetype csv --sql 'select * from test.sbtest1 where id < 100' -o /data/backup/linuxe/


三、使用TiDB Lightning导入数据

1、TiDB Lightning工作流程
· 在导入数据前自动将TiKV集群切换为导入模式 (import mode),优化写入效率并停止自动压缩,集群将无法正常对外提供服务。若tidb-lightning 崩溃,集群会留在导入模式。此时需要使用tidb-lightning-ctl手动将集群转回普通模式

bin/tidb-lightning-ctl --switch-mode=normal

· 在目标数据库建立架构和表,并获取其元数据
· 每张表会被分割为多个连续的区块,这样对于大表 (200 GB+)数据就可以用增量方式并行导入
· tidb-lightning会为每一个区块准备一个引擎文件 (engine file)来处理键值对。tidb-lightning并发读取SQL dump并将数据源转换成TiDB相同编码的键值对,然后将这些键值对排序写入本地临时存储文件
· 当一个引擎文件数据写入完毕后会对目标TiKV集群数据进行分裂和调度,然后导入数据到TiKV集群
· 整张表相关联的所有引擎文件完成导入后,进行校验确保导入数据无损,然后TiDB 分析 (ANALYZE) 新增数据以优化日后的操作。同时tidb-lightning 调整 AUTO_INCREMENT 值防止之后新增数据时发生冲突(表的自增 ID 是通过行数的上界估计值得到的,与表的数据文件总大小成正比。如果最后自增 ID比实际行数大属于正常现象,因为在 TiDB 中自增 ID 不一定是连续分配的)。
· tidb-lightning 自动将 TiKV 切换回普通模式(normal mode),TiDB 集群可以正常对外提供服务


2、安装TiDB Lightning

在工具下载页面(https://docs.pingcap.com/zh/tidb/stable/download-ecosystem-tools)下载 TiDB Lightning 安装包。TiDB Lightning 完全兼容较低版本的 TiDB 集群,建议选择最新稳定版本。如果后期需要升级的话可以直接替换二进制文件,无需其他配置。


3、TiDB Lightning使用方法
· 创建tidb-lightning.toml配置文件,用于指定数据源文件和还原路径等信息,下面文件内容是Local-backend最基本配置,详细都可以参考https://docs.pingcap.com/zh/tidb/stable/tidb-lightning-configuration

[lightning]
# 转换数据的并发数,默认为逻辑 CPU 数量,不需要配置。
# # # 混合部署的情况下可以配置为逻辑 CPU 的 75% 大小。
# # # region-concurrency =
level = "info"
file = "/data/tidb/log/tidb-lightning.log"

[tikv-importer]
# # # backend 设置为 local 模式
backend = "local"
#本地临时存储路径
sorted-kv-dir = "/data/backup/tidb_temp/"
#备份文件路径
[mydumper]
data-source-dir = "/data/backup/linuxe"

[tidb]
host = "172.20.1.150"
port = 4000
user = "root"
password = ""
# 表架构信息在从 TiDB 的“状态端口”获取。
status-port = 10080
# pd-server 的地址,填一个即可 
pd-addr = "172.20.1.150:2379"


· 建议作为脚本执行还原如

#!/bin/bash
nohup tidb-lightning -config tidb-lightning.toml > nohup.out &

4、正确重启TiDB Lightning

· 结束 tidb-lightning 进程
· 修改配置文件
· 如果有更改了任何表需要清除对应断点
· 重启 tidb-lightning

版权声明
本站所有文章均为原创,转载请注明出处!小站维护不易,如果对您有所帮助,希望能点击一下站内广告,谢谢!
上一篇:TiDB教程(2)TiDB集群管理工具tiup使用教程
下一篇:【MySQL运维】使用mysqladmin命令管理MySQL
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

微信二维码