TiDB实战篇-TiDB Lightning 导入数据

news/2024/5/19 11:55:42 标签: tidb

简介

使用TiDB Lightning 导入数据。

原理

TiKV进入导入模式

它是使用物理导入的模式,将SQL文件直接导入到TiKV中,它是一种初始化的导入,也就是说目标的数据库和表都是不能够存在的(注意事项,在这种方式导入的时候TiKV要切换到导入模式才行) 。

初始化表元数据信息

将导入的文件分成区块

切分的区块转存到本地

 

导入数据到TiKV集群

 

 先导入数据,然后在导入索性。

对于导入的数据进行校验

切回到普通模式正常提供服务

 

导入模式的比较

Logical Import Mode 就是执行SQL的方式。 

适用场景

导入限制

  • 如果有TiFlash的时候,会影响导入的速度。
  • 如果表里面的字符集是GBK的话,那么TiDB v5.4之前是不支持的。
  • 如果源文件是Apache Parquet文件,不支持导入。 

硬件需求

因为它会跑满机器的性能。

region-concurency 这个配置能够限制TiDB Lighning导入数据时候使用的CPU核数

前置检查

版本v4.0之后才支持上面的这种导入方式。 

目标库需要的权限

并行导入(v5.3以后) 

MySQL分库分表收敛场景

 

 本身数据很大

注意事项

TiDB Lightning的使用  

安装

下载

TiDB 社区版 | PingCAP

安装

#解压下载好的安装包
tar -zxvf tidb-community-toolkit-v6.5.0-linux-amd64.tar.gz
#进入到文件夹以后解压出dumpling
cd tidb-community-toolkit-v6.5.0-linux-amd64
tar -zxvf tidb-lightning-v6.5.0-linux-amd64.tar.gz

vi /etc/profile.d/my.sh
#TOOLKIT_HOME
export TOOLKIT_HOME=/root/tidb-community-toolkit-v6.5.0-linux-amd64
export PATH=$PATH:$TOOLKIT_HOME
source /etc/profile.d/my.sh

打印

[root@master tidb-community-toolkit-v6.5.0-linux-amd64]# tidb-lightning
Verbose debug logs will be written to /tmp/lightning.log.2023-04-16T15.24.04+0800

tidb lightning encountered error: [Lightning:Config:ErrInvalidConfig]tikv-importer.backend must not be empty!

使用 

前期准备

TiDB实战篇-数据导出工具Dumping_顶尖高手养成计划的博客-CSDN博客

#先有对应的SQL文件,这里是TiDB Dumpling导出来的数据(这里我备份了是test库的数据)
cd /tmp/test/sql

[root@master sql]# ll
total 16
-rw-r--r-- 1 root root 146 Apr 16 12:06 metadata
-rw-r--r-- 1 root root  59 Apr 16 12:06 test.emp.0000000010000.sql
-rw-r--r-- 1 root root 139 Apr 16 12:06 test.emp-schema.sql
-rw-r--r-- 1 root root  95 Apr 16 12:06 test-schema-create.sql

#连接到数据库把test库给删除了
mysql -h127.0.0.1 -P4000 -uroot -ptidb

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| INFORMATION_SCHEMA |
| METRICS_SCHEMA     |
| PERFORMANCE_SCHEMA |
| mysql              |
| test               |
+--------------------+
5 rows in set (0.00 sec)

