Tidb dumpling备份

Tidb dumpling备份

𝓓𝓸𝓷 Lv6

https://docs.pingcap.com/zh/tidb/stable/dumpling-overview

一、安装

你可以通过下列任意方式获取 Dumpling:

  • TiUP 执行 tiup install dumpling 命令。获取后,使用 tiup dumpling ... 命令运行 Dumpling。
  • 下载包含 Dumpling 的 tidb-toolkit 安装包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[tidb@monitor ~]$ tiup install dumpling
download https://tiup-mirrors.pingcap.com/dumpling-v8.5.0-linux-amd64.tar.gz 37.21 MiB / 37.21 MiB 100.00% 9.03 MiB/s

---指定版本安装
[tidb@monitor ~]$ tiup install dumpling:v8.3.0
download https://tiup-mirrors.pingcap.com/dumpling-v8.3.0-linux-amd64.tar.gz 36.70 MiB / 36.70 MiB 100.00% 1.17 MiB/s
[tidb@monitor ~]$ tiup dumpling --version

A new version of dumpling is available: v8.3.0 -> v8.5.0

To update this component: tiup update dumpling
To update all components: tiup update --all

Starting component dumpling: /home/tidb/.tiup/components/dumpling/v8.3.0/dumpling --version
Release version: v8.3.0
Git commit hash: 1a0c3ac3292fff7742faa0c00a662ccb66ba40db
Git branch: HEAD
Build timestamp: 2024-08-20 10:13:00Z
Go version: go version go1.21.10 linux/amd64

---卸载组件
[tidb@monitor ~]$ tiup uninstall dumpling --all
/home/tidb/.tiup/components/dumpling
Uninstalled component `dumpling` successfully!

二、备份

dumping可以导出sql或csv格式

1.全备
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[tidb@monitor ~]$ tiup dumpling -uroot -h 192.168.1.181 -P 4000 --filetype sql -o /backup/tidb/dumpling -p 123456



tiup dumpling -h 192.168.1.181 -P 4000 -u root -t 16 -r 200000 -F 256MiB -B my_db1 -f 'my_db1.table[12]' -o 's3://my-bucket/sql-backup'

tiup dumpling -u root -P 4000 -h 127.0.0.1 --filetype sql -t 8 -o /tmp/test -r 200000 -F 256MiB

tiup dumping --login-path=tidb --filetype sql -t 8

-t: --threads





2.备份单库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[tidb@monitor ~]$ tiup dumpling -uroot -h 192.168.1.181 -P 4000 --filetype sql -o /backup/tidb/dumpling -B mydb -p 123456

[tidb@monitor ~]$ ll /backup/tidb/dumpling/
total 16
-rw-r--r-- 1 tidb admin 146 Dec 30 06:10 metadata
-rw-r--r-- 1 tidb admin 132 Dec 30 06:10 mydb-schema-create.sql
-rw-r--r-- 1 tidb admin 94 Dec 30 06:10 mydb.t.000000000.sql
-rw-r--r-- 1 tidb admin 174 Dec 30 06:10 mydb.t-schema.sql

---备份多个库
[tidb@monitor ~]$ tiup dumpling -uroot -h 192.168.1.181 -P 4000 --filetype sql -o /backup/tidb/dumpling -B mydb,orcl -p 123456

[tidb@monitor ~]$ ll /backup/tidb/dumpling/
total 28
-rw-r--r-- 1 tidb admin 146 Dec 30 06:23 metadata
-rw-r--r-- 1 tidb admin 132 Dec 30 06:23 mydb-schema-create.sql
-rw-r--r-- 1 tidb admin 94 Dec 30 06:23 mydb.t.000000000.sql
-rw-r--r-- 1 tidb admin 174 Dec 30 06:23 mydb.t-schema.sql
-rw-r--r-- 1 tidb admin 132 Dec 30 06:23 orcl-schema-create.sql
-rw-r--r-- 1 tidb admin 105 Dec 30 06:23 orcl.t3.000000000.sql
-rw-r--r-- 1 tidb admin 175 Dec 30 06:23 orcl.t3-schema.sql

3.备份单表

-T 选项只能接受完整的 库名.表名 形式,不支持只指定表名。例:Dumpling 无法识别 -T WorkOrder
表名必须存在,即使只有一个表名不存在,也不会导出数据
-T 选项不可同时与--filter 选项使用

