-
概述:
Xtrabackup是老牌的mysql技术咨询公司Percona发布的mysql的一个备份还原工具。Xtrabackup是一个开源、免费的支持InnoDB进行热备份的软件。
Xtrabackup可以做到:
-
不暂停服务器创建InnoDB热备份。
-
为Mysql做增量备份。
-
在Mysql服务器之间做在线表迁移。
-
使创建Mysql Replication更加容易。
-
备份Mysql而不增加服务器的负载。
-
软件的下载
-
官网地址:http://www.percona.com/downloads/XtraBackup/,这是Xtrabackup的官网,这边可以下载各个版本的Xtrabackup;
-
进入/usr/local/src,在linux上面运行wget直接进行下载:
-
软件的安装
解压:tar -xvf percona-xtrabackup-2.1.2-611.tar.gz
进入目录:cd /usr/local/src/percona-xtrabackup-2.1.2/bin
拷贝到/usr/bin目录:cp * /usr/bin
测试:输入命令xtrbackup,用tab键进行补全说明已经安装成;
-
软件的介绍
/usr/local/src/percona-xtrabackup-2.1.2/bin下面有几个工具
-rwxr-xr-x. 1 root root 110729 May 18 2013 innobackupex lrwxrwxrwx. 1 root root 12 Nov 6 17:28 innobackupex-1.5.1 -rwxr-xr-x. 1 root root 2211237 May 18 2013 xbcrypt -rwxr-xr-x. 1 root root 2285672 May 18 2013 xbstream -rwxr-xr-x. 1 root root 13033745 May 18 2013 xtrabackup -rwxr-xr-x. 1 root root 16333506 May 18 2013 xtrabackup_55 -rwxr-xr-x. 1 root root 80988093 May 18 2013 xtrabackup_56 |
Xtrabackup有两个主要的工具:xtrabackup、innobackupex
a) xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表;
b) innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的.innobackupex是一个perl脚本封装,封装了xtrabackup。主要是为了方便的同时备份InnoDB和MyISAM引擎的表,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项。如slave-info可以记录备份恢 复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。
c) xbcrypt:用来加密或解密备份的数据。d) xbstream:用来解压或压缩xbstream格式的压缩文件。
Xtrabackup有几种不同的版本,需要根据服务器版本选择相应的程序;
-
软件的使用本身是一件很简单的事情,在使用命令之前最好先对软件备份的原理有个大概的了解,保证在后面的命令的使用过程中做到胸有成竹,知道每个命令代表什么含义,每个命令将会产生什么样的后果;
以下介绍摘自官方:
在InnoDB内部会维护一个redo日志文件,我们也可以叫做事务日志文件。事务日志会存储每一个InnoDB表数据的记录修改。当InnoDB启动时,InnoDB会检查数据文件和事务日志,并执行两个步骤:它应用(前滚)已经提交的事务日志到数据文件,并将修改过但没有提交的数据进行回滚操作。 xtrabackup在启动时会记住log sequence number(LSN),并且复制所有的数据文件。复制过程需要一些时间,所以这期间如果数据文件有改动,那么将会使数据库处于一个不同的时间点。这时,xtrabackup会运行一个后台进程,用于监视事务日志,并从事务日志复制最新的修改。xtrabackup必须持续的做这个操作,是因为事务日志是会轮转重复的写入,并且事务日志可以被重用。所以xtrabackup自启动开始,就不停的将事务日志中每个数据文件的修改都记录下来。 上面就是xtrabackup的备份过程。接下来是准备(prepare)过程。在这个过程中,xtrabackup使用之前复制的事务日志,对各个数据文件执行灾难恢复(就像MySQL刚启动时要做的一样)。当这个过程结束后,数据库就可以做恢复还原了。 以上的过程在xtrabackup的编译二进制程序中实现。程序innobackupex可以允许我们备份MyISAM表和frm文件从而增加了便捷和功能。Innobackupex会启动xtrabackup,直到xtrabackup复制数据文件后,然后执行FLUSH TABLES WITH READ LOCK来阻止新的写入进来并把MyISAM表数据刷到硬盘上,之后复制MyISAM数据文件,最后释放锁。 备份MyISAM和InnoDB表最终会处于一致,在准备(prepare)过程结束后,InnoDB表数据已经前滚到整个备份结束的点,而不是回滚到xtrabackup刚开始时的点。这个时间点与执行FLUSH TABLES WITH READ LOCK的时间点相同,所以MyISAM表数据与InnoDB表数据是同步的。类似Oracle的,InnoDB的prepare过程可以称为recover(恢复),MyISAM的数据复制过程可以称为restore(还原)。 xtrabackup和innobackupex这两个工具都提供了许多前文没有提到的功能特点。手册上有对各个功能都有详细的介绍。简单介绍下,这些工具提供了如流(streaming)备份,增量(incremental)备份等,通过复制数据文件,复制日志文件和提交日志到数据文件(前滚)实现了各种复合备份方式。 |
简单理解如下,mysql的备份可以分成两部分:
-
复制所有的数据文件;
-
记录整个过程中的日志文件;
-
利用Xtrabackup进行数据库的全备
-
备份数据库
xtrabackup_55 --backup –datadir=/data/mysql --target-dir=/data/backup/
-
运行prepare
xtrabackup_55 --prepare --target-dir=/data/backup/
-
-
利用Xtrabackup进行数据库的增量备份
-
进行数据库的完整备份
xtrabackup_55 --backup --target-dir=/data/backup/
-
创建备份目录,并每日做增量备份
xtrabackup_55 --backup --target-dir=/data/backup/inc/tue --incremental –basedir=/data/backup
xtrabackup_55 --backup --target-dir=/data/backup/inc/wed --incremental –basedir=/data/backup
-
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Xtrabackup的介绍暂时到此为止,后续继续补充详细的备份和恢复、不停机创建mysql的主从复制……
*********************************************************************************************************************
本文作者:JOHN QQ:1916066696 (请备注数据库)
ORACLE技术博客:ORACLE 猎人笔记 http://blog.itpub.net/12679300/
请扫描加微信号!
********************************************************************************************************************