TiDB-从0到1-数据导出导入

news2025/4/13 13:47:00

在这里插入图片描述

TiDB从0到1系列

  • TiDB-从0到1-体系结构
  • TiDB-从0到1-分布式存储
  • TiDB-从0到1-分布式事务
  • TiDB-从0到1-MVCC
  • TiDB-从0到1-部署篇
  • TiDB-从0到1-配置篇
  • TiDB-从0到1-集群扩缩容

一、数据导出

TiDB中通过Dumpling来实现数据导出,与MySQL中的mysqldump类似,其属于逻辑备份,备份出的文件格式为SQL或CSV。
同样与MySQL中的mysqldump应用场景类似,Dumping最好使用于对小规模的数据备份(导出)

二、Dumpling实操

1、下载安装

wget https://download.pingcap.org/tidb-community-toolkit-v7.5.1-linux-amd64.tar.gz
------
tar -xvf tidb-community-toolkit-v7.5.1-linux-amd64.tar.gz

2、解压需要的工具包
在这里插入图片描述

tar xvf dumpling-v7.5.1-linux-amd64.tar.gz

2、权限控制
使用dumpling的用户需要有对应的权限

  • select
  • reload
  • lock tables
  • replication client
  • process

3、参数

./dumpling --help
-----------------
Flags:
      --allow-cleartext-passwords         Allow passwords to be sent in cleartext (warning: don't use without TLS)
      --azblob.access-tier string         Specify the storage class for azblob
      --azblob.account-key string         Specify the account key for azblob
      --azblob.account-name string        Specify the account name for azblob
      --azblob.encryption-key string      Specify the server side encryption customer provided key
      --azblob.encryption-scope string    Specify the server side encryption scope
      --azblob.endpoint string            (experimental) Set the Azblob endpoint URL
      --azblob.sas-token string           Specify the SAS (shared access signatures) for azblob
      --ca string                         The path name to the certificate authority file for TLS connection
      --case-sensitive                    whether the filter should be case-sensitive
      --cert string                       The path name to the client certificate file for TLS connection
      --complete-insert                   Use complete INSERT statements that include column names
  -c, --compress string                   Compress output file type, support 'gzip', 'snappy', 'zstd', 'no-compression' now
      --consistency string                Consistency level during dumping: {auto|none|flush|lock|snapshot} (default "auto")
      --csv-delimiter string              The delimiter for values in csv files, default '"' (default "\"")
      --csv-line-terminator string        The line terminator for csv files, default '\r\n' (default "\r\n")
      --csv-null-value string             The null value used when export to csv (default "\\N")
      --csv-separator string              The separator for csv files, default ',' (default ",")
  -B, --database strings                  Databases to dump
      --dump-empty-database               whether to dump empty database (default true)
      --escape-backslash                  use backslash to escape special characters (default true)
  -F, --filesize string                   The approximate size of output file
      --filetype string                   The type of export file (sql/csv)
  -f, --filter strings                    filter to select which tables to dump (default [*.*,!/^(mysql|sys|INFORMATION_SCHEMA|PERFORMANCE_SCHEMA|METRICS_SCHEMA|INSPECTION_SCHEMA)$/.*])
      --gcs.credentials-file string       (experimental) Set the GCS credentials file path
      --gcs.endpoint string               (experimental) Set the GCS endpoint URL
      --gcs.predefined-acl string         (experimental) Specify the GCS predefined acl for objects
      --gcs.storage-class string          (experimental) Specify the GCS storage class for objects
      --help                              Print help message and quit
  -h, --host string                       The host to connect to (default "127.0.0.1")
      --key string                        The path name to the client private key file for TLS connection
  -L, --logfile path                      Log file path, leave empty to write to console
      --logfmt format                     Log format: {text|json} (default "text")
      --loglevel string                   Log level: {debug|info|warn|error|dpanic|panic|fatal} (default "info")
  -d, --no-data                           Do not dump table data
      --no-header                         whether not to dump CSV table header
  -m, --no-schemas                        Do not dump table schemas with the data
      --no-sequences                      Do not dump sequences (default true)
  -W, --no-views                          Do not dump views (default true)
      --order-by-primary-key              Sort dump results by primary key through order by sql (default true)
  -o, --output string                     Output directory (default "./export-2024-06-26T11:19:24+08:00")
      --output-filename-template string   The output filename template (without file extension)
      --params stringToString             Extra session variables used while dumping, accepted format: --params "character_set_client=latin1,character_set_connection=latin1" (default [])
  -p, --password string                   User password
  -P, --port int                          TCP/IP port to connect to (default 4000)
  -r, --rows uint                         If specified, dumpling will split table into chunks and concurrently dump them to different files to improve efficiency. For TiDB v3.0+, specify this will make dumpling split table with each file one TiDB region(no matter how many rows is).
                                          If not specified, dumpling will dump table without inner-concurrency which could be relatively slow. default unlimited
      --s3.acl string                     (experimental) Set the S3 canned ACLs, e.g. authenticated-read
      --s3.endpoint string                (experimental) Set the S3 endpoint URL, please specify the http or https scheme explicitly
      --s3.external-id string             (experimental) Set the external ID when assuming the role to access AWS S3
      --s3.provider string                (experimental) Set the S3 provider, e.g. aws, alibaba, ceph
      --s3.region string                  (experimental) Set the S3 region, e.g. us-east-1
      --s3.role-arn string                (experimental) Set the ARN of the IAM role to assume when accessing AWS S3
      --s3.sse string                     Set S3 server-side encryption, e.g. aws:kms
      --s3.sse-kms-key-id string          KMS CMK key id to use with S3 server-side encryption.Leave empty to use S3 owned key.
      --s3.storage-class string           (experimental) Set the S3 storage class, e.g. STANDARD
      --snapshot string                   Snapshot position (uint64 or MySQL style string timestamp). Valid only when consistency=snapshot
  -s, --statement-size uint               Attempted size of INSERT statement in bytes (default 1000000)
      --status-addr string                dumpling API server and pprof addr (default ":8281")
  -T, --tables-list strings               Comma delimited table list to dump; must be qualified table names
  -t, --threads int                       Number of goroutines to use, default 4 (default 4)
      --tidb-mem-quota-query uint         The maximum memory limit for a single SQL statement, in bytes.
  -u, --user string                       Username with privileges to run the dump (default "root")
  -V, --version                           Print Dumpling version
      --where string                      Dump only selected records

4、导出数据
导出test库下的所有数据,同时指定导出文件为sql,导出目录为/tmp/test,导出线程2,每10w行数据切换一次文件,每200MB切换一次文件

./dumpling -h192.168.14.121 -P4000 -uroot -p123456 --filetype sql -t 2 -o /tmp/test -r 100000 -F200MiB -B test

在这里插入图片描述
(备份成功)

查看导出的内容
在这里插入图片描述
其中

  • metadata:数据导出时的时间,binlog位置点
  • xxx.schema.sql:建库建表语句
  • xxx.000000100.sql:数据

导出test库下t1的表中id>10的数据,同时指定导出文件为CSV,导出目录为/tmp/t1,导出线程2,每100行数据切换一次文件,每100MB切换一次文件

./dumpling -h192.168.14.121 -P4000 -uroot -p123456 --filetype csv -t 2 -o /tmp/t1 -r 100 -F100MiB -T test.t1 --where "id>10"

在这里插入图片描述
(备份成功)

查看导出的内容
在这里插入图片描述
建库\建表语句依旧是SQL文件
不过数据为CSV格式

同时Dumpling默认也是一致性备份,通过MVCC机制备份出某个时间点的快照数据

三、数据导入

TiDB中提供了一种叫TiDB Lightning(Physical Import Mode模式)的数据导入方式,因为其导入过程TiDB是不能对外提供服务的,而且数据是从本地直接导入到TiKV,所以应用场景更适合TiDB集群初始化。
整个Lightning原理如下

  • 将集群切换为导入模式
  • 创建对应库表
  • 分割导入数据源
  • 读取数据源文件
  • 将源数据文件写入本地临时文件
  • 导入临时文件到TiKV集群
  • 检验与分析
  • 将集群切换回正常模式

四、Lightning实操

1、下载安装

wget https://download.pingcap.org/tidb-community-toolkit-v7.5.1-linux-amd64.tar.gz
------
tar -xvf tidb-community-toolkit-v7.5.1-linux-amd64.tar.gz

2、解压需要的工具包
在这里插入图片描述

tar xvf tidb-lightning-v7.5.1-linux-amd64.tar.gz

3、准备配置文件

vim tidb-lighning.toml
-----------------
[lightning]
#逻辑cpu数量
#region-concurrency = 
#日志
level = "info"
file = "tidb-lighning.log"

[tikv-importer]
#开启并行导入
incremental-import = true
#设置为local模式
backend = "local"
#设置本地临时存储路径
sorted-kv-dir = "/tmp/sorted-kv-dir"

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

[tidb]
#tidb-server监听地址
host = "192.168.14.121"
port = 4000
user = "root"
password = ""
#表架构信息
status-port = 10080
#pd地址
pd-addr = "192.168.14.122:2379"

4、导入数据
我这里就将原集群清空,然后将上面-B导出的test库恢复回去

./tidb-lightning --config /opt/tidb-lighning.toml

在这里插入图片描述
(导入成功)

5、进入数据库校验
在这里插入图片描述
(验证无误)

彩蛋

TiDB-Lightning功能强大,可以通过配置文件过滤导入指定的表,同时也支持将MySQL中分库分表数据导入到TiDB中合并为一张表,还有断点续传等功能。
具体可以参考官方文档

在这里插入图片描述

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

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

相关文章

如何选择适合你的免费电子合同软件?八款工具深度对比

主流的8款免费合同软件包括:国内的e签宝、法大大、上上签、契约锁,以及国外的SignWell、PandaDoc、Signaturely、HelloSign和SignRequest。 随着技术的进步,尤其是区块链技术的应用,电子合同的安全性和可信度正在逐渐增强。这些技…

如何提取mac app中的应用程序图标 x.app图标位置

在macos系统中安装的应用程序 .app的图标都是 以 .icns结尾的,默认位于 .app应用程序包中的Contents/Resources/目录下,只要是在这个目录下的 .icns文件就是这个应用的图标,如:mac版微信的图标就是 /Applications/WeChat.app/Co…

5个顶级开源Agent框架,你必须知道!

进入2024年,人工智能的发展已经达到了前所未有的高度,尤其是在Agent框架这一领域,出现了几个引人注目的技术成果。这些框架在智能规划、用户体验增强、记忆处理、以及大型模型调用等方面有着卓越表现,对AI界的未来发展提供了值得期…

利用多模态大模型,构建自动驾驶场景检索解决方案 | 创新场景

ITValue 痛点 在自动驾驶数据闭环的业务场景中,企业面临的挑战是难以高效的从PB级的视频和图片中选取有价值的数据,以训练和优化自动驾驶算法。 解决方案 为解决该挑战,亚马逊云科技利用大语言模型和图像文本多模态嵌入空间架构,构…

CY5-NHS生物标记应用146368-14-1

在生物科学研究和技术应用领域,荧光标记技术已成为一种科研工具。其中,CY5-NHS以其荧光特性和标记能力,在生物标记应用中扮演着科研角色。 CY5-NHS的特性与优势 CY5-NHS是一种荧光标记试剂,其荧光基团CY5赋予其强烈的荧光信号和…

【vue3】【vant】 移动本草纲目案例发布收藏项目源码

更多项目点击👆👆👆完整项目成品专栏 【vue3】【vant】 移动本草纲目案例发布收藏项目源码 获取源码方式项目说明:其中功能包括 项目包含:项目运行环境文件截图 获取源码方式 加Q群:632562109项目说明&am…

flink的窗口

目录 窗口分类 1.按照驱动类型分类 1. 时间窗口(Time window) 2.计数窗口(Count window) 2.按照窗口分配数据的规则分类 窗口API分类 API调用 窗口分配器器: 窗口函数 增量聚合函数: 全窗口函数…

llamafactory-llama3微调中文数据集

一、定义 https://github.com/SmartFlowAI/Llama3-Tutorial/tree/main 基准模型测试opencompass 离线测评数据准备微调训练合并测试人工审核对比 二、实现 基准模型测试 基准模型 llama3-8b https://zhuanlan.zhihu.com/p/694818596? https://github.com/SmartFlowAI/Llam…

什么样的台灯适合学生使用?五款暑假必入护眼大路灯分享

什么样的台灯适合学生使用?现在近视越来越低龄化,戴眼镜的小朋友越来越多,每每看着自己孩子眼睛贴到作业本上写作业,我的心都会提到嗓子眼。去医院一检查,果然,远视储备即将告罄,必须要防护了&a…

深度剖析:前端如何驾驭海量数据,实现流畅渲染的多种途径

文章目录 一、分批渲染1、setTimeout定时器分批渲染2、使用requestAnimationFrame()改进渲染2.1、什么是requestAnimationFrame2.2、为什么使用requestAnimationFrame而不是setTimeout或setInterval2.3、requestAnimationFrame的优势和适用场景 二、滚动触底加载数据三、Elemen…

【项目实训】解决前后端跨域问题

由于前端框架使用vue,后端使用flask,因此需要解决前后端通信问题 在vue.config.js中修改 module.exports defineConfig({transpileDependencies: true,lintOnSave:false, }) // 跨域配置 module.exports {devServer: { //记住&#x…

2024 年适用于 Windows 11/10/8/7 的最佳 SSD 磁盘克隆软件

磁盘克隆软件对于用户在发生数据灾难时保证数据/系统安全至关重要。克隆软件可以创建驱动器的副本并保持数据相同。如果发生数据灾难,您可以设置克隆驱动器以克隆回数据/驱动器。或者您可以直接使用克隆的驱动器继续工作。 除了传统的 HDD,Windows 11/1…

使用nvm切换node版本时报错:exit status 1解决办法

作者介绍:计算机专业研究生,现企业打工人,从事Java全栈开发 主要内容:技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流(SCI论文两篇) 上点关注下点赞 生活越过…

C++学习/复习20--继承的权限/向上转换/重定义/默认成员函数/友元/静态成员/菱形虚拟继承/组合

一、继承的概念 二、继承的权限 三、向上转换 四、重定义(隐藏) 五、派生类的默认成员函数 六、继承与友元 七、继承与静态成员 八、菱形继承 数据冗余与二义性 虚拟继承(virtual) 九、继承组合

【ARM】MCU和SOC的区别

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 了解SOC芯片和MCU芯片的区别 2、 问题场景 用于了解SOC芯片和MCU芯片的区别,内部结构上的区别。 3、软硬件环境 1)、软件版本:无 2)、电脑环境:无 3&am…