1
2
3
4
5
6
7
8
9
10
11
[tidb@monitor ~]$ tiup dumpling -uroot -h 192.168.1.181 -P 4000 --filetype sql -o /backup/tidb/dumpling -T mydb.t,orcl.t3 -p 123456

[tidb@monitor ~]$ ll /backup/tidb/dumpling
total 28
-rw-r--r-- 1 tidb admin 146 Dec 30 06:34 metadata
-rw-r--r-- 1 tidb admin 132 Dec 30 06:34 mydb-schema-create.sql
-rw-r--r-- 1 tidb admin 94 Dec 30 06:34 mydb.t.000000000.sql
-rw-r--r-- 1 tidb admin 174 Dec 30 06:34 mydb.t-schema.sql
-rw-r--r-- 1 tidb admin 132 Dec 30 06:34 orcl-schema-create.sql
-rw-r--r-- 1 tidb admin 105 Dec 30 06:34 orcl.t3.000000000.sql
-rw-r--r-- 1 tidb admin 175 Dec 30 06:34 orcl.t3-schema.sql
4.导出某个schema下面的数据

Dumpling 可以通过 -f, --filter 指定 table-filter 来筛选特定的库表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
tiup dumpling -uroot -h 192.168.1.181 -P 4000 --filetype sql -o /backup/tidb/dumpling --filter "mydb.*" -p 123456

[tidb@monitor ~]$ ll /backup/tidb/dumpling/
total 24
-rw-r--r-- 1 tidb admin 146 Dec 30 06:41 metadata
-rw-r--r-- 1 tidb admin 132 Dec 30 06:41 mydb-schema-create.sql
-rw-r--r-- 1 tidb admin 94 Dec 30 06:41 mydb.t.000000000.sql
-rw-r--r-- 1 tidb admin 105 Dec 30 06:41 mydb.t1.000000000.sql
-rw-r--r-- 1 tidb admin 175 Dec 30 06:41 mydb.t1-schema.sql
-rw-r--r-- 1 tidb admin 174 Dec 30 06:41 mydb.t-schema.sql


tiup dumpling -uroot -h 192.168.1.181 -P 4000 --filetype sql -o /backup/tidb/dumpling -f "*.t1" -p 123456

[tidb@monitor ~]$ ll /backup/tidb/dumpling/
total 52
-rw-r--r-- 1 tidb admin 146 Dec 30 06:42 INFORMATION_SCHEMA-schema-create.sql
-rw-r--r-- 1 tidb admin 146 Dec 30 06:42 metadata
-rw-r--r-- 1 tidb admin 142 Dec 30 06:42 METRICS_SCHEMA-schema-create.sql
-rw-r--r-- 1 tidb admin 132 Dec 30 06:42 mydb-schema-create.sql
-rw-r--r-- 1 tidb admin 105 Dec 30 06:42 mydb.t1.000000000.sql
-rw-r--r-- 1 tidb admin 175 Dec 30 06:42 mydb.t1-schema.sql
-rw-r--r-- 1 tidb admin 133 Dec 30 06:42 mysql-schema-create.sql
-rw-r--r-- 1 tidb admin 132 Dec 30 06:42 orcl-schema-create.sql
-rw-r--r-- 1 tidb admin 120 Dec 30 06:42 orcl.t1.000000000.sql
-rw-r--r-- 1 tidb admin 175 Dec 30 06:42 orcl.t1-schema.sql
-rw-r--r-- 1 tidb admin 146 Dec 30 06:42 PERFORMANCE_SCHEMA-schema-create.sql
-rw-r--r-- 1 tidb admin 131 Dec 30 06:42 sys-schema-create.sql
-rw-r--r-- 1 tidb admin 132 Dec 30 06:42 test-schema-create.sql


tiup dumpling -uroot -h 192.168.1.181 -P 4000 --filetype sql -o /backup/tidb/dumpling --filter "mydb.*" --filter "*.t3" -p 123456

[tidb@monitor ~]$ ll /backup/tidb/dumpling/
total 60
-rw-r--r-- 1 tidb admin 146 Dec 30 06:45 INFORMATION_SCHEMA-schema-create.sql
-rw-r--r-- 1 tidb admin 146 Dec 30 06:45 metadata
-rw-r--r-- 1 tidb admin 142 Dec 30 06:45 METRICS_SCHEMA-schema-create.sql
-rw-r--r-- 1 tidb admin 132 Dec 30 06:45 mydb-schema-create.sql
-rw-r--r-- 1 tidb admin 94 Dec 30 06:45 mydb.t.000000000.sql
-rw-r--r-- 1 tidb admin 105 Dec 30 06:45 mydb.t1.000000000.sql
-rw-r--r-- 1 tidb admin 175 Dec 30 06:45 mydb.t1-schema.sql
-rw-r--r-- 1 tidb admin 174 Dec 30 06:45 mydb.t-schema.sql
-rw-r--r-- 1 tidb admin 133 Dec 30 06:45 mysql-schema-create.sql
-rw-r--r-- 1 tidb admin 132 Dec 30 06:45 orcl-schema-create.sql
-rw-r--r-- 1 tidb admin 105 Dec 30 06:45 orcl.t3.000000000.sql
-rw-r--r-- 1 tidb admin 175 Dec 30 06:45 orcl.t3-schema.sql
-rw-r--r-- 1 tidb admin 146 Dec 30 06:45 PERFORMANCE_SCHEMA-schema-create.sql
-rw-r--r-- 1 tidb admin 131 Dec 30 06:45 sys-schema-create.sql
-rw-r--r-- 1 tidb admin 132 Dec 30 06:45 test-schema-create.sql

5.dumpling并行导出数据

-t, –threads参数指定线程数,默认是4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[tidb@monitor ~]$ tiup dumpling -uroot -h 192.168.1.181 -P 4000 --filetype csv -o /backup/tidb/dumpling -t 8 -p 123456

[tidb@monitor ~]$ ll /backup/tidb/dumpling/
total 48
-rw-r--r-- 1 tidb admin 146 Dec 30 06:52 metadata
-rw-r--r-- 1 tidb admin 132 Dec 30 06:52 mydb-schema-create.sql
-rw-r--r-- 1 tidb admin 9 Dec 30 06:52 mydb.t.000000000.csv
-rw-r--r-- 1 tidb admin 15 Dec 30 06:52 mydb.t1.000000000.csv
-rw-r--r-- 1 tidb admin 175 Dec 30 06:52 mydb.t1-schema.sql
-rw-r--r-- 1 tidb admin 174 Dec 30 06:52 mydb.t-schema.sql
-rw-r--r-- 1 tidb admin 132 Dec 30 06:52 orcl-schema-create.sql
-rw-r--r-- 1 tidb admin 24 Dec 30 06:52 orcl.t1.000000000.csv
-rw-r--r-- 1 tidb admin 175 Dec 30 06:52 orcl.t1-schema.sql
-rw-r--r-- 1 tidb admin 15 Dec 30 06:52 orcl.t3.000000000.csv
-rw-r--r-- 1 tidb admin 175 Dec 30 06:52 orcl.t3-schema.sql
-rw-r--r-- 1 tidb admin 132 Dec 30 06:52 test-schema-create.sql

6.指定单个文件最大记录数

-r 选项用于指定单个文件的最大记录数,或者说,数据库中的行数。开启后 Dumpling 会开启表内并发,提高导出大表的速度。当上游为 TiDB 且版本为 v3.0 或更新版本时,设置 -r 参数大于 0 表示使用 TiDB region 信息划分表内并发,具体取值不影响划分算法。对上游为 MySQL 且表的主键是 int 的场景,该参数也有表内并发效果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[tidb@monitor ~]$ tiup dumpling -uroot -h 192.168.1.181 -P 4000 --filetype csv -o /backup/tidb/dumpling -r 20000 -p 123456

[tidb@monitor ~]$ ll /backup/tidb/dumpling/
total 48
-rw-r--r-- 1 tidb admin 146 Dec 30 06:57 metadata
-rw-r--r-- 1 tidb admin 132 Dec 30 06:57 mydb-schema-create.sql
-rw-r--r-- 1 tidb admin 9 Dec 30 06:57 mydb.t.000000001.csv
-rw-r--r-- 1 tidb admin 15 Dec 30 06:57 mydb.t1.000000001.csv
-rw-r--r-- 1 tidb admin 175 Dec 30 06:57 mydb.t1-schema.sql
-rw-r--r-- 1 tidb admin 174 Dec 30 06:57 mydb.t-schema.sql
-rw-r--r-- 1 tidb admin 132 Dec 30 06:57 orcl-schema-create.sql
-rw-r--r-- 1 tidb admin 24 Dec 30 06:57 orcl.t1.000000001.csv
-rw-r--r-- 1 tidb admin 175 Dec 30 06:57 orcl.t1-schema.sql
-rw-r--r-- 1 tidb admin 15 Dec 30 06:57 orcl.t3.000000001.csv
-rw-r--r-- 1 tidb admin 175 Dec 30 06:57 orcl.t3-schema.sql
-rw-r--r-- 1 tidb admin 132 Dec 30 06:57 test-schema-create.sql

