手记

Xtrabackup之innobackupex备份恢复详解


安装配置Xtrabackup

先看看如何安装Xtrabackup,最简单的安装方式是使用RPM包,不过想使用源代码方式安装的话,其安装方式有点古怪,因为它采用的在MySQL源代码上打补丁构建的方式安装的。这里使用二进制包的安装方式,相对比较灵活。

Shell> mkdir /usr/local/xtrabackup

Shell> tar -zxvf xtrabackup-1.6.tar.gz –C /usr/local/xtrabackup

Shell>cd /usr/local/xtrabackup/bin

Shell>ln –s innobackupex-1.5.1 innobackupex

配置环境变量:

Shell>export PATH=$PATH:/usr/local/xtrabackup/bin

希望永久生效的话,可以加到

echo "export PATH=$PATH:/usr/local/xtrabackup/bin" >> /etc/profile

source /etc/profile

修改mysql配置文件:

Shell> vi /etc/my.cnf

添加或修改:datadir =/usr/local/mysql/var(数据库目录)

特别注意:default_table_type = InnoDB(必须改,否则进行增量备份的时候不成功)

经过几天的测试,文档终于可以与大家分享了。使用Xtrabackup能够非常快速地备份与恢复mysql数据库,是mysql dba的首选。Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。 Xtrabackup有两个主要的工具:xtrabackup、innobackupex xtrabackup只能备份InnoDB和XtraDB两种数据表,支持在线热备份,不会锁表 innobackupex则封装了xtrabackup,同时可以备份MyISAM数据表,如果你的数据库里有innodb和myisam存储引擎,只能使用innobackupex备份,以下是线上用的简单脚本

#!/bin/bash

USER=root

PASSWORD=123456

date > /data/scripts/backup.log

echo "begin backup-------------------------------" >> /data/scripts/backup.log

find /data/mysql/backups -mtime +7 |xargs rm -rf

/usr/bin/innobackupex --defaults-file=/opt/mysql5/my.cnf --user=$USER --password=$PASSWORD --databases="test1 test2" /data/mysql/backups >> /data/scripts/backup.log 2>&1

echo "end backup-------------------------------" >> /data/scripts/backup.log

date >> /data/scripts/backup.log

mail -s "backup Passport report" "localhost@localhost" < /data/scripts/backup.log

exit 0

以下是恢复脚本:

#!/bin/bash

USER=root

PASSWORD=123456

/etc/init.d/mysql stop

/usr/bin/innobackupex-1.5.1 --apply-log --defaults-file=/opt/mysql5/my.cnf --user=$USER --password=$PASSWORD /data/mysql/backups/passportdb/`date +%Y-%m-%d`

rm -rf /opt/mysql5/var/test1

rm -rf /opt/mysql5/var/test2

rm -f /opt/mysql5/var/ibdata1

rm -f /opt/mysql5/var/ib_logfile0

rm -f /opt/mysql5/var/ib_logfile1

cd /data/mysql/backups

tar zcvf `date +%Y-%m-%d`.tgz  `date +%Y-%m-%d`

rm -rf `date -d -30day +%Y-%m-%d`.tgz

cp -r /data/mysql/backups/`date +%Y-%m-%d`/ib* /opt/mysql5/var/

cp -r /data/mysql/backups/`date +%Y-%m-%d`/test1 /opt/mysql5/var/

cp -r /data/mysql/backups/`date +%Y-%m-%d`/test2 /opt/mysql5/var/

rm -rf /data/mysql/backups/`date +%Y-%m-%d`/*

chown -R mysql.mysql /opt/mysql5/var/test1

chown -R mysql.mysql /opt/mysql5/var/test2

chown mysql.mysql /opt/mysql5/var/ib*

/etc/init.d/mysql start

恢复的时候执行完/usr/bin/innobackupex-1.5.1 --apply-log后,直接拷贝就可以了,不用使用/usr/bin/innobackupex-1.5.1 --copy-back命令。如果使用/usr/bin/innobackupex-1.5.1 --copy-back命令后,会报Original data directory is not empty! at /usr/local/xtrabackup/bin/innobackupex line 538.恢复的目录必须为空。经查官网,这是xtrabackup的一个BUG。

innobackupex did not check that MySQL datadir was empty before –copy-back was run. With this bug fix, innobackupex will now error out of the –copy-back operation if the destination is not empty, avoiding potential data loss or a strang combination of a restored backup and previous data. Bug Fixed: #737569 (Valentine Gostev)

网上有好多文章恢复使用

/usr/bin/innobackupex-1.5.1 --apply-log 然后

/usr/bin/innobackupex-1.5.1 --copy-back,难道他们恢复的目录都是空目录,还是人云亦云。

©著作权归作者所有:来自51CTO博客作者forevercxr的原创作品,如需转载,请注明出处,否则将追究法律责任

备份msyqlxtrabackup数据库

5


0人推荐
随时随地看视频
慕课网APP