TiDB亿级数据亚秒响应查询将MySql数据全量迁移到TiDB

news2025/3/6 16:06:35

目录

  • 1 下载安装TiDB工具包
    • 1.1 检查最新版本
    • 1.2 下载tidb-toolkit
  • 2 Dumpling导出数据
    • 2.1 Dumpling工具简介
    • 2.2 导出需要的权限
    • 2.3 创建用户并授权
    • 2.4 验证数据库
    • 2.5 导出sql文件
    • 2.6 查看导出文件
  • 3 TiDB Lightning导入数据
    • 3.1 TiDB Lightning简介
    • 3.2 TiDB Lightning 整体架构
    • 3.3 配置tidb-lightning.toml
    • 3.4 执行导入命令
    • 3.5 检查是否导入成功


1 下载安装TiDB工具包

在这里插入图片描述

安装包位置在https://download.pingcap.org/tidb-toolkit-{version}-linux-amd64.tar.gz

  • {version}:为 Dumpling 的版本号,可以通过 Dumpling Release https://github.com/pingcap/dumpling/releases 查看当前已发布版本

1.1 检查最新版本

通过 Dumpling Releasehttps://github.com/pingcap/dumpling/releases 查看当前已发布版本,检查发现Dumpling当前版本是4.0.11

在这里插入图片描述

1.2 下载tidb-toolkit

# 下载工具包
wget https://download.pingcap.org/tidb-toolkit-v5.0.6-linux-amd64.tar.gz
# 解压文件
tar -zxvf tidb-toolkit-v5.0.6-linux-amd64.tar.gz

2 Dumpling导出数据

2.1 Dumpling工具简介

Dumpling 是使用 go 开发的数据备份工具,项目地址可以参考 Dumplinghttps://github.com/pingcap/dumpling

Dumpling命令参数列表

