第一部分说明
MySQLPump为MySQL数据库在5.7版本之后推出的逻辑备份工具,是MySQLDump工具的一个衍生。备份是将数据库实例以逻辑的SQL语句的形式直接输出或生成备份的文件的过程。该工具较MySQLDump相比,几个显著特点1.支持并行备份加快了备份过程 2.明显的备份进度指示 3.数据加载策略变化(最后建索引) 等等。
1.1MySQLPump优势
1.基于表并行备份数据库和数据库中的对象的,加快备份过程。(--default-parallelism)
2.更好的控制数据库和数据库对象(表,存储过程,用户帐户)的备份。
3.备份用户账号作为帐户管理语句(CREATE USER,GRANT),而不是直接插入到MySQL的系统数据库。
4.能支持压缩备份。
5.查看备份进度(估计值)。
6.重新加载(还原)备份文件,先建表后插入数据最后建立索引,减少了索引维护开销,加快了还原速度。
1.2MySQLPump工具注意点
注:企业版自带该工具,以下安装步骤针对社区版1.官方表示在mysql5.7.11之前无法保证数据的一致性,所以5.7.11之前该工具基本无法使用2. mysqlpump的多线程备份是基于表的,当数据库中有很多张小表个别几张超大表的时候,mysqlpump的备份速度其实还不如mysqldump。
1.3MySQLPump并行导出功能架构
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 |
开启事务 |
第三部分 导出示例
3.1全库导出
mysqlpump -uroot -pmysql --all-databases --default-character-set=utf8 --single-transaction > full.sql
3.2全库导出搭建主从 (GTID)
mysqlpump -uroot -pmysql --all-databases --set-gtid-purged=AUTO --single-transaction > full.sql
注:MySQL5.7.18版本出现该参数
3.3单库/多库导出
mysqlpump -uroot -pmysql --single-transaction --default-character-set=utf8 --databases db_name1 [db_name2] > db_name12.sql
3.4单表/多表导出
mysqlpump -uroot -pmysql --single-transaction --default-character-set=utf8 db_name tbl_name1 [tbl_name2] >two.sql
3.5只备份账号
mysqlpump -uroot -pmysql --exclude-databases=% --users > user.sql
3.6只导出结构
mysqlpump -uroot -pmysql --all-databases --skip-dump-rows --single-transaction > full_defs.sql
注:可用于测试升级
3.7只导出数据
mysqlpump -uroot -pmysql --all-databases --no-create-db --no-create-info --single-transaction > full_data.sql
3.8导出到指定目录
mysqlpump -uroot -pmysql --all-databases --single-transaction --result-file=/tmp/full.sql
3.9并行导出
-- 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
3.10压缩备份
----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
