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

news/2024/5/19 12:51:57 标签: tidb

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中

 


http://www.niftyadmin.cn/n/1755972.html

相关文章

计算机基础--->数据结构(7)【红黑树】

文章目录 二三树二三树的性质二三树一个简单的插入例子二三树的特点 红黑树红黑树的特点红黑树的节点红黑树的插入操作1. 左旋2. 右旋颜色翻转3. 颜色翻转插入实例 二三树 二三树与红黑树的性质非常相似,但是二三树能更直观的让人理解构建过程 二三树的性质 二三树是…

openssl自签名证书学习笔记

openssl自签名证书学习笔记 文章目录 openssl自签名证书学习笔记使用openssl自签名证书(此章节由CSDN的InsCodeAI创作助手生成)使用openssl自签名证书(此章节由openai的chatGPT生成)使用openssl自签名证书(学习笔记&am…

elk中kibana使用

1.前言 kibana是一款作为elasticsearch可视化的一款软件,将elasticsearch中的数据以可视化的状态展现出来,kibana也提供了查询、统计、修改索引等功能 2.kibana使用 索引管理 在索引管理中,可以看到所有索引的状态、运行状况、主分片、副本…

一键安装和卸载docker及docker-compose

代码: #!/bin/bashSYSTEMD_PATH/usr/lib/systemd/system/docker.service DOCKER_FILEdocker-20.10.23.tgz DOCKER_COMPOSE_FILEdocker-compose-plugin-2.15.1-3.el8.x86_64.rpm RED\E[1;31m GREEN\E[1;32m YELOW\E[1;33m SHAN\E[1;31;5m RES\E[0mfunction install_…

【Spring】从Spring源码入手分析广播与监听并完成项目实战

文章目录 源码解析发送广播监听消息案例分析消息与监听绑定 实战教学自定义事件自定义广播自定义监听客户端 近期疫情形势严峻,情形不容乐观,周末也不敢出去浪了,躲在家里“葛优躺”。闲来无事,又翻了遍Spring的源码。不翻不知道&…

【Go】Go 语言教程--语言变量(五)

往期教程: Go 语言教程–介绍(一)Go 语言教程–语言结构(二)Go 语言教程–语言结构(三)Go 语言教程–数据类型(四) 文章目录 变量声明多变量声明值类型和引用类型简短形…

JS面向对象--贪吃蛇游戏

在线预览 https://1024code.com/codecubes/gpsubu9 代码 <!DOCTYPE> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> <!--<meta http-equiv"refresh" content"1">--> …

c++11 标准模板(STL)(std::basic_ostream)(六)

定义于头文件 <ostream> template< class CharT, class Traits std::char_traits<CharT> > class basic_ostream : virtual public std::basic_ios<CharT, Traits> 类模板 basic_ostream 提供字符流上的高层输出操作。受支持操作包含有格式…