1 下载安装TiDB工具包
安装包位置在https://download.pingcap.org/tidb-toolkit-{version}-linux-amd64.tar.gz
- {version}:为 Dumpling 的版本号,可以通过 Dumpling Release
1.1 检查最新版本
通过 Dumpling Releasehttps://github.com/pingcap/dumpling/releases
查看当前已发布版本,检查发现Dumpling当前版本是4.0.11
1.2 下载tidb-toolkit
# 下载工具包 wget https://download.pingcap.org/tidb-toolkit-v5.0.6-linux-amd64.tar.gz # 解压文件 tar -zxvf tidb-toolkit-v5.0.6-linux-amd64.tar.gz
2 Dumpling导出数据
2.1 Dumpling工具简介
Dumpling
是使用 go 开发的数据备份工具,项目地址可以参考 Dumplinghttps://github.com/pingcap/dumpling
。
Dumpling命令参数列表
主要选项 | 用途 | 默认值 |
-V 或 --version | 输出 Dumpling 版本并直接退出 | |
-B 或 --database | 导出指定数据库 |
-T 或 --tables-list | 导出指定数据表 | |
-f 或 --filter | 导出能匹配模式的表,语法可参考 table-filter | *.* (导出所有库表) |
–case-sensitive | table-filter 是否大小写敏感 | false,大小写不敏感 |
-h 或 --host | 连接的数据库主机的地址 | “127.0.0.1” |
-t 或 --threads | 备份并发线程数 | 4 |
-r 或 --rows | 将 table 划分成 row 行数据,一般针对大表操作并发生成多个文件。 |
-L 或 --logfile | 日志输出地址,为空时会输出到控制台 | “” |
–loglevel | 日志级别 {debug,info,warn,error,dpanic,panic,fatal} | “info” |
–logfmt | 日志输出格式 {text,json} | “text” |
-d 或 --no-data | 不导出数据,适用于只导出 schema 场景 | |
–no-header | 导出 csv 格式的 table 数据,不生成 header | |
-W 或 --no-views | 不导出 view | true |
-m 或 --no-schemas | 不导出 schema,只导出数据 |
-s 或–statement-size | 控制 INSERT SQL 语句的大小,单位 bytes |
|
-F 或 --filesize | 将 table 数据划分出来的文件大小,需指明单位(如 128B , 64KiB , 32MiB , 1.5GiB ) |
–filetype | 导出文件类型(csv/sql) | “sql” |
-o 或 --output | 导出文件路径 | “./export-${time}” |
-S 或 --sql | 根据指定的 sql 导出数据,该选项不支持并发导出 |
–snapshot | snapshot tso,只在 consistency=snapshot 下生效 | |
–where | 对备份的数据表通过 where 条件指定范围 | |
-p 或 --password | 连接的数据库主机的密码 | |
-P 或 --port | 连接的数据库主机的端口 | 4000 |
-u 或 --user | 连接的数据库主机的用户名 | “root” |
–dump-empty-database | 导出空数据库的建库语句 | true |
–ca | 用于 TLS 连接的 certificate authority 文件的地址 |
–cert | 用于 TLS 连接的 client certificate 文件的地址 | |
–key | 用于 TLS 连接的 client private key 文件的地址 | |
–csv-delimiter | csv 文件中字符类型变量的定界符 | ‘"’ |
–csv-separator | csv 文件中各值的分隔符 | ‘,’ |
–csv-null-value | csv 文件空值的表示 | “\N” |
–escape-backslash | 使用反斜杠 (\ ) 来转义导出文件中的特殊字符 |
true |
2.2 导出需要的权限
- SELECT
- RELOAD
- LOCK TABLES
- REPLICATION CLIENT
2.3 创建用户并授权
#创建tidb用户密码是 tidb并授权外部所以IP可以访问 CREATE USER 'tidb'@'%' IDENTIFIED BY 'tidb'; # 授权SELECT,RELOAD,LOCK TABLES,REPLICATION CLIENT 权限给tidb用户 GRANT SELECT,RELOAD,LOCK TABLES,REPLICATION CLIENT ON *.* TO 'tidb'@'%'; # 刷新数据库 FLUSH PRIVILEGES;
2.4 验证数据库
mysql -u tidb -h 172.16.44.47 -p show databases; show tables;
2.5 导出sql文件
Dumpling 默认导出数据格式为 sql 文件。也可以通过设置
--filetype sql
导出数据到 sql 文件:
./bin/dumpling -h 172.16.44.47 -P 3306 -B employees -u tidb -p tidb --filetype sql --threads 10 -o /tmp/test -F 256MiB
执行命令后从mysql中导出了文件
2.6 查看导出文件
cd /tmp/test/ ; ll
3 TiDB Lightning导入数据
3.1 TiDB Lightning简介
TiDB Lightning 是一个将全量数据高速导入到 TiDB 集群的工具。
TiDB Lightning 有以下两个主要的使用场景:一是大量新数据的快速导入;二是全量备份数据的恢复。目前,Lightning 支持 Dumpling 或 CSV 输出格式的数据源。你可以在以下两种场景下使用 Lightning:
- 迅速导入大量新数据。
- 恢复所有备份数据。
3.2 TiDB Lightning 整体架构
3.3 配置tidb-lightning.toml
vi tidb-lightning.toml [lightning] # 日志 level = "info" file = "tidb-lightning.log" [tikv-importer] # 选择使用的 local 后端 backend = "local" # 设置排序的键值对的临时存放地址,目标路径需要是一个空目录 "sorted-kv-dir" = "/tmp/sorted-kv-dir" [mydumper] # 源数据目录。 data-source-dir = "/tmp/test/" [tidb] # 目标集群的信息 host = "192.168.64.152" port = 4000 user = "root" password = "" # 表架构信息在从 TiDB 的“状态端口”获取。 status-port = 10080 # 集群 pd 的地址 pd-addr = "192.168.64.152:2379"
3.4 执行导入命令
./bin/tidb-lightning -config tidb-lightning.toml
出现错误不需要理会,等待导入完成
导入完毕后,TiDB Lightning 会自动退出。若导入成功,日志的最后一行会显示
tidb lightning exit
。
3.5 检查是否导入成功
登录TiDB检查导入是否成功
mysql -u root -P 4000 -h 192.168.64.152
到这里基本上已经确定导入成功