mysql dump文件6g_【mysql】mysqldump和innobackupex备份

很好的对比总结文章,一共连续4篇:

https://blog.csdn.net/joy0921/article/details/80130548

https://blog.csdn.net/woqutechteam/article/details/75116292

https://blog.csdn.net/woqutechteam/article/details/75116314

https://blog.csdn.net/joy0921/article/details/80130860

上面4篇文章的整合,其实这篇文章的排版更好

https://www.cnblogs.com/janehoo/p/8079126.html

mysqldump:

https://www.cnblogs.com/janehoo/p/8079126.html

extrabackup

https://blog.csdn.net/wfs1994/article/details/80398234

https://www.cnblogs.com/wangxiaoqiangs/p/5961413.html

https://www.cnblogs.com/polestar/p/5618791.html

包含innobackupex的执行过程图

内核月报&补充说明

http://mysql.taobao.org/monthly/2016/03/07/

https://chuansongme.com/n/372118651979

1、innobackupex说明

innobackup,通过读取物理文件进行备份,因此速度上比mysqldump的效率要高。

读取物理文件,主要是innodb的表空间文件。只有innodb的表空间文件,才支持快照,并且必须是RR级别,RC级别没有快照。

原理:

innobackupex进行物理备份,原理是先拷贝 redo log,之后拷贝ibd文件,idb文件cp完毕后执行flush tables with read lock, fush no_write_to_binlog engine logs, show master status,  cp myisam表, 拷贝redo log,最后 unlock tables

这里的redo和innodb表的拷贝是以page为粒度,并且会进行checksum,myisam的拷贝是cp命令方式。

整个过程可以参考mysql内核月报:http://mysql.taobao.org/monthly/2016/03/07/

补充说明:https://chuansongme.com/n/372118651979

所以,在备份myisam表时,会加全局读锁,如果有很多myisam表,并且是主库,就不建议这么做,如果是备库,则有可能会导致主从复制延迟。

备份的时间点位,也是取决于FTWRL语句的执行时间。当这句语句执行后,不会有新的更新,从cp idb文件开始到FTWRL之间的变化,都记录在redo的增量里,此时加锁后,继续cp新增的redo即可。

备份出来的文理文件:ibdata1表空间文件,ib_buffer_pool文件,undo文件,database的独立表空间文件,和myisam表文件

当备份myisam文件时,为了保证数据一致性,需要加上全局读锁,即flush table with read lock

1.1、全量备份 and  增量备份

支持全量备份和增量备份。全量备份会记录备份的binlog点位,gtid,和buffer pool的checkpoint SLN;

增量备份,需要指定全量备份出来的数据文件路径。增量备份可以进行多次,每次会备份表空间(ibdata1,ib_buffer_pool,独立表空间文件,undo文件)的增量部分,即备份出delta文件,myisam每次都是全量备份(因为不支持快照),系统表有很多都是myisam,所以每次都是全量备份。

对于innodb文件,innobackupex可以支持增量备份,即对innodb的表空间文件(ibdata1,ib_buffer_pool,独立表空间文件,undo文件)进行增量备份。

1.2、恢复数据

恢复数据时,有两个阶段:prepare和recover

prepare阶段,命令直接作用在备份数据上。把redo log中的已经提交的事务replayed, 把未提交的事务rollback

recover阶段,就是把prepare阶段恢复好的数据,cp back或mv back到mysql的data目录

之后修改 数据文件的权限, 修改conf文件,即可。

1.3、prepare阶段注意事项——增量备份

如果存在增量备份,则在恢复全备数据的时候, 要加上 --redo-only选项,否则后续的redo和undo等checkpoint就无法衔接上。

只有在做最后一个增量备份的prepare时,不需要加--redo-only选项。(如果加了,也没关系,mysql在启动的时候会做 已提交事务的commit和 未提交事务的rollback)

1.4、缺陷

只能本地执行:innobackupex 只能在实例的机器上做备份, 备份出来的文件也只能放在本地,如果磁盘IO负载较高,或空间不足(当然,可以通过挂载新的网盘解决,eg,挂载块存储网盘,用完后再cp出去)。恢复数据时,虽然不用一定在本地执行(可以在其他机器上执行后再scp),但仍需要把数据cp到目标机器上。

恢复时每次都是全量数据。当需要恢复少量库和表时,这种方式就比较笨拙。

mysqldump出来的sql文件,可以通过匹配找到目标库表;

用mydumper工具导出的是单个表,更方便,在数据恢复时就比较灵活;

从binlog中过滤出目标库表相关的event,replicate binlog即可。此时需要binlog里面没有跨库表的操作,eg,update xx.xx这种

2、innobackupex实践

环境信息,工具目录/data01/tools/backup/innobackupex

mysql的data路径  /data01/mysql/inst/3306/data/

全量备份路径 /data01/mysql/backup/full/${number}

增量备份路径 /data01/mysql/backup/incre/${number}

2.1、执行全备

/data01/tools/innobackupex  --defaults-file=/data01/mysql/inst/3306/data/my.cnf  --no-timestamp  --ftwrl-wait-timeout=60  --parallel=4  --login-path=USERA   /data01/mysql/backup/full/record_1/    >   /data01/mysql/backup/full/record1.log  2>&1

注:也可以加入参数  --stream=tar  之后管道给 gzip 直接压缩。但这种方式会降低速度,建议先全备后,再压缩。

命令执行完毕后,正常情况下,会在record_1目录下有对应的文件,同时包含本次备份的mysql相关信息,和extrabackup工具的一些信息。eg,binlog位点,gtid,sln,整个执行命令的参数列表等。

2.2、执行增量备份

/data01/tools/innobackupex  --defaults-file=/data01/mysql/inst/3306/data/my.cnf  --no-timestamp  --ftwrl-wait-timeout=60  --parallel=4  --login-path=USERA   --incremental-basedir=/data01/mysql/backup/full/record_1/  --incremental    /data01/mysql/backup/incre/record_1

如果还有第二次增量备份,则 --incremental-basedir 需要设置成上一次增量备份数据的目录

2.3、恢复,prepare阶段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值