7.指定单个文件大小
  • -F 选项用于指定单个文件的最大大小,单位为 MiB,可接受类似 5GiB 或 8KB 的输入。如果你想使用 TiDB Lightning 将该文件加载到 TiDB 实例中,建议将 -F 选项的值保持在 256 MiB 或以下。
  • 如果导出的单表大小超过 10 GB,强烈建议使用 -r 和 -F 参数
1
2
3
4
5
 
[tidb@monitor ~]$ tiup dumpling -uroot -h 192.168.1.181 -P 4000 --filetype sql -o /backup/tidb/dumpling -r 20000 -F 256MiB -p 123456

[tidb@monitor ~]$ tiup dumpling -uroot -h 192.168.1.181 -P 4000 --filetype sql -o /backup/tidb/dumpling -r 20000 -F 1GiB -p 123456

8.压缩

你可以使用 --compress <format> 压缩导出的 CSV、SQL 数据与表结构文件。该参数支持 gzipsnappyzstd 压缩算法。默认不压缩。

该选项只能压缩单个数据与表结构文件,无法直接压缩整个文件夹生成单个压缩集合包。
该选项可以节省磁盘空间,但也会导致导出速度变慢,并增加 CPU 消耗。对导出速度要求较高的场景需慎用。
TiDB Lightning v6.5.0 及以上版本支持直接使用 Dumpling 压缩文件作为数据源导入,无需额外配置。
Snappy 压缩文件必须遵循官方 Snappy 格式。不支持其他非官方压缩格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[tidb@monitor ~]$ tiup dumpling -uroot -h 192.168.1.181 -P 4000 --filetype sql -o /backup/tidb/dumpling -r 20000 -F 256MiB --compress gzip -p 123456

[tidb@monitor ~]$ ll /backup/tidb/dumpling/
total 48
-rw-r--r-- 1 tidb admin 146 Dec 30 07:19 metadata
-rw-r--r-- 1 tidb admin 137 Dec 30 07:19 mydb-schema-create.sql.gz
-rw-r--r-- 1 tidb admin 119 Dec 30 07:19 mydb.t.0000000010000.sql.gz
-rw-r--r-- 1 tidb admin 130 Dec 30 07:19 mydb.t1.0000000010000.sql.gz
-rw-r--r-- 1 tidb admin 167 Dec 30 07:19 mydb.t1-schema.sql.gz
-rw-r--r-- 1 tidb admin 167 Dec 30 07:19 mydb.t-schema.sql.gz
-rw-r--r-- 1 tidb admin 137 Dec 30 07:19 orcl-schema-create.sql.gz
-rw-r--r-- 1 tidb admin 145 Dec 30 07:19 orcl.t1.0000000010000.sql.gz
-rw-r--r-- 1 tidb admin 167 Dec 30 07:19 orcl.t1-schema.sql.gz
-rw-r--r-- 1 tidb admin 130 Dec 30 07:19 orcl.t3.0000000010000.sql.gz
-rw-r--r-- 1 tidb admin 168 Dec 30 07:19 orcl.t3-schema.sql.gz
-rw-r--r-- 1 tidb admin 137 Dec 30 07:19 test-schema-create.sql.gz

9.一致性导出

Dumpling 通过 --consistency <consistency level> 标志控制导出数据“一致性保证”的方式。在使用 snapshot 来保证一致性的时候,可以使用 --snapshot 选项指定要备份的时间戳。还可以使用以下的一致性级别:

flush:使用 FLUSH TABLES WITH READ LOCK 短暂地中断备份库的 DML 和 DDL 操作、保证备份连接的全局一致性和记录 POS 信息。所有的备份连接启动事务后释放该锁。推荐在业务低峰或者 MySQL 备份库上进行全量备份。
-snapshot:获取指定时间戳的一致性快照并导出。
-lock:为待导出的所有表上读锁。
-none:不做任何一致性保证。
-auto:对 MySQL 使用 flush,对 TiDB 使用 snapshot
--snapshot 选项可设为 TSO(SHOW MASTER STATUS 输出的 Position 字段)或有效的 datetime 时间(YYYY-MM-DD hh:mm:ss 形式)
mysql> show master status;
+————-+——————–+————–+——————+——————-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+————-+——————–+————–+——————+——————-+
| tidb-binlog | 454954972032008193 | | | |
+————-+——————–+————–+——————+——————-+
1 row in set (0.00 sec)

