[转帖]TIDB - 使用 Dumpling 和 TiDB Lightning 迁移Mysql数据至TIDB中

tidb,使用,dumpling,lightning,迁移,mysql,数据 · 浏览次数 : 0

小编点评

**TiDB Lightning 介绍** TiDB Lightning 是一个开源工具,用于将全量数据高速导入到 TiDB 集群中。它支持 Mydumper 或 CSV 输出格式的数据源。 **导入流程** 1. 下载并解压缩工具包。 2. 创建 `tidb-lightning.toml` 文件。 3. 编写 `tidb-lightning.toml` 文件中的配置。 4. 运行 `tidb-lightning` 命令。 **准备工作** 1. 下载 MySQL 数据。 2. 安装 `mydumper`工具。 3. 创建一个存储目录用于数据导入。 **使用说明** 1. 将 MySQL 数据解压缩到存储目录中。 2. 将解压缩后的文件作为 `data-source-dir` 配置项传递给 `tidb-lightning` 命令。 3. 设置目标集群信息,包括地址、用户名和密码。 4. 设置导入模式,例如本地导入或 TiKV-Server导入。 5. 启动 `tidb-lightning` 命令。 **注意** * 在导入过程中,TiDB集群将置为导入模式,影响读写性能。 * 导入成功后,TiDB Lightning 会自动恢复集群状态,但导入失败会保持集群在导入状态。

正文

一、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中相似的内容:

[转帖]TIDB - 使用 Dumpling 和 TiDB Lightning 迁移Mysql数据至TIDB中

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

[转帖]使用 Dumpling 和 TiDB Lightning 备份与恢复

本文档介绍如何使用 Dumpling 和 TiDB Lightning 进行全量备份与恢复。 在备份与恢复场景中,如果需要全量备份少量数据(例如小于 50 GB),且不要求备份速度,你可以使用 Dumpling 从 TiDB 数据库导出数据进行备份,再使用 TiDB Lightning 将数据导入至

[转帖]使用 Dumpling 和 TiDB Lightning 备份与恢复

https://docs.pingcap.com/zh/tidb/stable/backup-and-restore-using-dumpling-lightning 本文档介绍如何使用 Dumpling 和 TiDB Lightning 进行全量备份与恢复。 在备份与恢复场景中,如果需要全量备份少

[转帖]TiDB 使用 dumpling 导出数据,并使用 lightning 导入到另一个 TiDB 库

本文介绍从 TiDB-A 库导出数据到 TiDB-B 库; 导出 Dumpling 包含在 tidb-toolkit 安装包中,可在此下载。 从 TiDB/MySQL 导出数据 需要的权限 SELECTRELOADLOCK TABLESREPLICATION CLIENT 导出到 sql 文件 先贴

[转帖]TIDB - 使用BR工具进行数据热备份与恢复

一、BR工具 BR 全称为 Backup & Restore,是 TiDB 分布式备份恢复的命令行工具,用于对 TiDB 集群进行数据备份和恢复。BR 只支持在 TiDB v3.1 及以上版本使用。 在前面的章节中,我们介绍了dumpling将数据导出的方式,也可以作为一种备份的方式,并且导出的数据

[转帖]TIDB - 使用BR工具进行数据热备份与恢复

一、BR工具 BR 全称为 Backup & Restore,是 TiDB 分布式备份恢复的命令行工具,用于对 TiDB 集群进行数据备份和恢复。BR 只支持在 TiDB v3.1 及以上版本使用。 在前面的章节中,我们介绍了dumpling将数据导出的方式,也可以作为一种备份的方式,并且导出的数据

[转帖]使用 Dumpling 导出数据

16 Contributors 使用数据导出工具 Dumpling,你可以把存储在 TiDB 或 MySQL 中的数据导出为 SQL 或 CSV 格式,用于逻辑全量备份。Dumpling 也支持将数据导出到 Amazon S3 中。 要快速了解 Dumpling 的基本功能,建议先观看下面的培训视频

[转帖]TiDB的使用限制

https://docs.pingcap.com/zh/tidb/stable/tidb-limitations 本文会将详细描述 TiDB 中常见的使用限制,包括:标识符长度,最大支持的数据库、表、索引、分区表、序列等的个数。 标识符长度限制 标识符类型最大长度(字符) Database 64 T

[转帖]TiDB Control 使用说明

https://docs.pingcap.com/zh/tidb/stable/tidb-control TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多用于调试。本文介绍了 TiDB Control 的主要功能和各个功能的使用方法。 注意 TiDB Contr

[转帖]TiDB 最佳实践

https://docs.pingcap.com/zh/tidb/stable/tidb-best-practices 本文档总结使用 TiDB 时的一些最佳实践,主要涉及 SQL 使用和 OLAP/OLTP 优化技巧,特别是一些 TiDB 专有的优化开关。 建议先阅读讲解 TiDB 原理的三篇文章