MySQLPump为MySQL数据库在5.7版本之后推出的逻辑备份工具,是MySQLDump工具的一个衍生。备份是将数据库实例以逻辑的SQL语句的形式直接输出或生成备份的文件的过程。
该工具较MySQLDump相比,几个显著特点1.支持并行备份加快了备份过程 2.明显的备份进度指示 3.数据加载策略变化(最后建索引) 等等。
注:企业版自带该工具,以下安装步骤针对社区版
1.官方表示在mysql5.7.11之前无法保证数据的一致性,所以5.7.11之前该工具基本无法使用
2. mysqlpump的多线程备份是基于表的,当数据库中有很多张小表个别几张超大表的时候,mysqlpump的备份速度其实还不如mysqldump。
MySQLPump的并行导出功能的架构为:队列+线程,允许有多个队列,每个队列下有多个线程,而一个队列可以绑定1个或者多个数据库,从而达到提升备份速度的功能。

常用参数 |
说明 |
-u |
备份用户名 |
-p |
指定用户名密码 |
-P |
连接数据库端口 |
-h |
指定数据库地址 |
-A, --all-databases |
全库 |
--compress-output=name |
将备份数据压缩输出,目前支持的压缩算法有LZ4和ZLIB |
-B, --databases |
指定备份数据库,多个库之间用逗号分隔 |
--default-parallelism=# |
备份并行线程数,默认为2,若指定该参数为0,则表示不使用并行备份。 |
--defer-table-indexes |
延迟创建索引,将全部数据备份结束后再创建索引,默认开启。 |
--exclude-databases=name |
备份时排除该参数指定的数据库,多个数据库之前使用,分隔 |
--exclude-tables=name |
备份时排除该参数指定的表,多个表之前使用,分隔 |
--include-databases=name |
备份指定数据库,多个数据库之前使用,分隔 |
--include-tables=name |
备份指定表,多个表之前使用,分隔 |
--parallel-schemas=(N:)db_list |
指定并行备份的库,多个库之间用逗号分隔。也可以直接指定备份该库启用的线程队列数,若不指定则有-default-parallelism参数决定,默认为2。 |
-d, --skip-dump-rows |
只备份表结构,不备份数据 |
--users |
备份数据库用户,备份形式为create user ... ,grant .... 如果只需要备份数据库账号可以使用 mysqlpump --exclude-databases=% --users |
--watch-progress |
显示备份进度,默认开启 |
--single-transaction |
开启事务 |
mysqlpump -uroot -pmysql --all-databases --default-character-set=utf8 --single-transaction > full.sql
mysqlpump -uroot -pmysql --all-databases --set-gtid-purged=AUTO --single-transaction > full.sql
注:MySQL5.7.18版本出现该参数
mysqlpump -uroot -pmysql --single-transaction --default-character-set=utf8 --databases db_name1 [db_name2] > db_name12.sql
mysqlpump -uroot -pmysql --single-transaction --default-character-set=utf8 db_name tbl_name1 [tbl_name2] >two.sql
mysqlpump -uroot -pmysql --exclude-databases=% --users > user.sql
mysqlpump -uroot -pmysql --all-databases --skip-dump-rows --single-transaction > full_defs.sql
注:可用于测试升级
mysqlpump -uroot -pmysql --all-databases --no-create-db --no-create-info --single-transaction > full_data.sql
mysqlpump -uroot -pmysql --all-databases --single-transaction --result-file=/tmp/full.sql
-- 4个线程备份test1和test2,5个线程备份test3。通过show processlist可以看到有9个线程
mysqlpump -uroot -pmysql --single-transaction --parallel-schemas=4:test1,test2 --parallel-schemas=5:test3
-- 默认2个线程,即2个线程备份test1和test2,2个线程备份test3
mysqlpump -uroot -pmysql --single-transaction --parallel-schemas=test1,test2 --parallel-schemas=test3
----LZ4格式
mysqlpump -uroot -pmysql --single-transaction --compress-output=lz4 test > /tmp/test.sql lz4_decompress test.sql y.sql
----ZLIB格式
mysqlpump -uroot -pmysql --single-transaction --compress-output=ZLIB test > /tmp/test.sql zlib_decompress test.sql y.sql
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30310891/viewspace-2785694/ ,如需转载,请注明出处,否则将追究法律责任。