官网: http://www.percona.com/
Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。
Xtrabackup有两个主要的工具:xtrabackup、innobackupex。
1、xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表
2、innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的.innobackupex是一个perl脚本封装,封装了xtrabackup。
主要是为了方便的 同时备份InnoDB和MyISAM引擎的表,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项。
如slave-info可以记录备份恢 复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。
xtrabackup
1、my.cnf中必须有datadir
2、备份
innobackupex --user=rood=1t --password=123456 --defaults-file=/etc/my.cnf --socket=/usr/local/mysql/mysql.sock /opt/back_data/
innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --socket=/usr/local/mysql/mysql.sock --database=mytest /data/back_data/
innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --sock=/usr/local/mysql/mysql.sock --database=mytest --stream=tar /data/back_data/ 2>/data/back_data/mytest.log | gzip 1>/data/back_data/mytest.tar.gz
3、恢复数据
1) 先停止数据库:service mysqld stop
2) 解压 tar -izxvf zztx.tar.gz -C /data/back_data/db/ (没有db ,需要mkdir /data/back_data/db/)
3) 恢复 innobackupex --user=root --password --defaults-file=/etc/my.cnf --apply-log /data/back_data/db/ (--apply-log选项的命令是准备在一个备份上启动mysql服务)
innobackupex --user=root --password --defaults-file=/etc/my.cnf --copy-back /data/back_data/db/ (--copy-back 选项的命令从备份目录拷贝数据,索引,日志到my.cnf文 件里规定的初始位置。)
4) 赋权 chown -R mysql.mysql /var/lib/mysql/* 【/usr/local/mysql】
5) 重启数据库 service mysqld restart
6) 删除垃圾 cd /var/lib/mysql/ && rm xtrabackup*
进入数据库查看,一切OK~
4、脚本
(backup.sh)
#!/bin/sh
echo "开始备份..."`date`
log=zztx01_`date +%y%m%d%H%M`.log
str=zztx01_`date +%y%m%d%H%M`.tar.gz
innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --database=zztx --stream=tar /data/back_data/ 2>/data/back_data/$log | gzip 1>/data/back_data/$str
echo "备份完毕..."`date`