当前位置: 首页 > news >正文

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

在这里插入图片描述

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.lryc.cn/news/386100.html

相关文章:

  • 动手学深度学习(Pytorch版)代码实践 -卷积神经网络-16自定义层
  • 树莓派4设置
  • 44.商城系统(二十五):k8s基本操作,ingress域名访问,kubeSphere可视化安装
  • MySQL高级查询
  • 聊聊啥项目适合做自动化测试
  • ROS2开发机器人移动
  • 【强化学习】第02期:动态规划方法
  • 安全技术和防火墙(二)
  • 【51单片机入门】数码管原理
  • 三星DRAM、NAND,“又双叒叕”带头涨价了
  • 星戈瑞FITC-PEG2000-Biotin的生物相容性
  • 数据资产管理的艺术:构建智能化、精细化的数据资产管理体系,从数据整合、分析到决策支持,为企业提供一站式的数据资产解决方案,助力企业把握数字时代的新机遇
  • 基于Java微信小程序校园自助打印系统设计和实现(源码+LW+调试文档+讲解等)
  • 股票复盘思路
  • OpenGL系列(六)摄像机
  • 一个端口配置两个vue和后端服务,nginx以及前后端服务怎么配?
  • 295. 数据流的中位数
  • OCR训练和C#部署英文字符训练
  • webpack【实用教程】
  • 如何使用C++进行文件读写操作
  • Tensorflow Lite移动平台编译
  • 2024年6月24日-6月30日(ue5肉鸽视频p16-p25)
  • LeetCode.面试题17.24.最大子矩阵详解
  • 云动态摘要 2024-06-28
  • 六、资产安全—信息分级资产管理与隐私保护(CISSP)
  • 香港服务器托管对外贸行业必要性和优势
  • Vue Router 导航守卫,多次执行的解决方案
  • SpringBoot集成道历(实现道历日期查询)
  • 面对.rmallox勒索病毒:如何有效防范及应对
  • 嘉立创学习