主要选项用途默认值
-V 或 --version输出 Dumpling 版本并直接退出
-B 或 --database导出指定数据库
-T 或 --tables-list导出指定数据表
-f 或 --filter导出能匹配模式的表,语法可参考 table-filter*.*(导出所有库表)
–case-sensitivetable-filter 是否大小写敏感false,大小写不敏感
-h 或 --host连接的数据库主机的地址“127.0.0.1”
-t 或 --threads备份并发线程数4
-r 或 --rows将 table 划分成 row 行数据,一般针对大表操作并发生成多个文件。
-L 或 --logfile日志输出地址,为空时会输出到控制台“”
–loglevel日志级别 {debug,info,warn,error,dpanic,panic,fatal}“info”
–logfmt日志输出格式 {text,json}“text”
-d 或 --no-data不导出数据,适用于只导出 schema 场景
–no-header导出 csv 格式的 table 数据,不生成 header
-W 或 --no-views不导出 viewtrue
-m 或 --no-schemas不导出 schema,只导出数据
-s 或–statement-size控制 INSERT SQL 语句的大小,单位 bytes
-F 或 --filesize将 table 数据划分出来的文件大小,需指明单位(如 128B, 64KiB, 32MiB, 1.5GiB
–filetype导出文件类型(csv/sql)“sql”
-o 或 --output导出文件路径“./export-${time}”
-S 或 --sql根据指定的 sql 导出数据,该选项不支持并发导出
–consistencyflush: dump 前用 FTWRL snapshot: 通过 TSO 来指定 dump 某个快照时间点的 TiDB 数据 lock: 对需要 dump 的所有表执行 lock tables read 命令 none: 不加锁 dump,无法保证一致性 auto: 对 MySQL 使用 --consistency flush;对 TiDB 使用 --consistency snapshot“auto”
–snapshotsnapshot tso,只在 consistency=snapshot 下生效
–where对备份的数据表通过 where 条件指定范围
-p 或 --password连接的数据库主机的密码
-P 或 --port连接的数据库主机的端口4000
-u 或 --user连接的数据库主机的用户名“root”
–dump-empty-database导出空数据库的建库语句true
–ca用于 TLS 连接的 certificate authority 文件的地址
–cert用于 TLS 连接的 client certificate 文件的地址
–key用于 TLS 连接的 client private key 文件的地址
–csv-delimitercsv 文件中字符类型变量的定界符‘"’
–csv-separatorcsv 文件中各值的分隔符‘,’
–csv-null-valuecsv 文件空值的表示“\N”
–escape-backslash使用反斜杠 (\) 来转义导出文件中的特殊字符true
–output-filename-template以 golang template 格式表示的数据文件名格式 支持 {{.DB}}{{.Table}}{{.Index}} 三个参数 分别表示数据文件的库名、表名、分块 ID‘{{.DB}}.{{.Table}}.{{.Index}}’
–status-addrDumpling 的服务地址,包含了 Prometheus 拉取 metrics 信息及 pprof 调试的地址“:8281”
–tidb-mem-quota-query单条 dumpling 命令导出 SQL 语句的内存限制,单位为 byte。对于 v4.0.10 或以上版本,若不设置该参数,默认使用 TiDB 中的 mem-quota-query 配置项值作为内存限制值。对于 v4.0.10 以下版本,该参数值默认为 32 GB34359738368
–params为需导出的数据库连接指定 session 变量,可接受的格式: “character_set_client=latin1,character_set_connection=latin1”

2.2 导出需要的权限

  • SELECT
  • RELOAD
  • LOCK TABLES
  • REPLICATION CLIENT

2.3 创建用户并授权

#创建tidb用户密码是 tidb并授权外部所以IP可以访问
CREATE USER 'tidb'@'%' IDENTIFIED BY 'tidb';
# 授权SELECT,RELOAD,LOCK TABLES,REPLICATION CLIENT 权限给tidb用户
GRANT SELECT,RELOAD,LOCK TABLES,REPLICATION CLIENT ON *.* TO 'tidb'@'%';
# 刷新数据库
FLUSH PRIVILEGES;

2.4 验证数据库

mysql -u tidb -h 172.16.44.47 -p
show databases;
show tables;

在这里插入图片描述

2.5 导出sql文件

Dumpling 默认导出数据格式为 sql 文件。也可以通过设置 --filetype sql 导出数据到 sql 文件:

./bin/dumpling -h 172.16.44.47 -P 3306 -B employees  -u tidb -p tidb --filetype sql --threads 10 -o /tmp/test -F 256MiB

执行命令后从mysql中导出了文件

在这里插入图片描述

2.6 查看导出文件

cd /tmp/test/ ; ll

在这里插入图片描述

3 TiDB Lightning导入数据

3.1 TiDB Lightning简介

TiDB Lightning 是一个将全量数据高速导入到 TiDB 集群的工具。

​ TiDB Lightning 有以下两个主要的使用场景:一是大量新数据的快速导入;二是全量备份数据的恢复。目前,Lightning 支持 Dumpling 或 CSV 输出格式的数据源。你可以在以下两种场景下使用 Lightning:

  • 迅速导入大量新数据。
  • 恢复所有备份数据。

3.2 TiDB Lightning 整体架构

在这里插入图片描述

3.3 配置tidb-lightning.toml

vi tidb-lightning.toml

[lightning]
# 日志
level = "info"
file = "tidb-lightning.log"

[tikv-importer]
# 选择使用的 local 后端
backend = "local"
# 设置排序的键值对的临时存放地址,目标路径需要是一个空目录
"sorted-kv-dir" = "/tmp/sorted-kv-dir"

[mydumper]
# 源数据目录。
data-source-dir = "/tmp/test/"

[tidb]
# 目标集群的信息
host = "192.168.64.152"
port = 4000
user = "root"
password = ""
# 表架构信息在从 TiDB 的“状态端口”获取。
status-port = 10080
# 集群 pd 的地址
pd-addr = "192.168.64.152:2379"

3.4 执行导入命令

./bin/tidb-lightning -config tidb-lightning.toml

出现错误不需要理会,等待导入完成

在这里插入图片描述

导入完毕后,TiDB Lightning 会自动退出。若导入成功,日志的最后一行会显示 tidb lightning exit

在这里插入图片描述

3.5 检查是否导入成功

登录TiDB检查导入是否成功

mysql -u root -P 4000 -h 192.168.64.152

在这里插入图片描述

到这里基本上已经确定导入成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/631185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯【第14届国赛】Python B组

本题解仅代表个人观点,仅供参考,欢迎各位指正 A:弹珠堆放 【问题描述】 小蓝有 20230610 颗磁力弹珠,他对金字塔形状尤其感兴趣,如下图所示: 高度为 1 的金字塔需要 1 颗弹珠; 高度为 2 的金字…

【Jetpack】使用 Room 中的 Migration 升级数据库异常处理 ( 多个数据库版本的迁移 | fallbackToDestructiveMigration() 函数处理升级异常 )

文章目录 一、Room#Migration 迁移工具升级数据库二、多个数据库版本的迁移三、数据库异常处理 - RoomDatabase.Builder#fallbackToDestructiveMigration() 函数四、完整代码示例 一、Room#Migration 迁移工具升级数据库 Room Migration 数据库迁移工具 是 Android Jetpack Arc…

【AI实战营第二期】第三次作业——基于 RTMDet 的气球检测(包含数据集)

作业:基于 RTMDet 的气球检测 背景:熟悉目标检测和 MMDetection 常用自定义流程。 任务: 基于提供的 notebook,将 cat 数据集换成气球数据集; 按照视频中 notebook 步骤,可视化数据集和标签; 使用MMDetection算法库…

01_Linux字符设备驱动开发

目录 字符设备驱动简介 驱动模块的加载和卸载 字符设备注册与注销 实现设备的具体操作函数 添加LICENSE和作者信息 Linux设备号的组成 设备号的分配 chrdevbase字符设备驱动开发实验 创建VSCode工程 添加头文件路径 编写实验程序 C库文件操作基本函数 编写测试APP…

苹果Vision Pro正式发布,下一个iPhone诞生了?

在库克即将退休之际,苹果开启了下一个十年。 2023年6月6日,在苹果WWDC开发者大会上,苹果发布了15寸的MacBook Air,以及一众iOS 17、iPad OS 17、Mac OS等系统的更新。当我们觉得这些常规更新有点不痛不痒,甚至想大呼“…

​selenium中元素定位正确但是操作失败,6种解决办法全稿定

selenium中元素定位正确但是操作失败的原因无外乎以下4种: 一、页面没加载好 解决方法:添加等待方法,如: time.sleep() 二、页面提交需要等待给数据后台 解决方法:添加等待方法,如: time.sl…

一套完整的三甲医院医学影像科PACS系统源码

一、PACS系统概述: 基于VC MSSQL开发的一套三甲医院医学影像PACS系统源码,集成3D影像后处理技术和功能,包括三维多平面重建、三维容积重建、三维表面重建、三维虚拟内窥镜、最大/小密度投影、心脏动脉钙化分析等能满足影像科功能。 二、PAC…

C/C++ 作用域,生命周期,执行线程的概念

相互影响 在C中,对象的生命周期、作用域和执行线程是三个相互关联但又相对独立的概念。它们共同决定了对象在程序中的行为和状态。下面我将详细解释这三个概念以及它们之间的关系和互相影响。 生命周期:对象的生命周期是指从对象被创建(构造…

Python暑假自律打卡学习班,免费,速来(2)

小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 和猫妹学Python,一起趣味学编程。 很快就放暑假了,还有20多天吧! 猫妹对这个暑假相当期待啊, 想想今年的五一劳动节有多火爆…

仙境传说RO:npc汉化方法

仙境传说RO:npc汉化方法 大家好我是艾西,在我们说了那么多期的教程中大家应该有发现游戏内很多都还是英文的,如果对于国内的玩家开展这个游戏可能有些不熟悉的小伙伴玩起来会有点难受,今天艾西跟大家分享下怎么汉化NPC等。 我们…

异常数据检测 | Python实现基于高斯概分布的异常数据检测

文章目录 文章概述模型描述源码分享学习小结参考资料文章概述 高斯分布也称为正态分布。它可以被用来进行异常值检测,不过我们首先要假设我们的数据是正态分布的。不过这个假设不能适应于所有数据集。但如果我们做了这种假设那么它将会有一种有效的方法来发现异常值。 模型描述…

多元分类预测 | Matlab人工蜂群算法(ABC)优化随机森林(RF)的分类预测,ABC-RF分类预测模型,多输入单输出模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab人工蜂群算法(ABC)优化随机森林(RF)的分类预测,ABC-RF分类预测模型,多输入单输出模型 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,…

「一文讲透」快消行业营销数字化转型

历经疫情的洗礼,各行业都在开启新一轮市场需求的盘点,无论消费者习惯、市场零售终端还是渠道分销。在供需变革、消费升级、服务传达诸多方面,都对品牌商产-营-销-服系统化管理提出了新的挑战。 面对激烈的市场环境竞争,品牌商核心…

代码随想录第56天

1.两个字符串的删除操作 动规五部曲,分析如下: 确定dp数组(dp table)以及下标的含义 dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2,想要达到相等,所需要删除元…

2023了,软件测试如何获得高薪?

做自动化测试后悔吗? 后悔,真的后悔! 后悔没有早点学..... 虽然到处都在散播35的焦虑,姑且信之,那么反问你,如果你30岁了,那么给你5年,能够在某个领域成为专家呢?希望你…

『手撕 Mybatis 源码』05 - SqlSession 执行主流程

SqlSession 执行主流程 获取 BoundSql 经过加载完所有配置之后,继续梳理执行 sql 的过程 public class MybatisTest {Testpublic void test1() throws IOException {...// 4. 委派给 Executor 来执行,Executor 执行时又会调用很多其他组件&#xff08…

ceph分布式存储

1、存储基础 //单机存储设备 ●DAS(直接附加存储,是直接接到计算机的主板总线上去的存储) IDE、SATA、SCSI、SAS、USB 接口的磁盘 所谓接口就是一种存储设备驱动下的磁盘设备,提供块级别的存储 ●NAS(网络附加存储&am…

LCHub 6 月低代码平台排行榜发布

LCHub低代码平台排行榜 2023 国产低代码名录和产品信息一览 2023国产低代码平台排行榜 低代码最新视频课程 最新解读报告:2023年6月低代码平台排行榜:维格表 伙伴云上升最快 共有120个低代码平台参与排名, 点击查看排名规则更新 TOP 10 低代码平台 6月 LCHub 指数走势

【linux基础15】用户管理

文章目录 一. 用户和组1. 用户和组介绍用户分类UIDGID 2. /etc/passwd和/etc/shadow用户信息文件:密码文件: 二、linux账号管理1. 用户操作1.1. 新增用户1.2. 指定UID、添加所属组、执行家目录1.3. 设置密码:passwd1.4 修改用户家目录&#x…

安卓大作业 图书管理APP

系列文章 安卓大作业 图书管理APP 文章目录 系列文章1.背景2.功能3. 源代码获取 1.背景 本次实验设计的是一个图书管理系统,系统的整体目录如下: 2.功能 针对于每个java类或者Activity进行说明&#x…