简介:
Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。
Xtrabackup有两个主要的工具:xtrabackup、innobackupex
(1)xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表
(2)innobackupex-1.5.1则封装了xtrabackup,是一个脚本封装,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁
(3)使用帮助:http://www.percona.com/docs/wiki/percona-xtrabackup:start
最新版本这里 http://www.percona.com/downloads/XtraBackup/ 下载
wget http://www.percona.com/downloads/XtraBackup/XtraBackup-2.1.3/source/percona-xtrabackup-2.1.3.tar.gz
tar zxvf percona-xtrabackup-2.1.3.tar.gz
yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses5-devel perl-DBD-MySQL
cd percona-xtrabackup-2.1.3
./utils/build.sh xtradb 执行 安装这里输入完整目录
cp innobackupex src/xtrabackup /usr/bin/
cp src/xtrabackup /usr/bin/xtrabackup_55
要执行以下命令 防止后面出错
备份数据
innobackupex –database=”tenddata” –password=root0000 –slave-info –user=root –defaults-file=/usr/local/mysql3307/etc/my.cnf /backup
如果遇到下面的错误
xtrabackup: innodb_log_file_size = 5242880
xtrabackup: using O_DIRECT
InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
就将my.cnf 拷贝到/tmp/my.cnf 临时目录下 然后 添加innodb_log_file_size = 50331648
然后执行 站长教学网 eduyo.com
innobackupex –database=”tenddata” –password=root0000 –slave-info –user=root –defaults-file=/tmp/my.cnf /backup
备份完以后会出现xtrabackup_binlog_info 文件 里面记录的是从库备份的信息
增量备份
innobackupex –user=root –defaults-file=/usr/local/mysql3307/etc/my.cnf –database=”tenddata” –incremental –incremental-basedir=/tmp/2013-05-30_09-20-12 /tmp/
其中,–incremental指明是增量备份,–incremental-basedir指定上次完整备份或者增量备份文件的位置。这里的增量备份其实只针对的是InnoDB,对于MyISAM来说,还是完整备份。
如果出现备份错误提示xtrabackup:55 行错误 cp xtrabackup /usr/bin/xtrabackup_55
还原数据
innobackupex –user=root –password=root0000 –defaults-file=/usr/local/mysql3307/etc/my.cnf /backup/2013-05-28_18-40-14 –apply-log
innobackupex –user=root –password=root0000 –defaults-file=/usr/local/mysql3307/etc/my.cnf /backup/2013-05-28_18-40-14 –copy-back
还原数据的时候很麻烦 会出现因为需要datadir目录为空 所以建议只能先把/mysql/data3307 存放数据的目录mv 到别处 ,如果库多就更费劲了
增量恢复
增量备份恢复的步骤和完整备份恢复的步骤基本一致,只是应用日志的过程稍有不同。增量备份恢复时,是先将所有的增量备份挨个应用到完整备份的数据文件中,然后再将完整备份中的数据恢复到数据库中。命令如下
恢复完数据执行下/usr/local/mysql3306/bin/mysql_upgrade
innobackupex –user=root –defaults-file=/usr/local/mysql3306/etc/my.cnf parallel=8 –incremental /tmp –incremental-basedir=/tmp/2013-05-30_12-12-08
–incremental-basedir 是上一次完整备份或增量备份的数据
还原测试的资料推荐(http://www.itpub.net/thread-1612540-1-1.html)
如果出现错误xtrabackup: Error: Please set parameter ‘datadir’ 但是又不能修改datadir 因为要重启的缘故 所以可以copry my.cnf /tmp/my.cnf 一个假文件 在里面加入datadir=/mysql/data3307的参数即可
执行备份innobackupex –database=”tenddata” –password=root0000 –slave-info –user=root –defaults-file=/tmp /my.cnf /backup
出现如下错误:ERROR: Failed to connect to MySQL server as DBD::mysql module is not installed at /usr/bin/innobackupex line 1397
cp /usr/local/mysql3306/include/mysql/* /usr/include/
cp -rf /usr/local/mysql3306/include/mysql/* /usr/include/
cp libmysql* /usr/lib64/
即可
如果上面方法还不行
那就试试下面的方法
解决方法:
rpm -qa |grep -i dbd
rpm -qa |grep -i dbi
查找出来后执行:
rpm -e –nodeps perl-DBD-MySQL
rpm -e –nodeps perl-DBI
然后执行:
yum install -y perl-DBD-MySQL 即可