Mydumper是专为MySQL设计的高性能多线程数据导入导出工具,相比原生的mysqldump单线程处理模式,它能通过并行任务大幅提升大库数据的备份、迁移效率,同时支持一致性快照、表级过滤等实用功能,适配多种MySQL运维场景。

Mydumper的核心优势
和传统的mysqldump相比,Mydumper的优势主要体现在以下几个方面:
- 多线程并行处理:可以将不同的表或者同一张大表的不同数据块分配给多个线程同时处理,避免单线程的性能瓶颈,处理GB级甚至TB级数据时效率提升明显。
- 一致性数据快照:导出时会基于事务获取全局一致的数据状态,保证导出的数据在逻辑上是完整的,不会出现事务执行到一半的数据断层问题。
- 灵活的过滤能力:支持按数据库、表名、正则表达式过滤需要导出的对象,不需要导出全库时可以减少不必要的IO消耗。
- 配套导入工具:自带myloader工具,导入时同样支持多线程并行加载数据,不需要手动拆分文件处理。
Mydumper的安装部署
不同系统的安装方式略有差异,主流Linux发行版可以直接通过包管理器安装,也可以从源码编译安装:
Ubuntu/Debian系统安装
# 更新软件源 sudo apt-get update # 安装mydumper sudo apt-get install mydumper -y
CentOS/RHEL系统安装
# 安装epel源 sudo yum install epel-release -y # 安装mydumper sudo yum install mydumper -y
源码编译安装
# 安装依赖 sudo yum install cmake gcc glib2-devel mysql-devel zlib-devel -y # 下载源码 git clone https://github.com/mydumper/mydumper.git cd mydumper # 编译安装 cmake . make sudo make install
Mydumper导出数据使用方法
导出数据的基础命令格式如下,常用参数可以根据实际需求调整:
mydumper \ -u 数据库用户名 \ -p 数据库密码 \ -h 数据库地址 \ -P 数据库端口 \ -B 需要导出的数据库名 \ -o 导出文件存放目录 \ -t 并行线程数 \ --compress # 可选,压缩导出文件
举个例子,导出本地MySQL的test_db数据库,使用4个线程,文件存放到/backup/mysql目录:
mydumper -u root -p 123456 -h 127.0.0.1 -P 3306 -B test_db -o /backup/mysql -t 4
导出完成后,目录下会生成多个文件,包括表结构文件、数据文件、元数据文件,其中metadata文件记录了导出时的一致性位点信息,用于后续导入或者主从同步场景。
Myloader导入数据使用方法
使用配套的myloader工具导入数据,同样支持多线程加速,基础命令格式如下:
myloader \ -u 数据库用户名 \ -p 数据库密码 \ -h 数据库地址 \ -P 数据库端口 \ -d 导出文件存放目录 \ -B 目标数据库名 \ -t 并行线程数 \ -o # 可选,覆盖已存在的表
比如将之前导出的test_db数据导入到新的数据库new_test_db中,使用4个线程:
myloader -u root -p 123456 -h 127.0.0.1 -P 3306 -d /backup/mysql -B new_test_db -t 4 -o
使用注意事项
- 导出时需要保证数据库用户有足够的权限,至少需要SELECT、RELOAD、REPLICATION CLIENT权限,导出表结构还需要SHOW VIEW、TRIGGER等权限。
- 多线程导出大表时,Mydumper会自动将表按主键或者唯一索引拆分数据块,如果表没有合适的索引,可能会退化为单线程处理,建议给大表添加合适的索引。
- 导出文件默认是SQL格式,开启压缩后会生成.gz格式的文件,导入时myloader会自动识别解压,不需要手动提前处理。
- 如果导出的是整个实例的数据,导入时需要先确保目标实例没有同名的数据库,或者添加-o参数覆盖,避免导入失败。
和mysqldump的适用场景对比
可以通过下面的表格快速判断两种工具的适用场景:
| 对比项 | Mydumper | mysqldump |
|---|---|---|
| 处理效率 | 多线程,大库效率高 | 单线程,小库足够用 |
| 数据一致性 | 支持事务一致性快照 | 需要加全局锁或者事务保证 |
| 过滤能力 | 支持正则、表级过滤 | 仅支持简单的库表过滤 |
| 适用场景 | 大库备份、跨实例迁移 | 小库备份、结构导出 |