MySQL 系列连载之 XtraBackup 备份原理(1)
《MySQL 系列连载之 XtraBackup 备份原理(1)》要点: 导读在日常的linux运维工作中,大数据量备份与还原,始终是个难点.关于mysql的备份和恢复,比较传统的是用mysqldump工具,今天本文推荐另一个备份工具innobackupex. 如果您在本文遇到任何问题或疑问请到QQ群中与我们交流.也可在下方进行评论.我将在第一时间和您进行交流,共同学习. Xtrabackup简介innobackupex和mysqldump都可以对mysql进行热备份的,mysqldump对mysql的innodb的备份可以使用single-transaction参数来开启一个事务,利用innodb的mvcc来不进行锁表进行热备份,mysqldump备份是逻辑备份,备份出来的文件是sql语句,所以备份和恢复的时候很慢,但是备份和恢复时候很清楚.当MYSQL数据超过10G时,用mysqldump来导出备份就比较慢了,此种情况下用innobackupex这个工具就比mysqldump要快很多.利用它对mysql做全量和增量备份.
此工具调用xtrabackup和tar4ibd工具,实现很多对性能要求并不高的任务和备份逻辑,可以说它是innodb热备工具ibbackup的一个开源替代品. XtraBackup是目前首选的备份方案之一 原理1、MySQL主从同步原理
通过设置在Master MySQL上的binlog(使其处于打开状态),Slave MySQL上通过一个I/O线程从Master MySQL上读取binlog,然后传输到Slave MySQL的中继日志中,然后Slave MySQL的SQL线程从中继日志中读取中继日志,然后应用到Slave MySQL的数据库中.这样实现了主从数据同步功能. 2、XtraBackup备份原理 innobackupex在后台线程不断追踪InnoDB的日志文件,然后复制InnoDB的数据文件.数据文件复制完成之后,日志的复制线程也会结束.这样就得到了不在同一时间点的数据副本和开始备份以后的事务日志.完成上面的步骤之后,就可以使用InnoDB崩溃恢复代码执行事务日志(redo log),以达到数据的一致性. backup,备份阶段,追踪事务日志和复制数据文件(物理备份). preparing,重放事务日志,使所有的数据处于同一个时间点,达到一致性状态. 4、XtraBackup的优点
5、Xtrabackup的两个工具 1)xtrabackup :只能用于热备份innodb,xtradb两种数据引擎表的工具,不能备份其他表. 2)innobackupex:是一个对xtrabackup封装的perl脚本,提供了用于myisam(会锁表)和innodb引擎,及混合使用引擎备份的能力.主要是为了方便同时备份InnoDB和MyISAM引擎的表,但在处理myisam时需要加一个读锁.并且加入了一些使用的选项.如slave-info可以记录备份恢 复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave. innobackupex比xtarbackup有更强的功能,它整合了xtrabackup和其他的一些功能,它不但可以全量备份/恢复,还可以基于时间的增量备份与恢复.innobackupex同时支持innodb,myisam. 6、Xtrabackup可以做什么
MySQL数据库本身提供的工具并不支持真正的增量备份,二进制日志恢复是point-in-time(时间点)的恢复而不是增量备份. 7、Xtrabackup工具工作原理 支持对InnoDB存储引擎的增量备份 1)首先完成一个完全备份,并记录下此时检查点的LSN(Log Sequence Number). 2)在进行增量备份时,比较表空间中每个页的LSN是否大于上次备份时的LSN,如果是,则备份该页,同时记录当前检查点的LSN.首先,在logfile中找到并记录最后一个checkpoint(“last checkpoint LSN”),然后开始从LSN的位置开始拷贝InnoDB的logfile到xtrabackup_logfile;接着,开始拷贝全部的数据文件.ibd;在拷贝全部数据文件结束之后,才停止拷贝logfile.因为logfile里面记录全部的数据修改情况,所以,即时在备份过程中数据文件被修改过了,恢复时仍然能够通过解析xtrabackup_logfile保持数据的一致. 8、innobackupex备份mysql数据的流程 innobackupex首先调用xtrabackup来备份innodb数据文件,当xtrabackup完成后,innobackupex就查看文件xtrabackup_suspended ;然后执行“FLUSH TABLES WITH READ LOCK”来备份其他的文件. 9、innobackupex恢复mysql数据的流程 innobackupex首先读取my.cnf,查看变量(datadir,innodb_data_home_dir,innodb_data_file_path,innodb_log_group_home_dir)对应的目录是存在,确定相关目录存在后,然后先copy myisam表和索引,然后在copy innodb的表、索引和日志. 10、innobackupex备份和恢复的工作原理 (1)备份的工作原理
(2)恢复的工作原理
后记第一篇 MySQL 系列连载之 XtraBackup 备份原理(1) 第二篇 MySQL 系列连载之 XtraBackup全量热备 or 恢复实践(2) 第三篇 MySQL 系列连载之 XtraBackup 增量热备 or 恢复实践(3) 感谢您阅读. (编辑:ASP站长网) |