mysql> drop database test;
Query OK, 0 rows affected (0.34 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| INFORMATION_SCHEMA |
| METRICS_SCHEMA     |
| PERFORMANCE_SCHEMA |
| mysql              |
+--------------------+
4 rows in set (0.00 sec)

准备执行的配置文件

vi tidb-lightning.toml

[lightning]
# 数据的并发数。默认与逻辑 CPU 的数量相同。
# 混合部署的情况下可以将其大小配置为逻辑 CPU 数的 75%,以限制 CPU 的使用。
# region-concurrency = 1

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


[tikv-importer]
# 是否允许启动多个 TiDB Lightning 实例(**physical import mode**)并行导入数据到一个或多个目标表。默认取值为 false。注意,这个参数**不是用于增量导入数据**,仅限目标表为空的场景使用。
# 多个 TiDB Lightning 实例(physical import mode)同时导入一张表时,此开关必须设置为 true。但前提是目标表不能存在数据,即所有的数据都只能是由 TiDB Lightning 导入。
incremental-import = true

#backend 设置成 pysical import 模式
backend = "local"

# 设置本地临时存储路径。
sorted-kv-dir = "/tmp/sorted-kv-dir"

[mydumper]
# 本地源数据目录或外部存储 URL,这里也就是Dumpling导出数据的目录文件
data-source-dir = "/tmp/test/sql"

# 只导入与该通配符规则相匹配的表。详情见相应章节。
filter = ['*.*', '!mysql.*', '!sys.*', '!INFORMATION_SCHEMA.*', '!PERFORMANCE_SCHEMA.*', '!METRICS_SCHEMA.*', '!INSPECTION_SCHEMA.*']

[tidb]
# 目标集群的信息。tidb-server 的地址,填一个即可。
host = "192.168.66.10"
port = 4000
user = "root"
# 设置连接 TiDB 的密码,可为明文或 Base64 编码。
password = "tidb"

# 表结构信息从 TiDB 的“status-port”获取。
status-port = 10080

# pd-server 的地址,填一个即可。
pd-addr = "192.168.66.10:2379"

 执行

nohup tidb-lightning -config tidb-lightning.toml > nohup.out &

mysql -h127.0.0.1 -P4000 -uroot -ptidb

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| INFORMATION_SCHEMA |
| METRICS_SCHEMA     |
| PERFORMANCE_SCHEMA |
| mysql              |
| test               |
+--------------------+
5 rows in set (0.00 sec)

mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from emp;
+------+
| id   |
+------+
|    1 |
+------+
1 row in set (0.00 sec)

数据过滤导入

断点续传

 

 


http://www.niftyadmin.cn/n/229068.html

相关文章

解析Redis数据库?

Redis 是一个开源、支持网络、基于内存、键值对型的NOSQL数据库。 1. Redis是一个高性能的Key/Value数据库 2. 基于内存 3. 数据类型丰富 4. 持久化 AOF 5. 订阅/发布模型 Redis支持五种数据类型:string(字符串),hash&#…

面试题之vue的响应式

文章目录前言一、响应式是什么?二、Object.defineProperty二、简单模拟vue三、深度监听四、监听数组总结前言 为了应对面试而进行的学习记录,可能不够有深度甚至有错误,还请各位谅解,并不吝赐教,共同进步。 一、响应式…

Python基础教程:__call__用法

人生苦短,我用python python 安装包资料:点击此处跳转文末名片获取 __call__可以使得方法变成可被调用对象; (PS:python中的方法和普通函数有点区别: 方法的第一个参数是类实例) 允许一个类的实例像函数一样被调用。 实质上说…

一、摄影基础课

目录第一章 控制曝光1. 曝光及曝光三要素1.1 曝光1.2 光圈1.3 快门1.4 感光度(ISO)1.5 曝光三要素之间的关系2. 曝光模式3. 测光模式4. 曝光补偿第二章 控制对焦1. 对焦区域2. 对焦模式第三章 控制色彩第一章 控制曝光 1. 曝光及曝光三要素 1.1 曝光 …

videoPictureInPicture,视频画中画播放初探

从Chrome 70版本开始video元素开始支持画中画播放,简单写个demo体验一下 简介 在触发画中画之后视频会始终在右下角悬浮,不论是否在当前标签页或者是浏览器是否最小化。 可以在chrome内看任意视频时点击控制条的画中画按钮即可。 API 文档&#xff1…

HTB-Monteverde

HTB-Monteverde信息收集smbclient5985端口RPCmhope信息收集 smbclient 允许匿名登录,但是没有工作组。 5985端口 目录扫描,存在wsman,后续可能会涉及到winrm。 RPC rpcclient -U "" -N 10.10.10.172收集用户信息enumdomusers。…

MVPowerMozi命令执行漏洞

MVPowerMozi是一款网络视频监控软件,该软件存在命令执行漏洞。攻击者可以通过构造恶意请求,利用该漏洞在受影响的系统上执行任意命令。 漏洞影响 MVPowerMozi 1.2.1.5及之前版本 漏洞描述 MVPowerMozi存在一个未经身份验证的命令执行漏洞,攻击…

Bean对象的作用域和生命周期

文章目录:一.Bean的作用域 (1)Bean作用域的含义 (2)Bean的6种作用域 二.Bean的生命周期(1)开辟内存空间 (2) 属性注入 (3)初始化 (4)使用Bean (…