XtraBackup备份还原实战

    Read

原理:

XtraBackup对Innodb的备份之所以是热备,无需锁表,是基于Innodb自身的崩溃恢复机制,它首先复制所有的Innodb数据文件,这样复制出来的文件肯定是不一致的,然后对每个文件进行崩溃恢复处理,最终达到一致。就和MySQL在启动Innodb的时候一样,会通过比较数据文件头和redo log文件头信息来检查数据是否是一致的,如果不一致就尝试通过前滚(把redo log中所有提交的事务写入数据文件)和回滚(从数据文件中撤销所有redo log中未提交的事务引起的修改)来使数据达到最终一致。
XtraBackup在启动的时候会记录一个LSN(log sequence number),然后就把所有的Innodb数据文件复制出来,这样复制出来的数据文件是不一致的,但是XtraBackup会在后台运行一个进程把所有对redo log file的修改记录下来,只要有了这个数据,就能进行崩溃恢复。只所以要额外记录下来,是因为MySQL自身的redo log file是可重用的。
以上的操作是由xtrabackup二进制程序(比如xtrabackup_55)完成的,如果使用innobackupex 脚本,刚才的步骤完成以后,innobackupex就会去备份MyISAM表和.frm文件,这时要保证数据的一致性就会先锁表了,通过FLUSH TABLES WITH READ LOCK命令锁表然后把文件复制出来,再释放掉这个锁。
在恢复数据的时候,要经过prepare(recovery)和restore两个步骤。在prepare结束以后,Innodb的表恢复到了复制Innodb文件结束的时间点,这个时间点也就是锁表复制MyISAM表的起点,所以最终数据是一致的。一般我们在恢复的时候执行两次prepare,是因为第二次prepare会帮助我们生成redo log文件,从而加快MySQL数据库启动的速度。 SourceByrd's Weblog-https://note.t4x.org/database/xtrabackup-restore-test/

一、操作系统环境:

SourceByrd's Weblog-https://note.t4x.org/database/xtrabackup-restore-test/

二、XtraBackup安装:

SourceByrd's Weblog-https://note.t4x.org/database/xtrabackup-restore-test/

三、XtraBackup全备:

1.试验数据


2.全备检查
SourceByrd's Weblog-https://note.t4x.org/database/xtrabackup-restore-test/

恢复方法两种:SourceByrd's Weblog-https://note.t4x.org/database/xtrabackup-restore-test/

方法1:


方法2:
SourceByrd's Weblog-https://note.t4x.org/database/xtrabackup-restore-test/

四、XtraBackup增量备份:

1.全量备份


2.增量备份
SourceByrd's Weblog-https://note.t4x.org/database/xtrabackup-restore-test/

五、XtraBackup增量恢复:

SourceByrd's Weblog-https://note.t4x.org/database/xtrabackup-restore-test/

参考文档:
1:https://www.percona.com/doc/percona-xtrabackup/2.1/xtrabackup_bin/xtrabackup_binary.htmlSourceByrd's Weblog-https://note.t4x.org/database/xtrabackup-restore-test/ SourceByrd's Weblog-https://note.t4x.org/database/xtrabackup-restore-test/

申明:除非注明Byrd's Blog内容均为原创,未经许可禁止转载!详情请阅读版权申明!
Byrd
  • by Published on May 11, 2019
  • 原文链接:https://note.t4x.org/database/xtrabackup-restore-test/
匿名

Comment

Anonymous

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: