TiDB实战篇-数据导出工具Dumpling

简介

简要使用数据导出工具。

介绍

特点

适用场景

部署

下载

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 dumpling-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 ~]# dumpling
Release version: v6.5.0
Git commit hash: 706c3fa3c526cdba5b3e9f066b1a568fb96c56e3
Git branch:      heads/refs/tags/v6.5.0
Build timestamp: 2022-12-27 03:43:05Z
Go version:      go version go1.19.3 linux/amd64

[2023/04/16 11:33:01.563 +08:00] [INFO] [versions.go:54] ["Welcome to dumpling"] ["Release Version"=v6.5.0] ["Git Commit Hash"=706c3fa3c526cdba5b3e9f066b1a568fb96c56e3] ["Git Branch"=heads/refs/tags/v6.5.0] ["Build timestamp"="2022-12-27 03:43:05"] ["Go Version"="go version go1.19.3 linux/amd64"]
[2023/04/16 11:33:01.565 +08:00] [WARN] [version.go:316] ["select tidb_version() failed, will fallback to 'select version();'"] [error="Error 1045: Access denied for user 'root'@'127.0.0.1' (using password: NO)"]

create dumper failed: sql: SELECT version();: Error 1045: Access denied for user 'root'@'127.0.0.1' (using password: NO)

导出概述 

使用的最小权限

导出SQL文件

dumpling -u root -P 4000 -h 127.0.0.1 --filetype sql -t 8 -o /tmp/test -r 200000 -F256MiB
#表示导出的文件是sql
--filetype sql 
#表示导出的线程并发数
-t 8
#导出的文件位置
-o /tmp/test
#多少行的时候新创建一个文件
-r 200000
#到达256M新创建一个文件
-F256MiB

导出CSV文件

./dumpling -u root -P 4000 -h 127.0.0.1 -o /tmp/test --filetype csv -r 200000 -F256MiB

对于导出数据过滤

如果没有指定导出文件的类型,那么默认是sql的。

导出数据的库表过滤

导出实战

前提

#登录到tidb查看下数据
mysql -h127.0.0.1 -P4000 -uroot -ptidb

use test;

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

导出SQL文件

dumpling -uroot -P4000 -h127.0.0.1 -ptidb --filetype sql -t 8 -o /tmp/test/sql -r 200000 -F256MiB -B test

导出的文件

[root@master ~]# 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

metadata

[root@master sql]# cat metadata 
Started dump at: 2023-04-16 12:06:17
SHOW MASTER STATUS:
	Log: tidb-binlog
	Pos: 440826063176335367
	GTID:

Finished dump at: 2023-04-16 12:06:17

 test-schema-create.sql

[root@master sql]# cat cat test-schema-create.sql 
cat: cat: No such file or directory
/*!40101 SET NAMES binary*/;
CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;

test.emp-schema.sql 

[root@master sql]# cat test.emp-schema.sql
/*!40101 SET NAMES binary*/;
CREATE TABLE `emp` (
  `id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

test.emp.0000000010000.sql 

[root@master sql]# cat test.emp.0000000010000.sql
/*!40101 SET NAMES binary*/;
INSERT INTO `emp` VALUES
(1);

导出csv文件

dumpling -uroot -P4000 -h127.0.0.1 -ptidb --filetype csv -t 8 -o /tmp/test/csv -r 200000 -F256MiB -B test

如果想导出的单独的表,那么就用-T test.emp 

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

test.emp.0000000010000.csv 

[root@master csv]# cat test.emp.0000000010000.csv
"id"
1

导出数据的一致性 

  • Snapshot #使用的是MVCC机制,如果导出的时候是10点,那么就算10点10分删除了数据,还是会吧10点的数据全部导出来
  • None     #不会使用MVCC机制,如果导出的时候有数据删除了,删除那一部分数据就导不出来了。
  • Flush    #在数据库里面加一个只读锁。
  • Lock     #导出哪张表就会给哪张表加锁。
  • Auto     #如果是tidb那么就是Flush,如果是TiDB那么就是Snapshot。 

性能优化

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工作变成艺术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值