没有合适的资源?快使用搜索试试~ 我知道了~
08-MySQL逻辑备份工具mysqldump&mysqlpump&mydumper1
需积分: 0 0 下载量 194 浏览量
2022-08-03
14:48:56
上传
评论 1
收藏 566KB PDF 举报
温馨提示
试读
16页
08-MySQL逻辑备份工具mysqldump&mysqlpump&mydumper1
资源推荐
资源详情
资源评论
MySQL逻辑备份工具
mysqldump,mysqlpump,mydumper
MySQL逻辑备份 工具mysqldump,mysqlpump,mydumper
mysqldump
mysqlpump
参数
使用说明
mydumper
mydumper备份原理
mydumper参数
myloader参数
使用案例
mysqldump,mysqlpump,mydumper对比
mysqldump
mysql经典逻辑备份工具
参数说明,具体的参数可以用mysqldumphelp查看。
比较重要的几个参数
①:singletransaction
通过将导出操作封装在一个事务(RepeatableRead)内来使得导出的数据是一个一致性快照。只有当表使用支持
MVCC的存储引擎(目前只有InnoDB)时才可以工作;其他引擎不能保证导出是一致的。当导出开启了–single
transaction选项时,要确保导出文件有效(正确的表数据和二进制日志位置),就要保证没有其他连接会执行如下
语句:ALTERTABLE,DROPTABLE,RENAMETABLE,TRUNCATETABLE,这会导致一致性快照失效。这个选
项开启后会自动关闭locktables。并且在mysql5.7.11之前,defaultparallelism大于1的时候和此参也互斥,必须使
用defaultparallelism=0。5.7.11之后解决了singletransaction和defaultparallelism的互斥问题。
②:masterdata
这个选项可以把binlog的位置和文件名添加到输出中,如果等于1,将会打印成一个CHANGEMASTER命令;如果
等于2,会加上注释前缀。并且这个选项会自动打开–lockalltables,除非同时设置了–singletransaction(这种情
况下,全局读锁只会在开始dump的时候加上一小段时间,不要忘了阅读–singletransaction的部分)。在任何情况
下,所有日志中的操作都会发生在导出的准确时刻。这个选项会自动关闭–locktables。打开该参数需要有reload权
限,并且服务器开启binlog。
③:lockalltables,x
锁定所有库中所有的表。这是通过在整个dump的过程中持有全局读锁来实现的。会自动关闭–singletransaction和
–locktables。
④:locktables,l
备份某个库就锁该库的所有表,用READLOCAL来锁表。MyISAM允许并发写入,因为锁表只针对指定的数据库,
不能保证物理上的一致性,不同库的表备份完成时会有不同的状态。用–skiplocktables来关闭。
⑤:flushlogs,F
在开始导出前刷新服务器的日志文件。注意,如果你一次性导出很多数据库(使用databases=或alldatabases
选项),导出每个库时都会触发日志刷新。例外是当使用了lockalltables、masterdata或singletransaction
时:日志只会被刷新一次,那个时候所有表都会被锁住。所以如果你希望你的导出和日志刷新发生在同一个确定的
时刻,你需要使用lockalltables、masterdata和singletransaction配合–flushlogs。
⑥:opt
该参数默认开启,表示快递启动adddroptableaddlockscreateoptionsdisablekeysextendedinsert
locktablesquicksetcharset选项,通过skipopt关闭。
mysqlpump
MySQL5.7之后多了一个备份工具:mysqlpump。它是mysqldump的一个衍生,mysqldump就不多说明了,现在看
看mysqlpump到底有了哪些提升,可以查看官方文档,这里针对如何使用做下说明。
mysqlpump和mysqldump一样,属于逻辑备份,备份以SQL形式的文本保存。逻辑备份相对物理备份的好处是不关
心undolog的大小,直接备份数据即可。它最主要的特点是:
并行备份数据库和数据库中的对象的,加快备份过程。
更好的控制数据库和数据库对象(表,存储过程,用户帐户)的备份。
备份用户账号作为帐户管理语句(CREATEUSER,GRANT),而不是直接插入到MySQL的系统数据库。
备份出来直接生成压缩后的备份文件。
备份进度指示(估计值)。
重新加载(还原)备份文件,先建表后插入数据最后建立索引,减少了索引维护开销,
加快了还原速度。
备份可以排除或则指定数据库。
参数
绝大部分参数和mysqldump一致
1:adddropdatabase:在建立库之前先执行删库操作。
DROPDATABASEIFEXISTS ... ;
2:adddroptable:在建表之前先执行删表操作。
DROPTABLEIFEXISTS ... . ... ;
3:adddropuser:在CREATEUSER语句之前增加DROPUSER,注意:这个参数需要和users一起使用,否者
不生效。
DROPUSER'backup'@'192.168.123.%';
4:addlocks:备份表时,使用LOCKTABLES和UNLOCKTABLES。注意:这个参数不支持并行备份,需要关闭
并行备份功能:defaultparallelism=0
5:alldatabases:备份所有库,A。
LOCKTABLES`...`.`...`WRITE;
...
UNLOCKTABLES;
6:bindaddress:指定通过哪个网络接口来连接Mysql服务器(一台服务器可能有多个IP),防止同一个网卡出去
影响业务。
7:completeinsert:dump出包含所有列的完整insert语句。
8:compress:压缩客户端和服务器传输的所有的数据,C。
9:compressoutput:默认不压缩输出,目前可以使用的压缩算法有LZ4和ZLIB。
10:databases:手动指定要备份的库,支持多个数据库,用空格分隔,B。
11:defaultcharacterset:指定备份的字符集。
12:defaultparallelism:指定并行线程数,默认是2,如果设置成0,表示不使用并行备份。注意:每个线程的备
份步骤是:先createtable但不建立二级索引(主键会在createtable时候建立),再写入数据,最后建立二级索引。
13:defertableindexes:延迟创建索引,直到所有数据都加载完之后,再创建索引,默认开启。若关闭则会和
mysqldump一样:先创建一个表和所有索引,再导入数据,因为在加载还原数据的时候要维护二级索引的开销,导
致效率比较低。关闭使用参数:skipdefertableindexes。
14:events:备份数据库的事件,默认开启,关闭使用skipevents参数。
15:excludedatabases:备份排除该参数指定的数据库,多个用逗号分隔。类似的还有excludeevents、
excluderoutines、excludetables、excludetriggers、excludeusers。
注意:要是只备份数据库的账号,需要添加参数users,并且需要过滤掉所有的数据库,如:
mysqlpumpusersexcludedatabases=sys,mysql,db1,db2excludeusers=dba,backup#备份除dba和backup
的所有账号。
16:includedatabases:指定备份数据库,多个用逗号分隔,类似的还有includeevents、includeroutines、
includetables、includetriggers、includeusers,大致方法使用同15。
17:insertignore:备份用insertignore语句代替insert语句。
18:logerrorfile:备份出现的warnings和erros信息输出到一个指定的文件。
19:maxallowedpacket:备份时用于client/server直接通信的最大buffer包的大小。
20:netbufferlength:备份时用于client/server通信的初始buffer大小,当创建多行插入语句的时候,mysqlpump
创建行到N个字节长。
21:nocreatedb:备份不写CREATEDATABASE语句。要是备份多个库,需要使用参数B,而使用B的时候会
出现createdatabase语句,该参数可以屏蔽createdatabase语句。
shell>mysqlpump‐‐compress‐output=LZ4>dump.lz4
shell>lz4_decompressdump.lz4dump.txt
shell>mysqlpump‐‐compress‐output=ZLIB>dump.zlib
shell>zlib_decompressdump.zlibdump.txt
mysqlpump‐‐exclude‐databases=mysql,sys#备份过滤mysql和sys数据库
mysqlpump‐‐exclude‐tables=rr,tt#备份过滤所有数据库中rr、tt表
mysqlpump‐Btest‐‐exclude‐tables=tmp_ifulltext,tt#备份过滤test库中的rr、tt表
剩余15页未读,继续阅读
资源评论
魏水华
- 粉丝: 10
- 资源: 283
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功