下载安装地址:
这里选择二进制通用格式安装,安装完成之后解压,将bin目录添加到path中。
我使用的是最新版本的xtrabackup
[root@mysql1 ~]# xtrabackup -v
xtrabackup version 2.3.2 based on MySQL server 5.6.24 Linux (x86_64) (revision id: 306a2e0)
貌似新版本的xtrabackup将xtrabackup和innobackupex整合在了一起,使用xtrabackup现在也可以备份非innodb的表,备份非innodb表的时候只能全备。
备份过程
简单的全库备份语句如下:
[root@mysql1 bin]# xtrabackup --defaults-file=/usr/local/mysql/my.cnf --backup --target-dir=/data/bak_01
[root@mysql1 bin]# innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password='root' /data/bak
[root@mysql1 bak02]# ls -l
-rw-r----- 1 root root 387 Nov 2 13:17 backup-my.cnf
drwx------ 2 root root 4096 Nov 2 13:17 brent
-rw-r----- 1 root root 79691776 Nov 2 13:16 ibdata1
drwx------ 2 root root 4096 Nov 2 13:17 mysql
drwx------ 2 root root 4096 Nov 2 13:17 performance_schema
drwx------ 2 root root 4096 Nov 2 13:17 test
drwx------ 2 root root 4096 Nov 2 13:17 test2
-rw-r----- 1 root root 21 Nov 2 13:17 xtrabackup_binlog_info
-rw-r----- 1 root root 117 Nov 2 13:17 xtrabackup_checkpoints
-rw-r----- 1 root root 540 Nov 2 13:17 xtrabackup_info
drwx------ 2 root root 4096 Nov 2 13:17 brent
-rw-r----- 1 root root 79691776 Nov 2 13:16 ibdata1
drwx------ 2 root root 4096 Nov 2 13:17 mysql
drwx------ 2 root root 4096 Nov 2 13:17 performance_schema
drwx------ 2 root root 4096 Nov 2 13:17 test
drwx------ 2 root root 4096 Nov 2 13:17 test2
-rw-r----- 1 root root 21 Nov 2 13:17 xtrabackup_binlog_info
-rw-r----- 1 root root 117 Nov 2 13:17 xtrabackup_checkpoints
-rw-r----- 1 root root 540 Nov 2 13:17 xtrabackup_info
-rw-r----- 1 root root 2560 Nov 2 13:17 xtrabackup_logfile
xtrabackup_binlog_info:记录备份时二进制日志文件位置
xtrabackup_checkpoints:记录LSN(LOG SEQUENCE NUMBER)以及备份的的类型
xtrabackup_info:记录备份的一些信息
xtrabackup_logfile:备份日志文件,记录备份过程中数据库的变更
增量备份,需要指定全量的目录,其实就是为了获取上一次备份的lsn号,并且从指定的lsn号开始备份,如果知道明确的lsn号,可以直接用参数--incremental-lsn指定lsn号
具体备份的lsn号可以通过查看文件xtrabackup_checkpoints获得。
先全备:
[root@mysql1 bin]# innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password='root' /data/bak
再增量备份,指定--incremental-basedir,从而获取全备的lsn
[root@mysql1 bin]# innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password='root'--incremental --incremental-basedir=/data/bak/
2015-11-02_19-52-31
/data/incre
继续增量备份,那么同样使用上面的语句,只不过指定--incremental-basedir的时候指定上一个增量的目录就行了。
[root@mysql1 bin]# innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password='root' --incremental --incremental-basedir=/data/
incre/2015-11-02_19-56-01
/data/incre
恢复过程
恢复的过程分为两步,先是prepare然后是copy
prepare就是应用日志的过程,如果有全备和增量备份,需要将增量备份的目录apply到全备的目录中,
copy就是将prepare完成后的目录copy到datadir目录下
由于xrabackup没有copy的过程,只能手工copy,因此我们一般使用innobackupex进行恢复,innobackupex恢复的过程中会调用xtrabackup的prepare命令,具体如下:
先prepare应用日志:
如果应用之后还有增量日志需要应用,必须指定--redo-only参数,为后面的增量应用做准备
[root@mysql1 bin]# innobackupex --defaults-file=/usr/local/mysql/my.cnf--apply-log --redo-only /data/bak/2015-11-02_19-52-31/
先应用第一个增量,因为后面还有增量需要应用,所以这个增量也需要指定--redo-only
[root@mysql1 bin]# innobackupex --defaults-file=/usr/local/mysql/my.cnf--apply-log --redo-only /data/bak/2015-11-02_19-52-31/ --incremental-dir=/data/incre/2015-11-02_19-56-01
下面这是最后一个增量,所以不需要加--redo-only参数
[root@mysql1 bin]# innobackupex --defaults-file=/usr/local/mysql/my.cnf--apply-log /data/bak/2015-11-02_19-52-31/ --incremental-dir=/data/incre/2015-11-02_20-01-08
全部增量应用完成之后,还需要再做一次apply,这次做的目的是为了创建innodb的日志文件,对于一个备份集,最多执行两次apply,做多了也没有意义
[root@mysql1 bin]# innobackupex --defaults-file=/usr/local/mysql/my.cnf--apply-log /data/bak/2015-11-02_19-52-31/
最后使用--copy-back命令将备份集目录拷贝到datadir目录下
[root@mysql1 bin]# innobackupex --defaults-file=/usr/local/mysql/my.cnf --copy-back /data/bak/2015-11-02_19-52-31/
还需要主要当前恢复完成之后的目录的权限所属,一般都是root.root,需要将他们改为mysql.mysql
最后就可以打开mysql了。