作者介绍
李淳竹(lichunzhu),TiDB 研发工程师。
Dumpling 是由 Go 语言编写的用于对数据库进行数据导出的工具。目前支持 MySQL 协议的数据库,并且针对 TiDB 的特性进行了优化。在 Go Dumpling! 让导出数据更容易 中,我们简要介绍了 Dumpling 的基本功能的使用。在本文中,我们将会介绍一些 Dumpling 的进阶使用方法,帮助大家更稳定高效地导出数据。
导出到云盘
导出为压缩文件
Dumpling 已经在 v4.0.9 中支持设置 --compress gz 将导出的 sql 文件压缩为 gz 格式,提高空间利用率,同时在上传云盘时也可以节省网络开销与存储成本。在我们的实际测试中,压缩为 gz 格式可以比直接导出 sql 格式文件节省一半以上的空间。
更多详细使用配置参考使用文档。
更完善的提示统计信息
在之前的使用过程中,有用户反馈在导出中 Dumpling 的提示信息不足,不能很好地了解 Dumpling 目前的导出状态。为此 Dumpling 在 v4.0.9 引入了更完善的信息提示机制。示例如下:
[2020/11/17 20:23:55.526 +08:00] [INFO] [collector.go:211] ["backup Success summary: total backup ranges: 45970, total success: 45970, total failed: 0, total take(backup time): 30m50.068578882s, total take(real time): 31m4.41078434s, total size(MB): 1797708.77, avg speed(MB/s): 971.70, total rows: 9200295024"] ["split chunk"=13.484064398s]
复制
# HELP dumpling_dump_finished_rows counter for dumpling finished rows# TYPE dumpling_dump_finished_rows counterdumpling_dump_finished_rows 1.419506e+06# HELP dumpling_dump_finished_size counter for dumpling finished file size# TYPE dumpling_dump_finished_size counterdumpling_dump_finished_size 2.92577519e+08
复制
更完善的重试机制
consistency 为 snapshot
或none
:这两种情况中,Dumpling 并没有为数据库上锁,Dumpling 会直接重建数据库连接。 consistency 为 lock
或flush
:
--transactional-consistency=false
配置 Dumpling 在整个导出过程中持锁。这时如果发生 Dumpling 数据库连接中断的情况,Dumpling 将会首先检查锁数据库连接是否仍然工作正常,如果仍然正常 Dumpling 将会重建数据库连接使导出继续进行下去。
支持控制导出时的系统变量
--params "character_set_client=latin1,character_set_connection=latin1,character_set_results=latin1”
控制导出字符集为 latin1。
--params
使用场景。也欢迎大家开发出更多的使用场景,并向其他的社区小伙伴分享 Dumpling 的使用经验。
Dumpling 后续开发计划
支持并行导出 cluster index 的数据
支持 TiDB 标准错误码
支持导出更多种类的源数据库
欢迎联系我们:
Migrate SIG Community:主要涵盖 TiDB 数据处理工具,包含 TiDB 数据备份/导入导出,TiDB 数据变更捕获,其他数据库数据迁移至 TiDB 等。
channel #sig-migrate in the tidbcommunity slack workspace, you can join this channel through this invitation link。

