1、数据迁移(从MySQL迁移至TiDB)
介绍:
本小节介绍使用TiDB Lightning从MySQL SQL文件迁移全量数据到TiDB
1.1、部署TiDB Lightning
注意事项:
● TiDB Lightning运行后,TiDB集群将无法正常对外提供服务。
● 若tidb-lightning崩溃,集群会留在“导入模式”。若忘记转回“普通模式”,集群会产生大量未压缩的文件,继而消耗CPU并导致延迟。此时,需要使用tidb-lightning-ctl手动将集群转回“普通模式”:
bin/tidb-lightning-ctl --switch-mode=normal
● TiDB Lightning需要下游TiDB有如下权限:
权限:作用域
SELECT:Tables
INSERT:Tables
UPDATE:Tables
DELETE:Tables
CREATE:Databases,Tables
DROP:Databases,Tables
ALTER:Tables
下载TiDB Lightning安装包(TiDB Lightning 完全兼容较低版本的TiDB集群,建议选择最新稳定版本)
[root@bogon ~]# wget https://download.pingcap.org/tidb-toolkit-v4.0.8-linux-amd64.tar.gz
[root@localhost ~]# tar -xf tidb-toolkit-v4.0.8-linux-amd64.tar.gz
1.2、数据迁移
1、生成MySQL源数据
[root@localhost ~]# yum -y install mariadb-server
[root@localhost ~]# systemctl restart mariadb
[root@localhost ~]# ll t100w.sql
-rw-r–r–. 1 root root 51253648 Dec 9 21:06 t100w.sql
[root@localhost ~]# mysql
MariaDB [(none)]> create database qq;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> use qq
Database changed
MariaDB [qq]> source /root/t100w.sql
检查数据:
MariaDB [qq]> show tables;
±-------------+
| Tables_in_qq |
±-------------+
| t100w |
±-------------+
1 row in set (0.00 sec)
MariaDB [qq]> select count(*) from t100w;
±---------+
| count(*) |
±---------+
| 1030345 |
±---------+
1 row in set (0.22 sec)
2、导出数据
使用dumpling从MySQL导出数据,如下:
[root@localhost ~]# cd tidb-toolkit-v4.0.8-linux-amd64
[root@localhost ~]# ./bin/dumpling -h 127.0.0.1 -P 3306 -u root -t 16 -F 256MB -B qq -o /opt/
解释:
-B test:从 test 数据库导出。
-f test.t[12]:只导出 test.t1 和 test.t2 这两个表。
-t 16:使用 16 个线程导出数据。
-F 256MB:将每张表切分成多个文件,每个文件大小约为 256 MB。
3、配置TiDB Lightning的数据源
[root@localhost tidb-toolkit-v4.0.8-linux-amd64]# vi tidb-lightning.toml
[lightning]
转换数据的并发数,默认为逻辑 CPU 数量,不需要配置。
混合部署的情况下可以配置为逻辑 CPU 的 75% 大小。
region-concurrency =
日志
level = “info”
file = “tidb-lightning.log”
[tikv-importer]
backend 设置为 local 模式
backend = “local”
设置本地临时存储路径
sorted-kv-dir = “/tidb”
[mydumper]
源数据目录。
data-source-dir = “/opt”
[tidb]
目标集群的信息。tidb-server 的监听地址,填一个即可。
host = “192.168.43.101”
port = 4000
user = “root”
password = “”
表架构信息在从 TiDB 的“状态端口”获取。
status-port = 10080
pd-server 的地址,填一个即可
pd-addr = “192.168.43.101:2379”
4、运行tidb-lightning。如果直接在命令行中用nohup启动程序,可能会因为 SIGHUP 信号而退出,建议把nohup放到脚本里面,如:
[root@localhost ~]# cd tidb-toolkit-v4.0.8-linux-amd64
[root@localhost tidb-toolkit-v4.0.8-linux-amd64]# vi tidb-lightning.sh
#!/bin/bash
nohup ./bin/tidb-lightning -config tidb-lightning.toml > nohup.out &
[root@localhost tidb-toolkit-v4.0.8-linux-amd64]# sh tidb-lightning.sh
提示:如果当前有运行的导入任务,推荐任务完成后再升级TiDB Lightning。否则,你可能需要从头重新导入,因为无法保证断点可以跨版本工作。