percona-xtrabackup安装及使用教程
安装percona-xtrabackup依赖包(前提已安装mysql)
yum -y install perl-CPAN perl-DBD-MySQL perl make gcc gcc-c++ patch libgcrypt libgcrypt-devel libaio libaio-devel automake autoconf bzr bison libtool ncurses5-devel zlib zlib-devel
安装Time::HiRes依赖包(不停的yes即可,其中会有warning,忽略即可)
perl -MCPAN -e 'install "Time::HiRes"' tar -zvxf percona-xtrabackup-2.1.5.tar.gz cd percona-xtrabackup-2.1.5 AUTO_DOWNLOAD="yes" ./utils/build.sh innodb51 (mysql5.1版本)
或AUTO_DOWNLOAD="yes" ./utils/build.sh innodb55 (mysql5.5版本)
复制相应文件至/usr/bin目录
Mysql5.1
cp innobackupex /usr/bin/ cp src/xbcrypt /usr/bin/ cp src/xbstream /usr/bin/ cp src/xtrabackup_plugin /usr/bin/ cp src/xtrabackup_plugin /usr/bin/xtrabackup
Mysql5.5
cp innobackupex /usr/bin/ cp src/xbcrypt /usr/bin/ cp src/xbstream /usr/bin/ cp src/xtrabackup_innodb55 /usr/bin/ cp src/xtrabackup_innodb55 /usr/bin/xtrabackup cp src/xtrabackup_innodb55 /usr/bin/xtrabackup55 cp src/xtrabackup_innodb55 /usr/bin/xtrabackup_55
5.5版本备份全库
innobackupex --user=root --password=123456 /data/bak/
5.1版本备份全库(5.1版本需添加--ibbackup=xtrabackup 参数,否则备份会报错)
innobackupex --user=root --password=123456 --ibbackup=xtrabackup /data/mysqlbak/
压缩备份:
innobackupex --user=databak --password=123456 --ibbackup=xtrabackup --stream=tar /data/bak/ | gzip1 >/data/bak/a.tar.gz
还原全库
准备还原
innobackupex --user=root --password --defaults-file=/etc/my.cnf --apply-log /data/bak/2013-11-12_23-44-45/
开始还原
innobackupex --user=root --password --defaults-file=/etc/my.cnf --copy-back /data/bak/2013-11-12_23-44-45/
重新赋权:
chown -R mysql:mysql /var/lib/mysql
启动mysql。
/etc/init.d/mysql start
增量备份:
基于目录的增备:
/data/bak/2013-11-12_23-44-45(全备目录)
innobackupex --user=root --password=123456--incremental /data/bak/ --incremental-basedir=/data/bak/2013-11-12_23-44-45
基于lns的增备(方法与基于目录的增备相同):
Lsn的值参照如下图所示:
innobackupex --user=root --password=123456 --incremental /data/bak/ --incremental-lsn=722499939
备份的时候提示Warning:
This procedure only affects XtraDB
orInnoDB-based tables. Other tables with a different storage engine,
e.g. MyISAM,will be copied entirely each time an incremental backup is
performed.
官方提示:增量备份仅针对innodb和xtradb引擎,myisam在运行增量备份时实际上是完全复制的全备份(全备会锁全库)。
数据库还原(测试):
/etc/init.d/mysql stop; mv /var/lib/mysql /var/lib/mysqlbak(一般情况下,不要让rm成为习惯,习惯mv可以尽量避免误删操作)
准备还原:
innobackupex --apply-log --redo-only/data/bak/2013-11-12_16-49-05 --ibbackup=xtrabackup
将增量备份内容添加进全备份中
innobackupex --apply-log --redo-only/data/bak/2013-11-12_16-49-05 --incremental-dir=/data/bak/2013-11-12_16-59-42 innobackupex --apply-log --redo-only/data/bak/2013-11-12_16-49-05/ --incremental-dir=/data/bak/2013-11-12_17-01-11 innobackupex --apply-log /data/bak/2013-11-12_16-49-05
还原数据库:
mkdir /var/lib/mysql (2.1.5的版本不需要新建mysql目录,2.1.8开始要自己新建一个目录,否则会报错) innobackupex --copy-back /data/bak/2013-11-12_16-49-05
重新赋权:
chown -R mysql:mysql /var/lib/mysql
启动mysql。
/etc/init.d/mysql start
Xtrabackup中的xtrabackup_binlog_info中记录了bin_log和pos的点,通过该值可实现主从。(用这种方式,对中小系统重做主从会非常方便,备份速度快,还原速度也快)
1.部署过程遇到的错误记录
patch: command not found yum -y install patch xbcrypt_common.c:24:20: error: gcrypt.h: Nosuch file or directory yum -y install libgcrypt libgcrypt-devel