MySQL5.7之后多了一个备份工具:mysqlpump。它是mysqldump的一个衍生,mysqldump就不多说明了,现在看看mysqlpump到底有了哪些提升,可以查看官方文档,这里针对如何使用做下说明。
mysqlpump和mysqldump一样,属于逻辑备份,备份以SQL形式的文本保存。逻辑备份相对物理备份的好处是不关心undo log的大小,直接备份数据即可。它最主要的特点是:
并行备份数据库和数据库中的对象的,加快备份过程。
更好的控制数据库和数据库对象(表,存储过程,用户帐户)的备份。
备份用户账号作为帐户管理语句(CREATE USER,GRANT),而不是直接插入到MySQL的系统数据库。
备份出来直接生成压缩后的备份文件。
备份进度指示(估计值)。
重新加载(还原)备份文件,先建表后插入数据最后建立索引,减少了索引维护开销,加快了还原速度。
备份可以排除或则指定数据库。
参数:绝大部分参数和mysqldump一致,顺便复习一下。对于mysqlpump参数会用背景色 标记出来。
1::在建立库之前先执行删库操作。
DROP DATABASE IF EXISTS `...`;
2::在建表之前先执行删表操作。
DROP TABLE IF EXISTS `...`.`...`;
3::在CREATE USER语句之前增加DROP USER,注意:这个参数需要和一起使用,否者不生效。
DROP USER 'backup'@'192.168.123.%';
4::备份表时,使用LOCK TABLES和UNLOCK TABLES。注意:这个参数不支持并行备份,需要关闭并行备份功能:=0
LOCK TABLES `...`.`...` WRITE; ... UNLOCK TABLES;
5::备份所有库,-A。
6::指定通过哪个网络接口来连接Mysql服务器(一台服务器可能有多个IP),防止同一个网卡出去影响业务。
7::dump出包含所有列的完整insert语句。
8:: 压缩客户端和服务器传输的所有的数据,-C。
9::默认不压缩输出,目前可以使用的压缩算法有LZ4和ZLIB。
shell> mysqlpump --compress-output=LZ4 > dump.lz4 shell> lz4_decompress dump.lz4 dump.txt shell> mysqlpump --compress-output=ZLIB > dump.zlib shell> zlib_decompress dump.zlib dump.txt
10::手动指定要备份的库,支持多个数据库,用空格分隔,-B。
11::指定备份的字符集。
12::指定并行线程数,默认是2,如果设置成0,表示不使用并行备份。注意:每个线程的备份步骤是:先create table但不建立二级索引(主键会在create table时候建立),再写入数据,最后建立二级索引。
13::延迟创建索引,直到所有数据都加载完之后,再创建索引,默认开启。若关闭则会和mysqldump一样:先创建一个表和所有索引,再导入数据,因为在加载还原数据的时候要维护二级索引的开销,导致效率比较低。关闭使用参数:。
14::备份数据库的事件,默认开启,关闭使用--skip-events参数。
15::备份排除该参数指定的数据库,多个用逗号分隔。类似的还有、、、、。
mysqlpump --exclude-databases=mysql,sys #备份过滤mysql和sys数据库 mysqlpump --exclude-tables=rr,tt #备份过滤所有数据库中rr、tt表 mysqlpump -B test --exclude-tables=tmp_ifulltext,tt #备份过滤test库中的rr、tt表 ...
注意:要是只备份数据库的账号,需要添加参数,并且需要过滤掉所有的数据库,如:
mysqlpump --users --exclude-databases=sys,mysql,db1,db2 --exclude-users=dba,backup #备份除dba和backup的所有账号。
16::指定备份数据库,多个用逗号分隔,类似的还有、、、、,大致方法使用同15。
17::备份用insert ignore语句代替insert语句。
18::备份出现的warnings和erros信息输出到一个指定的文件。
19::备份时用于client/server直接通信的最大buffer包的大小。
20::备份时用于client/server通信的初始buffer大小,当创建多行插入语句的时候,mysqlpump 创建行到N个字节长。