TIDB-数据导出

本文介绍了Dumpling作为TiDB数据迁移的主要工具,包括其与mysqldump和mydumper的区别。重点讲解了Dumpling的参数设置,如并发线程数、文件大小和一致性选项,并提供了应对连接断开问题的解决方案。此外,还详细阐述了Dumpling的使用准备和实例,展示了如何进行数据导出。适合需要进行TiDB数据迁移的读者参考。
摘要由CSDN通过智能技术生成

一、数据迁移方式

1.mysqldump

解释:mysqldump可以从mysql迁移到tidb,数据量小的时候比较好用,但是当数据量较大了,迁移时间会比较长

2.mydumper

解释:mydumper有两种,一种是我们所熟悉的mydumper,或者说原生mydumper,另一种则是tidb封装的mydumper,原生mydumper相对来说比较好用,而因为tidb后期维护了dumpling,而不是mydumper,所以tidb封装的mydumper在大数据量导出时会遇到多种问题。

问题一、

导出过程中出现:Lost connection to MySQL server during query

解决:加入-r参数,-r 10000等等

问题二、

导出过程中出现:Lost connection to MySQL server during query

解决:采用原生mydumper或者dumpling来解决

3.dumpling

解释:目前tidb比较主推的数据迁移工具

二、dumpling详解

1.参数解释

主要选项用途默认值
-V 或 --version输出 Dumpling 版本并直接退出
-B 或 --database导出指定数据库
-T 或 --tables-list导出指定数据表
-f 或 --filter导出能匹配模式的表,语法可参考 table-filter[\*.\*,!/^(mysql|sys|INFORMATION_SCHEMA|PERFORMANCE_SCHEMA|METRICS_SCHEMA|INSPECTION_SCHEMA)$/.\*](导出除系统库外的所有库表)
--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 数据划分出来的文件大小,需指明单位(如 128B64KiB32MiB1.5GiB
--filetype导出文件类型(csv/sql)"sql"
-o 或 --output导出本地文件路径或外部存储 URL"./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.使用准备

账号权限:
SELECT
RELOAD
LOCK TABLES
REPLICATION CLIENT

3.使用实例

./dumpling -h 192.168.1.101 -P 3306 -u root --consistency none -L ./a.log --threads 16 -o /data/backup -B db1 -f 'db1.ab*' -f 'db1.ac*' -r 20000 -p123456


./dumpling   -u root -p'password'  -P 4000   -h 192.168.1.101 -L ./a.log  -o /data/backup   --filetype csv   --sql 'select * from db.table_name'

将数据迁移导出到TIDB上可以有多种方式,根据自己需求来选择

官网链接:https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#dumpling-使用文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值