MySQL 使用 mysqlpump 进行备份是一种高效、并行处理的逻辑备份工具,适用于 MySQL 5.7 及以上版本。相比传统的 mysqldump,mysqlpump 支持多线程导出,能显著提升大数据库的备份速度。
1. mysqlpump 简介与特点
mysqlpump 是 MySQL 官方提供的逻辑备份工具,主要优势包括:
并行备份:支持按数据库或表级别并行导出数据,提高效率 灵活控制:可单独备份特定数据库、表,甚至排除某些对象 压缩支持:支持直接压缩输出,节省磁盘空间 用户权限分离导出:可将用户账户和权限单独导出2. 基本备份命令用法
最简单的完整实例备份命令如下:
mysqlpump -u root -p --all-databases > full_backup.sql
该命令会导出所有数据库到一个 SQL 文件中。
如果只想备份特定数据库:
mysqlpump -u root -p db1 db2 > backup_dbs.sql
只备份某个数据库中的部分表:
mysqlpump -u root -p db1 table1 table2 > backup_tables.sql
3. 使用并行线程加快备份
通过设置线程数提升备份性能:
mysqlpump -u root -p \ --default-parallelism=4 \ --chunk-filesize=100 \ --all-databases > backup_parallel.sql--default-parallelism=4:使用 4 个线程并行处理 --chunk-filesize=100:每个文件块约 100MB,便于管理大备份
注意:并行性在处理大量小表时效果更明显。
4. 排除特定数据库或表
有时需要跳过系统库或临时数据:
mysqlpump -u root -p \ --exclude-databases=mysql,sys,information_schema \ --all-databases > clean_backup.sql
排除特定表(例如日志表):
mysqlpump -u root -p db1 \ --exclude-tables=^log_,^temp_ \ > db1_no_logs.sql
5. 导出用户账号信息
默认情况下,mysqlpump 不导出用户。如需单独导出授权信息:
mysqlpump -u root -p \ --users \ --exclude-databases=% \ > users_backup.sql
此命令仅导出用户和权限,不包含业务数据。
6. 压缩备份输出
直接结合 gzip 压缩备份文件:
mysqlpump -u root -p --all-databases | gzip > backup.sql.gz
恢复时解压即可:
gunzip < backup.sql.gz | mysql -u root -p
7. 恢复备份文件
使用 mysql 命令导入备份:
mysql -u root -p < full_backup.sql
确保目标实例已存在所需数据库,或让备份包含 CREATE DATABASE 语句。
若备份中没有建库语句,可手动创建:
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS db1;"
8. 注意事项与建议
mysqlpump 要求 MySQL 版本 >= 5.7,低版本无法使用 备份期间尽量避免结构变更操作 定期测试恢复流程,确保备份可用 敏感信息(如密码)不会明文存储在备份中 对于超大表,考虑分表导出或使用物理备份(如 Percona XtraBackup)基本上就这些。mysqlpump 在多数场景下比 mysqldump 更快、更灵活,适合中大型数据库的日常逻辑备份任务。
