欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

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

程序员文章站 2022-06-13 18:59:31
...

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

一、安装 XtraBackup

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

也可以编译数据库时一起编译,以5.0.88为例:
首先下载它的源代码:
注意:它必须和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

进入目录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
......

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