TiDB(6):数据迁移-TiDB Lightning

1 TiDB Lightning介绍

TiDB Lightning 是一个将全量数据高速导入到 TiDB 集群的工具,目前支持 Mydumper 或 CSV 输出格式的数据源。你可以在以下两种场景下使用 Lightning:

迅速导入大量新数据。

备份恢复所有数据。

TiDB Lightning 主要包含两个部分:

(1)tidb-lightning(“前端”):主要完成适配工作,通过读取数据源,在下游 TiDB 集群建表、将数据转换成键/值对 (KV 对) 发送到 tikv-importer、检查数据完整性等。

(2)tikv-importer(“后端”):主要完成将数据导入 TiKV 集群的工作,把 tidb-lightning 写入的 KV 对缓存、排序、切分并导入到 TiKV 集群。

2 准备迁移工具

首先用过一下地址下载工具

wget https://download.pingcap.org/tidb-enterprise-tools-latest-linux-amd64.tar.gz

wget https://download.pingcap.org/tidb-toolkit-latest-linux-amd64.tar.gz

3 准备MySQL数据

CREATE DATABASE mytest;
USE mytest;

CREATE TABLE mytest.t1 (
	id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
	c CHAR (32),
	PORT INT
);

insert into t1 values (),(),(),(),(),(),(),();
        insert into t1 (id) select null from t1;
        insert into t1 (id) select null from t1;
        insert into t1 (id) select null from t1;
        insert into t1 (id) select null from t1;
        insert into t1 (id) select null from t1;
        update t1 set c=md5(id), port=@@port;

CREATE TABLE mytest.t2 (
	id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
	c CHAR (32),
	PORT INT
);

insert into t2 values (),(),(),(),(),(),(),();
        insert into t2 (id) select null from t2;
        insert into t2 (id) select null from t2;
        insert into t2 (id) select null from t2;
        insert into t2 (id) select null from t2;
        insert into t2 (id) select null from t2;
        update t2 set c=md5(id), port=@@port;

4 导出数据

mkdir -p /data/my_database/

cd  /home/tidb-enterprise-tools-latest-linux-amd64/bin

./mydumper -h 192.168.222.132 -P 3306 -u root -p 123456 -t 16 -F 256 -B mytest -T t1,t2 --skip-tz-utc -o /data/my_database/

cd /data/my_database

其中:

  • -B mytest :从 mytest 数据库导出。
  • -T t1,t2:只导出 t1 和 t2 这两个表。
  • -t 16:使用 16 个线程导出数据。
  • -F 256:将每张表切分成多个文件,每个文件大小约为 256 MB。
  • --skip-tz-utc:添加这个参数则会忽略掉 TiDB 与导数据的机器之间时区设置不一致的情况,禁止自动转换。

这样全量备份数据就导出到了/data/my_database目录中。

5 启动tikv-importer

cd /home/tidb-toolkit-latest-linux-amd64/bin

修改配置文件

vim tikv-importer.toml

# TiKV Importer 配置文件模版

# 日志文件。
log-file = "tikv-importer.log"
# 日志等级:trace、debug、info、warn、error、off。
log-level = "info"

[server]
# tikv-importer 监听的地址,tidb-lightning 需要连到这个地址进行数据写入。
addr = "192.168.222.136:8287"

[import]
# 存储引擎文档 (engine file) 的文件夹路径。
import-dir = "/mnt/ssd/data.import/"

启动tikv-importer

nohup ./tikv-importer -C tikv-importer.toml > nohup.out &

6 启动tidb-lightning

启动命令比较复杂,建议使用脚本,如下:

vim run.sh

脚本内容如下

#!/bin/bash
nohup ./tidb-lightning \
            --importer 192.168.1.101:8287 \
            -d /data/my_database/ \
            --pd-urls 0.0.0.0:2379 \
            --tidb-host 192.168.1.101 \
            --tidb-user root \
            --log-file tidb-lightning.log \
        > nohup.out &

修改脚本权限

chmod 755 run.sh

启动脚本

./run.sh

这是去查看TiDB,发现mysql中指定的数据已经全部同步到TiDB中

猜你喜欢

转载自blog.csdn.net/u013938578/article/details/131545743