一、TiDB Lightning介绍

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

目前,TiDB Lightning 支持以下后端:

  • Importer-backend(默认)
  • Local-backend
  • TiDB-backend

以上几种后端导入数据的区别如下:

  1. Importer-backend:tidb-lightning 先将 SQL 或 CSV 数据编码成键值对,由 tikv-importer 对写入的键值对进行排序,然后把这些键值对 Ingest 到 TiKV 节点中。

  2. Local-backend:tidb-lightning 先将数据编码成键值对并排序存储在本地临时目录,然后将这些键值对以 SST 文件的形式上传到各个 TiKV 节点,然后由 TiKV 将这些 SST 文件 Ingest 到集群中。和 Importer-backend 原理相同,不过不依赖额外的 tikv-importer 组件。

  3. TiDB-backend:tidb-lightning 先将数据编码成 INSERT 语句,然后直接在 TiDB 节点上运行这些 SQL 语句进行数据导入。


注意点:
TiDB Lightning 与 TiFlash 一起使用时,无论是否已为一张表创建 TiFlash 副本,你均可以使用 TiDB Lightning 导入数据至该表。但该场景下 TiDB Lightning 导入数据耗费的时间更长,具体取决于 TiDB Lightning 部署机器的网卡带宽、TiFlash 节点的 CPU 及磁盘负载、TiFlash 副本数等因素。

二、导入的流程

三、准备工作

1. mysql 中的数据


在mysql中有testdb库和user表,等下就来迁移这张表的数据。

2. 下载Dumpling和TiDB Lightning工具

wget https://download.pingcap.org/tidb-toolkit-v5.0.1-linux-amd64.tar.gz
  • 1
tar xvf tidb-toolkit-v5.0.1-linux-amd64.tar.gz
  • 1
cd tidb-toolkit-v5.0.1-linux-amd64/bin/
  • 1

四、使用Dumpling将mysql中的数据导出

进入到上面下载工具解压后的bin下,进行导出:

首先创建文件存储的目录:

mkdir -p /mysql/data && chmod -R 777 /mysql/data
  • 1

使用mydumper导出数据

./mydumper -h 192.168.40.160 -P 3306 -u root -p root123 -t 16 -F 256 -B testdb -T user -r 200000 --skip-tz-utc -o /mysql/data/
  • 1

-h:mysql所在主机ip
-P:mysql的端口
-u:mysql的用户
-p:mysql密码
-t: 导出数据使用线程数
-F:指定单个文件的最大大小,单位为 MiB,可接受类似 5GiB 或 8KB 的输入。
-B:导出的数据库
-T:指定导出的表,不写-T,则导出该库下所有表
-r:指定单个文件的最大行数,指定该参数后 Dumpling 会开启表内并发加速导出,同时减少内存使用。
-o:导出数据存储的目录

执行上面命令后查看/mysql/data/目录:

从上面就可以看出,导出的为可读的SQL数据。

五、使用TiDB Lightning将数据导入TIDB中

进入到上面下载工具解压后的bin下,进行数据的导入:

编写tidb-lightning.toml文件:

vi tidb-lightning.toml
  • 1

写入以下内容:

[lightning]

转换数据的并发数,默认为逻辑 CPU 数量,不需要配置。

混合部署的情况下可以配置为逻辑 CPU 的 75% 大小。

region-concurrency =

日志

level = "info"

file = "tidb-lightning.log" [tikv-importer]

backend 设置为 local 模式

backend = "local"

设置本地临时存储路径

sorted-kv-dir = "/tem" [mydumper]

源数据目录。

data-source-dir = "/mysql/data" [tidb]

目标集群的信息。tidb-server 的监听地址,填一个即可。

host = "192.168.40.160"

port = 4000

user = "root"

password = ""

表架构信息在从 TiDB 的“状态端口”获取。

status-port = 10080

pd-server 的地址,填一个即可

pd-addr = "192.168.40.161:2379"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

backend = "local”:表示直接导入到 TiKV-Server 中
pd-addr = "192.168.40.161:2379”:选择任意一个 PD 节点的 IP 和输入端口号

开始导入

! /bin/bash
nohup ./tidb-lightning -config tidb-lightning.toml > nohup.out &
  • 1
  • 2

执行完成后,查看tidb-lightning.log日志文件:

已经导入成功,下面看下TIDB中的数据:

数据已经导入TIDB中。

六、注意点

TiDB Lightning在数据导入的时候,会将TIDB集群置为导入模式,可以增加导入的速度,但会影响TIDB的读写。导入成功后TiDB Lightning会自动将集群恢复成普通状态,如果导入失败,则不会将集群恢复成普通状态,依然还处于导入状态,集群会产生大量未压缩的文件,继而消耗 CPU 并导致延迟。此时集群是有问题的,因此需要手动置为普通状态。

查看当前的模式:

tidb-lightning-ctl --fetch-mode
  • 1

如果不是Normal 则需要手动置为普通状态

./tidb-lightning-ctl -switch-mode=normal
  • 1


喜欢的小伙伴可以关注我的个人微信公众号,获取更多学习资料!

文章知识点与官方知识档案匹配,可进一步学习相关知识
云原生入门技能树首页概览14923 人正在系统学习中
狂热JAVA小毕超


微信公众号

专注于JAVA、微服务、中间件等技术分享