1
2
3
4
5
6
tiup dumpling -uroot -h 192.168.1.181 -P 4000 --filetype sql -o /backup/tidb/dumpling --consistency snapshot -p 123456

[tidb@monitor ~]$ tiup dumpling -uroot -h 192.168.1.181 -P 4000 -o /backup/tidb/dumpling --snapshot 454954972032008193 -p 123456

[tidb@monitor ~]$ tiup dumpling -uroot -h 192.168.1.181 -P 4000 --filetype sql -o /backup/tidb/dumpling --snapshot 454954972032008193 -p 123456

三、创建备份帐号

为了安全起见,建议创建普通帐号用于tidb备份

1.创建帐号
1
2
mysql> alter user backup@'192.168.1.%' identified by "mT9l!EQU4mt1";
Query OK, 0 rows affected (0.04 sec)
2.授权
1
2
3
4
mysql> grant select,reload,lock tables,replication client on *.* to backup@'192.168.1.%';
Query OK, 0 rows affected (0.00 sec)

grant select,reload,lock tables,replication client,show view,event,trigger on *.* to backup@'192.168.1.%';
3.备份
1
[tidb@monitor ~]$ tiup dumpling -ubackup -h 192.168.1.181 -P 4000 --filetype sql -o /backup/tidb/dumpling --consistency snapshot -p 123456  
4.备份脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
(1) 全库备份脚本

#!/bin/bash
#set env


PATH=/home/tidb/.tiup/bin:$PATH
DATE=`date +%Y%m%d`
keep_days=15
mount_point=/backup
backup_path=$mount_point/tidb/dumpling
logfile=$backup_path/logfile
host='192.168.1.181'

if mount | grep -q " on ${mount_point} type "; then
mkdir -p $backup_path/{$DATE,logfile}
else
echo "`date +%Y%m%d` Please check if the directory $backup_path exists!" >> /tmp/tidb_backup.log
exit 1
fi


echo "----------------------------- Backup Start: `date "+%Y-%m-%d %H:%M:%S"` -----------------------------";


tiup dumpling \
-u backup \
-h $host \
-P 4000 \
--filetype sql \
-o $backup_path/$DATE \
-t 10 \
-r 20000 \
-F 256MiB \
-p mT9l!EQU4mt1 > $logfile/dumpling_full_${DATE}.log


echo "----------------------------- Backup End: `date "+%Y-%m-%d %H:%M:%S"` -----------------------------";


find $backup_path/* -maxdepth 0 -type d -mtime +$keep_days |xargs rm -rf
find $logfile -name '*.log' -mtime +$keep_days |xargs rm -rf



(2) 单表压缩备份脚本

#!/bin/bash
#set env


PATH=/home/tidb/.tiup/bin:$PATH
DATE=`date +%Y%m%d`
keep_days=90
mount_point=/backup2
backup_path=$mount_point/tidb/dumpling_table
table_name=mydb.ky_doc_xml
logfile=$backup_path/logfile
host='192.168.1.181'

if mount | grep -q " on ${mount_point} type "; then
mkdir -p $backup_path/{$DATE,logfile}
else
echo "`date +%Y%m%d` Please check if the directory $backup_path exists!" >> /tmp/tidb_backup.log
exit 1
fi


echo "----------------------------- Backup Start: `date "+%Y-%m-%d %H:%M:%S"` -----------------------------";


tiup dumpling \
-u backup \
-h $host \
-P 4000 \
--filetype sql \
-o $backup_path/$DATE \
-t 6 \
-T $table_name \
-c gzip \
-r 20000 \
-F 256MiB \
-p mT9l!EQU4mT1 > $logfile/dumpling_full_${DATE}.log


echo "----------------------------- Backup End: `date "+%Y-%m-%d %H:%M:%S"` -----------------------------";


find $backup_path/* -maxdepth 0 -type d -mtime +$keep_days |xargs rm -rf
find $logfile -name '*.log' -mtime +$keep_days |xargs rm -rf

  • Title: Tidb dumpling备份
  • Author: 𝓓𝓸𝓷
  • Created at : 2024-12-29 18:30:28
  • Updated at : 2025-09-10 09:15:20
  • Link: https://www.zhangdong.me/tidb-dumpling.html
  • License: This work is licensed under CC BY-NC-SA 4.0.
评论