课程名称:3.6.2 Data migration from MySQL(如何将数据从 MySQL 迁移到 TiDB)
学习时长:15min
课程收获:
了解单机 Mysql 数据库如何进行数据迁移到 TiDB
课程内容:
1.使用Dumpling从MySQL导出SQL 文件
需要的权限
- SELECT
- RELOAD
- LOCK TABLES
- REPLICATION CLIENT
导出到 sql 文件
Dumpling 默认导出数据格式为 sql 文件。也可以通过设置 --filetype sql
导出数据到 sql 文件:
dumpling \
-u root \
-P 4000 \
-h 127.0.0.1 \
--filetype sql \
--threads 32 \
-o /tmp/test \
-F 256MiB
上述命令中, -h
、 -P
、 -u
分别是地址,端口,用户。如果需要密码验证,可以用 -p $YOUR_SECRET_PASSWORD
传给 Dumpling。
导出到 csv 文件
假如导出数据的格式是 CSV(使用 --filetype csv
即可导出 CSV 文件),还可以使用 --sql <SQL>
导出指定 SQL 选择出来的记录,例如,导出 test.sbtest1
中所有 id < 100
的记录:
./dumpling \
-u root \
-P 4000 \
-h 127.0.0.1 \
-o /tmp/test \
--filetype csv \
--sql 'select * from `test`.`sbtest1` where id < 100'
2.使用TiDB Lightning 从TiDB-backend模式导入数据至TiDB
部署 TiDB Lightning
第 1 步:部署 TiDB 集群
在开始数据导入之前,需先部署一套要进行导入的 TiDB 集群(版本要求 2.0.9 以上),本教程使用 TiDB 4.0.3 版本。部署方法可参考 TiDB 部署方式。
第 2 步:下载 TiDB Lightning 安装包
通过以下链接获取 TiDB Lightning 安装包(选择与 TiDB 集群相同的版本):
第 3 步:启动 tidb-lightning
- 将安装包里的
bin/tidb-lightning
及bin/tidb-lightning-ctl
上传至部署 TiDB Lightning 的服务器。 - 将数据源也上传到同样的服务器。
- 配置
tidb-lightning.toml
。
[lightning]
# 日志
level = "info"
file = "tidb-lightning.log"
[tikv-importer]
# 选择使用的 local 后端
backend = "local"
# 设置排序的键值对的临时存放地址,目标路径需要是一个空目录
"sorted-kv-dir" = "/mnt/ssd/sorted-kv-dir"
[mydumper]
# 源数据目录。
data-source-dir = "/data/my_datasource/"
[tidb]
# 目标集群的信息
host = "172.16.31.2"
port = 4000
user = "root"
password = "rootroot"
# 表架构信息在从 TiDB 的“状态端口”获取。
status-port = 10080
# 集群 pd 的地址
pd-addr = "172.16.31.3:2379"
- 配置合适的参数运行
tidb-lightning
。如果直接在命令行中用nohup
启动程序,可能会因为 SIGHUP 信号而退出,建议把nohup
放到脚本里面,如:
#!/bin/bash
nohup ./tidb-lightning -config tidb-lightning.toml > nohup.out &
第 4 步:检查数据
导入完毕后,TiDB Lightning 会自动退出。若导入成功,日志的最后一行会显示 tidb lightning exit
。
如果出错,请参见 TiDB Lightning 错误排解。
学习过程中遇到的问题或延伸思考:
- 问题 1:
- 问题 2:
- 延伸思考 1:
- 延伸思考 2: