简介:
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
测试环境:CentOS 6.5 , Percona XtraBackup 2.2.8
1、首先从www.percona.com下载
wget http://www.percona.com/downloads/XtraBackup/XtraBackup-2.2.8/binary/redhat/6/x86_64/percona-xtrabackup-2.2.8-5059.el6.x86_64.rpm
2、检查服务器是否安装了Mysql版本,如果没有就要安装好mysql
3、开始安装xtrabackup
rpm -ivh percona-xtrabackup-2.2.8-5059.el6.x86_64.rpm
4、备份并打包压缩
mkdir -p /back_data/mysql/
innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --database=test --stream=tar /back_data/mysql/ 2>/back_data/mysql/test.log | gzip 1>/back_data/mysql/test.tar.gz
说明:
--database=test 单独对test数据库做备份 ,若是不添加此参数那就那就是对全库做备份
2>/back_data/test.log 输出信息写入日志中
1>/back_data/test.tar.gz 打包压缩存储到该文件中
此处可以写个脚本做备份(backup.sh)
#!/bin/sh
echo "开始备份..."`date`
log=test01_`date +%y%m%d%H%M`.log
str=test01_`date +%y%m%d%H%M`.tar.gz
innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --database=test --stream=tar /back_data/ 2>/back_data/$log | gzip 1>/back_data/$str
echo "备份完毕..."`date`
5、恢复数据
1) 先停止数据库:service mysqld stop
2) 解压 tar -izxvf test.tar.gz -C /back_data/db/ (没有db ,需要mkdir /back_data/db/)
3) 恢复 innobackupex --user=root --password --defaults-file=/etc/my.cnf --apply-log /back_data/db/ (--apply-log选项的命令是准备在一个备份上启动mysql服务)
innobackupex --user=root --password --defaults-file=/etc/my.cnf --copy-back /back_data/db/ (--copy-back 选项的命令从备份目录拷贝数据,索引,日志到my.cnf文 件里规定的初始位置。)
4) 赋权 chown -R mysql.mysql /var/lib/mysql/*
5) 重启数据库 service mysqld restart
6) 删除垃圾 cd /var/lib/mysql/ && rm xtrabackup*
进入数据库查看,一切OK~
常见错误解决:
问题:没安装perl-DBD-MySQL
错误信息:
innobackupex: Error: Failed to connect to MySQL server as DBD::mysql module is not installed at /usr/bin/innobackupex line 2990.
解决:根据操作系统的版本安装合适的perl-DBD-MySQL后问题解决
yum install -y perl-DBD-MySQL