介绍
mysqlpump是一个与mysqldump非常相似的程序,带有一些额外的功能。
设置
1 并行处理
可以通过指定线程数(基于CPU数)来加快转储过程。 例如,使用八个线程进行完整备份:
shell> mysqlpump -u <user_name> -p<password> --default-parallelism=8 > full_backup.sql
假如报错如下
[ERROR] (1) A partial dump from a server that is using GTID-based replication requires the --set-gtid-purged=[ON|OFF] option to be specified. Use ON if the intention is to deploy a new replication slave using only some of the data from the dumped server. Use OFF if the intention is to repair a table by copying it within a topology, and use OFF if the intention is to copy a table between replication topologies that are disjoint and will remain so.
说明你现在使用的是GTID-based,需要根据提示加入–set-gtid-purged=[ON|OFF]参数。
- ON: 输出中包含 SET@@GLOBAL.GTID_PURGED 语句
- OFF: 输出中不包含 SET@@GLOBAL.GTID_PURGED 语句
因此对于使用 MySQL 5.6 及以上版本带有的 mysqldump 工具进行 MySQL 数据导出时设置该选项为 OFF。
可以指定每个数据库的线程数。
shell> mysqlpump -u <user_name> -p<password> --parallel-schemas=4:employees --default-parallelism=2 > full_backup.sql
shell> mysqlpump --parallel-schemas=3:db1,db2 --parallel-schemas=2:db3,db4 --default-parallelism=4 > full_backup.sql
2 使用正则表达式排除/包含数据库对象
备份以prod结尾的所有数据库:
shell> mysqlpump --include-databases=%prod --result-file=db_prod.sql
假设某些数据库中有一些测试表,并且您希望将它们从备份中排除; 可以使用–exclude-tables选项指定,该选项将在所有数据库中排除名称为test的表:
shell> mysqlpump --exclude-tables=test --result-file=backup_excluding_test.sql
每个包含和排除选项的值是以逗号分隔的相应对象类型的名称列表。 对象名称中允许使用通配符:
- %匹配零个或多个字符的任何序列
- _匹配任何单个字符
除了数据库和表之外,您还可以包括或排除触发器,例程,事件和用户,例如, - include-routines, - include-events和–exclude-triggers。
3 备份用户
在mysqldump中,无法在CREATE USER或GRANT语句中获得用户备份; 相反,你必须备份mysql.user表。 使用mysqlpump,可以将用户帐户转储为帐户管理语句(CREATE USER和GRANT),而不是插入到mysql系统数据库中:
其实简单说就能能备份出创建用户的语句,
shell> mysqlpump --exclude-databases=% --users > users_backup.sql
您还可以通过指定–exclude-users选项来排除某些用户:
shell> mysqlpump --exclude-databases=% --exclude-users=root --users > users_backup.sql
4 Compressed backups
可以压缩备份以最小化磁盘空间和网络带宽。 可以使用–compress-output = lz4或–compress-output = zlib。
前提是需要提前安装压缩与解压软件
lz4压缩
shell> mysqlpump -u root -pxxxx --compress-output=lz4 > dump.lz4
lz4解压
shell> lz4_decompress dump.lz4 dump.sql
zlib压缩
shell> mysqlpump -u root -pxxxx --compress-output=zlib > dump.zlib
zlib解压
shell> zlib_decompress dump.zlib dump.sql
5 快速重载
您会注意到在输出中,CREATE TABLE语句中省略了二级索引。 这将加快恢复过程。 使用ALTER TABLE语句在INSERT末尾添加索引。