安装和使用 Percona 推出的 Xtrabackup 备份 MySQL


一、安装 XtraBackup

如果是32位的系统,默认将xtrabackup0.9.zip的内容放到mysql的bin目录下即可。

也可以编译数据库时一起编译,以5.0.88为例:
首先下载它的源代码:http://www.percona.com/mysql/xtrabackup/
注意:它必须和mysql源代码一起编译

# tar zxvf mysql-5.0.88.tar.gz
# tar zxvf xtrabackup-0.8-src.tar.gz

将XtraBackup移到InnoDB的源码目录,如果使用的是MySQL5.1,目录改为/mysql-5.1.*/storage/innobase/
# mv xtrabackup-0.8-src ./mysql-5.0.88/innobase/
# cd mysql-5.0.85/innobase

给InnoDB源码打上补丁,如果使用的是MySQL5.1,使用fix_innodb_for_backup51.patch
# patch –p2 < . /xtrabackup-0.8-src/fix_innodb_for_backup.patch

进入目录mysql-5.0.88
# cd ..
# ./configure

我们只需要Make就可以了,不需要Make install
#make
# cd innobase/xtrabackup-0.8-src

编译XtraBackup,MySQL5.1必须要使用XtraBackup0.9
#make

编译成功后,我们会获得可执行文件xtrabackup、innobackupex-1.5.1
xtrabackup可以在不加锁的情况下备份innodb数据表,不过此工具不能操作myisam的表。
innobackupex-1.5.1是一个脚本封装,能同时处理innodb和myisam,但在处理myisam时需要加一个读锁。


二、使用 XtraBackup
这里列出比较常用的备份命令:普通备份、打包(Tar)备份、压缩(Tar gzip)备份。

1、普通备份
备份:
# innobackupex-1.5.1 --defaults-file=/etc/my.cnf --user=root --password=pdcss --databases=pdcss /home/mysql/backup/ 2>/home/mysql/backup/common.log

这里我们使用mysql的root用户备份,密码为123。备份的目标目录(target dir)是/home/mysql/backup/1/innobackup/,innobackupex-1.5.1将在该目录下生成备份。
例如/home/mysql /backup/2011-05-05_08-55-57就是我执行脚本后生成的备份,所有的备份文件都在该2011-05-05_08-55-57目录下。
这里的2>/home/mysql/backup/common.log,是将备份过程中的输出信息重定向到common.log。
另外innobackupex-1.5.1还支持增量备份。

那如何恢复呢?为了模拟恢复过程,我先将MySQL停止,并删除MySQL的data目录下所有数据文件。
# cd /usr/local/mysql/data/pdcss
# rm –rf *
恢复:
# innobackupex-1.5.1 --apply-log /home/mysql/backup/2011-05-05_08-55-57
# innobackupex-1.5.1 --copy-back /home/mysql/backup/2011-05-05_08-55-57

# cd /usr/local/mysql/data/pdcss
修改文件的访问权限
# chown -R mysql:mysql .

命令innobackupex-1.5.1需要指定具体哪个备份目录,先应用备份log,然后copy back。这里的备份目录是/home/mysql/backup/2011-05-05_08-55-57
innobackupex-1.5.1会根据/et/my.cnf来确定MySQL的数据位置。

2. 打包(Tar)备份
这里基本和前面的普通备份类似,需要注意的是,恢复解压缩时,必须使用-i参数。
备份:
# innobackupex-1.5.1 --defaults-file=/etc/my.cnf --user=root --password=pdcss --databases=pdcss --stream=tar /home/mysql/backup/ 2>/home/mysql/backup/tar.log 1>/home/mysql/backup/tar.tar

恢复:
解压压缩 这里-i参数是必须的。
# tar –ixvf tar.tar

# innobackupex-1.5.1 --apply-log /home/mysql/backup/
# innobackupex-1.5.1 --copy-back /home/mysql/backup/

# cd /usr/local/mysql/data/pdcss
修改文件的访问权限
# chown -R mysql:mysql .


3. 压缩(tar gzip)备份
备份:
# innobackupex-1.5.1  --defaults-file=/etc/my.cnf --user=root --password=pdcss --databases=pdcss --stream=tar /home/mysql/backup/ 2>/home/mysql/backup/gz.log | gzip > /home/mysql/backup/gz.tar.gz
这里使用了管道|将innobackupex-1.5.1作为gzip的标准输入。它的恢复过程,只需要使用tar –izxvf 解压对应的文件后,操作完全同普通备份。

4、其它
解决备份出错“ innobackupex-1.5.1:fatal error:no 'mysqld' group in MySQL options ”问题:
修改 MySQL 配置文件 my.cnf 如下:
[mysqld]
......
#设置参数 datadir 的值
datadir=/usr/local/mysql/data
......

相关内容