Java洗鞋预约小程序源码

💥洗鞋神器来袭!轻松预约,让你的鞋子焕然一新👟 🎉 告别洗鞋烦恼,洗鞋预约小程序来啦! 你是不是常常为洗鞋而烦恼?手洗太累,送去洗衣店又贵又麻烦。现在,好…

数据恢复篇:如何从 Mac 硬盘安全恢复丢失的文件

Mac RAID 阵列用于大存储。Mac RAID 上的数据丢失可能很复杂。一般来说,从 Mac RAID 硬盘恢复已删除的文件并不困难。但如果​​您想从 Mac RAID 硬盘恢复由于格式化、病毒感染、硬盘故障而丢失的文件,情况就会发生变化。您必须找到一个功能强大的 Mac R…

基于Java微信小程序校园自助打印系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟感兴趣的可以先收藏起来,还…

如何制作自己的网站

制作自己的网站可以帮助个人或组织在互联网上展示自己的品牌、作品、产品或服务。随着技术的发展,现在制作网站变得越来越简单。下面是一个简单的步骤指南,帮助你制作自己的网站。 1. 确定你的网站需求和目标 在开始之前,你需要明确你的网站的…

【STM32】看门狗

1.看门狗简介 看门狗起始就是一个定时器,从功能上说它可以让微控制器在程序发生意外(程序进入死循环或跑飞)的时候,能重新恢复到系统刚上电状态,以保障系统出问题的时候可以重启一次。说的简单一点,看门狗…