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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: TiDB亿级数据亚秒响应查询将MySql数据全量迁移到TiDB

1 下载安装TiDB工具包


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

  • {version}:为 Dumpling 的版本号,可以通过 Dumpling Release

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-sensitive table-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 不导出 view true
-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 导出数据,该选项不支持并发导出

image.png



–snapshot snapshot 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-delimiter csv 文件中字符类型变量的定界符 ‘"’
–csv-separator csv 文件中各值的分隔符 ‘,’
–csv-null-value csv 文件空值的表示 “\N”
–escape-backslash 使用反斜杠 (\) 来转义导出文件中的特殊字符 true

image.png

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

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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
3月前
|
SQL 缓存 监控
MySQL缓存机制:查询缓存与缓冲池优化
MySQL缓存机制是提升数据库性能的关键。本文深入解析了MySQL的缓存体系,包括已弃用的查询缓存和核心的InnoDB缓冲池,帮助理解缓存优化原理。通过合理配置,可显著提升数据库性能,甚至达到10倍以上的效果。
|
3月前
|
SQL 存储 关系型数据库
MySQL体系结构详解:一条SQL查询的旅程
本文深入解析MySQL内部架构,从SQL查询的执行流程到性能优化技巧,涵盖连接建立、查询处理、执行阶段及存储引擎工作机制,帮助开发者理解MySQL运行原理并提升数据库性能。
|
3月前
|
SQL 关系型数据库 MySQL
MySQL的查询操作语法要点
储存过程(Stored Procedures) 和 函数(Functions) : 储存过程和函数允许用户编写 SQL 脚本执行复杂任务.
248 14
|
3月前
|
SQL 关系型数据库 MySQL
MySQL的查询操作语法要点
以上概述了MySQL 中常见且重要 的几种 SQL 查询及其相关概念 这些知识点对任何希望有效利用 MySQL 进行数据库管理工作者都至关重要
127 15
|
3月前
|
SQL 监控 关系型数据库
SQL优化技巧:让MySQL查询快人一步
本文深入解析了MySQL查询优化的核心技巧,涵盖索引设计、查询重写、分页优化、批量操作、数据类型优化及性能监控等方面,帮助开发者显著提升数据库性能,解决慢查询问题,适用于高并发与大数据场景。
|
3月前
|
SQL 关系型数据库 MySQL
MySQL入门指南:从安装到第一个查询
本文为MySQL数据库入门指南,内容涵盖从安装配置到基础操作与SQL语法的详细教程。文章首先介绍在Windows、macOS和Linux系统中安装MySQL的步骤,并指导进行初始配置和安全设置。随后讲解数据库和表的创建与管理,包括表结构设计、字段定义和约束设置。接着系统介绍SQL语句的基本操作,如插入、查询、更新和删除数据。此外,文章还涉及高级查询技巧,包括多表连接、聚合函数和子查询的应用。通过实战案例,帮助读者掌握复杂查询与数据修改。最后附有常见问题解答和实用技巧,如数据导入导出和常用函数使用。适合初学者快速入门MySQL数据库,助力数据库技能提升。
|
4月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
413 10
|
4月前
|
存储 关系型数据库 MySQL
使用命令行cmd查询MySQL表结构信息技巧分享。
掌握了这些命令和技巧,您就能快速并有效地从命令行中查询MySQL表的结构信息,进而支持数据库维护、架构审查和优化等工作。
473 9
|
3月前
|
SQL 监控 关系型数据库
MySQL高级查询技巧:子查询、联接与集合操作
本文深入解析了MySQL高级查询的核心技术,包括子查询、联接和集合操作,通过实际业务场景展示了其语法、性能差异和适用场景,并提供大量可复用的代码示例,助你从SQL新手进阶为数据操作高手。
|
3月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
169 3

推荐镜像

更多