mysql数据迁移至Tidb操作指南

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。否则,你可能需要从头重新导入,因为无法保证断点可以跨版本工作。

最简单的方法不是应该用mysqldump从mysql导出sql文件,然后在tidb里面source进去就好了么。

都是离线的吧,如果不停的话,增量数据同步呢

增量你用dm啊

tidb有个dm全量增量都行

从MySQL迁移至TiDB,使用dm。专业!