TiDB教程(3)使用TiDB Lighting导入MySQL数据
一、下载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:指定导出时数据拆分文件大小,如果想使用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
评论