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

news/2024/5/19 14:50:57 标签: mysql, tidb, 数据库

目录

  • 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

在这里插入图片描述

tidbtoolkit_19">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 整体架构

在这里插入图片描述

tidblightningtoml_142">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.niftyadmin.cn/n/418807.html

相关文章

1.javascript发展历史和应用方向

1.1 JavaScript简介 JavaScript是一种高级的、解释性的编程语言,常用于为网页添加交互性和动态功能。它最初由Netscape公司开发,旨在为网页添加简单的脚本功能,后来由ECMA(欧洲计算机制造商协会)制定标准,…

计算机网络之网络层

四.网络层:数据平面 4.1 网络层概述 网络层被分解为两个相互作用的部分,即数据平面和控制平面。 数据平面决定到达路由器输入链路之一的数据报如何转发到该路由器的输出链路之一,转发方式有: 传统的IP转发:转发基于…

春招后,功能测试还能找到工作了吗?

在一线大厂,没有测试这个岗位,只有测开这个岗位。这几年,各互联网大厂技术高速更新迭代,软件测试行业也正处于转型期。传统的功能测试技术逐步淘汰,各种新的测试技术层出不穷,测试人员的薪资也水涨船高。与…

爆款视频批量剪辑生成系统源码部署

创建视频 该接口用于创建抖音视频(支持话题, 小程序等功能)。该接口适用于抖音。 使用限制 抖音的 OAuth API 以https://open.douyin.com/ 开头。挂载小程序请先完成注册开发者平台账号。创建抖音视频后, 会有一个审核过程, 期间只有自己可见。如果发…

httprunner 2.x的基本使用(一)

上一章: 下一章: httprunner 2.x的基本使用(二)_做测试的喵酱的博客-CSDN博客 一、参考地址: 使用说明_httprunner2.0 概述及使用说明 二、介绍 HttpRunner是一款面向 HTTP(S) 协议的通用测试框架,只需…

GreenPlum版本升级

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

使用nginx实现不修改浏览器地址(不触发重定向)转发网络流量

近日笔者需要实现一个网络流量转发的需求。要求很简单:将浏览器的请求转发到一个指定的域名,需要提供一个https端口并且把http端口转发到https端口。由于笔者对nginx的认知有限,因此磕磕绊绊研究了一阵,将结果写出来,以…

嵌入式Linux开发:迅为教程学习记录

文章目录 驱动开发零散篇驱动开发篇并发与竞争篇系统编程 驱动开发零散篇 嵌入式Linux驱动开发(一)Helloworld驱动模块 嵌入式Linux驱动开发(二)字符设备驱动模块 嵌入式Linux驱动开发(三)ioctl函数 嵌入…