[转帖]TIDB - 使用 Dumpling 和 TiDB Lightning 迁移Mysql数据至TIDB中的更多相关文章

  1. 多种方式告诉你如何计算DM同步数据到TiDB的延时时间

    背景 用户在做技术选型的过程中,总是会对一些数据指标比较关心,特别是在和竞品相比较的时候,更加需要一些有说服力的数据.基于MySQL开发的项目在迁移到TiDB的时候,使用DM同步数据是必不可少的一个环 ...

  2. MYSQL5.7实时同步数据到TiDB

    操作系统:CentOS7 mysql版本:5.7 TiDB版本:2.0.0 同步方法:使用TiDB提供的工具集进行同步 说明: 单机mysql同步时,可以直接使用binlog同步, 但mysql集群进 ...

  3. [转帖]C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义

    C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义 https://blog.csdn.net/willyang519/article/d ...

  4. MYSQL与TiDB的执行计划

    前言 这里采用了tpc-h一个数据库的数据量来进行查询计划的对比.并借助tpc-h中的22条查询语句进行执行计划分析. mysql采用的是标准安装,TiDB采用的是单机测试版,这里的性能结果不能说明其 ...

  5. TiDB Lightning导入超大型txt文件实践

    背景 TiDB 提供了很多种数据迁移的方式,但这些工具/方案普遍对MySQL比较友好,一旦涉及到异构数据迁移,就不得不另寻出路,借助各种开源或商业的数据同步工具.其实数据在不同系统的流转当中,有一种格 ...

  6. 探索TiDB Lightning的源码来解决发现的bug

    背景 上一篇<记一次简单的Oracle离线数据迁移至TiDB过程>说到在使用Lightning导入csv文件到TiDB的时候发现了一个bug,是这样一个过程. Oracle源库中表名都是大 ...

  7. 用一个性能提升了666倍的小案例说明在TiDB中正确使用索引的重要性

    背景 最近在给一个物流系统做TiDB POC测试,这个系统是基于MySQL开发的,本次投入测试的业务数据大概10个库约900张表,最大单表6千多万行. 这个规模不算大,测试数据以及库表结构是用Dump ...

  8. 【TIDB】4、业界使用情况

    一.小米 1.背景 小米关系型存储数据库首选 MySQL,单机 2.6T 磁盘.由于小米手机销量的快速上升和 MIUI 负一屏用户量的快速增加,导致负一屏快递业务数据的数据量增长非常快, 每天的读写量 ...

  9. 记一次简单的Oracle离线数据迁移至TiDB过程

    背景 最近在支持一个从Oracle转TiDB的项目,为方便应用端兼容性测试需要把Oracle测试环境的库表结构和数据同步到TiDB中,由于数据量并不大,所以怎么方便怎么来,这里使用CSV导出导入的方式 ...

  10. TiDB:支持 MySQL 协议的分布式数据库解决方案

    [编者按]TiDB 是国内 PingCAP 团队开发的一个分布式 SQL 数据库.其灵感来自于 Google 的 F1,TiDB 支持包括传统 RDBMS 和 NoSQL 的特性.在国内 ITOM 管 ...

随机推荐

  1. grafana添加组件

    ###安装grafana插件需联网安装[root@zabbix grafana]# grafana-cli plugins list-remote #查询可用的插件id: abhisant-druid ...

  2. django token 认证 简单记录

    class User(AbstractUser): username = models.CharField( max_length=20, unique=True, primary_key=True, ...

  3. 文心一言 VS 讯飞星火 VS chatgpt (47)-- 算法导论6.1 5题

    五.一个已排好序的数组是一个最小堆吗? 文心一言: 一个已排好序的数组不一定是一个最小堆.最小堆是一种特殊的二叉树,它满足以下性质:对于任意节点 x,其父节点 y 的值都小于等于 x 的值.而一个已排 ...

  4. 互联网公司五八同城(58.com)研发效能团队建设之路

    这是「二三线中型互联网公司研发效能团队规模.职能划分和优劣势分析」的一个铺垫,一个背景.因为如果不写此篇,大家可能仅得到一些经验总结,恐怕难以获取当时为啥做出那个决定.做决定要有上下文环境,要有场景才 ...

  5. 【华为云技术分享】40%性能提升,华为云推出PostgreSQL 12 商用版

    摘要:日前,华为云数据库正式推出了RDS for PostgreSQL 12版本,并开始商用.本文将从华为云RDS for PostgreSQL 12的4大特性和架构图等多方面来解读华为云Postgr ...

  6. 云图说|AI开发难!难!难!端云协同多模态AI开发套件你需要了解一下

    摘要:Huawei HiLens Kit是一款端云协同多模态AI开发套件,支持图像.视频.语音等多种数据分析与推理计算,可广泛用于智能监控.智能家庭.机器人.无人机.智慧工业.智慧门店等分析场景. 在 ...

  7. 华为云UGO:醒醒!你的异构数据库迁移难题有救了

    摘要:华为云推出的数据库和应用迁移 UGO,正是一款专注于异构数据库结构迁移和应用SQL转换的专业云服务. 数字化时代下,上云已成为企业管理者的基本共识,随着技术日新月异,上云也变得轻松简单起来,但异 ...

  8. 带你了解NB-IoT标准演进

    摘要:本文将带大家详细了解NB-IoT标准演进与产业发展. 本文分享自华为云社区<一文带你了解NB-IoT标准演进与产业发展>,作者:万万万. 我们都知道,物联网的场景和手机.电脑在使用的 ...

  9. 应用数仓ODBC前,这些问题你需要先了解一下

    摘要:ODBC为解决异构数据库间的数据共享而产生的,现已成为WOSA的主要部分和一种数据库访问接口标准. 本文分享自华为云社区<GaussDB(DWS) ODBC 问题定位指南>,作者: ...

  10. 百度高德地图JS-API学习手记:地图基本设置与省市区数据加载

    无论是百度还是高德地图开发,还是高德地图开发.官方的给的案例启示很多,copy再修改下,就完成了 https://lbs.amap.com/api/javascript-api/summary  ht ...