分类: LINUX
2012-03-27 22:10:28
Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。Xtrabackup有两个主要的工具:xtrabackup、innobackupex,其中 xtrabackup只能备份InnoDB和XtraDB两种数据表,innobackupex则封装了xtrabackup,同时可以备份MyISAM 数据表。
1.安装mysql
2.安装Xtrabackup ,下载Xtrabackup
配置源
#vi /etc/yum.repos.d/percona.repo
Java代码
[percona]
name = CentOS $releasever - Percona
baseurl=
enabled = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona
gpgcheck = 1
添加key
#cd /etc/pki/rpm-gpg
#wget
安装Xtrabackup
yum install xtrabackup
由于现在线上备份是用dump,对于个库不能保证库的状态的一致性。
为了能是数据库做到point-in-time recovery,可以采用xtrabackup
先声明:对于任何point-in-time recovery binary log是不可缺少的,所以必需保证binary log的安全性,一般是是用RAID10
xtrabackup的增备和全备的实现:
首先是官方文档,说的比较清楚了:
1.全备(这里是用5.5的版本)
xtrabackup_55 --datadir=/xxx/xxx --targe-dir=/xxx/xxx
然后需要做prepare
因为copy的时候并不是同一时间copy的,所以要prepare将所有恢复一致
xtrabackup_55 --prepare --target-dir=./full/
看到“InnoDB shutdown”信息和结束LSN
现在你的备份就一致了
如果你想恢复的更快,你需要再run一次prepare,会重建innodb logfile - -- --- 就是创建了几个logfile
2.
a).将备份的innodb的所有frm文件copy至新备份文件夹
b).将所有的系统级的mysiam表都copy只备份文件夹
c).修改文件夹权限
3.
重启mysql服务
遇到问题1.改mysqld启动脚本,主要是目录问题,指定basedir和datadir
另外需要修改my.cnf的数据文件路径
4.
启动成功,但是err文件报错Unable to lock /usr/local/mysql/data/ibdata1, error: 11
原因是之前启动失败的时候,启动脚本停了,后台脚本还在运行。需要ps将后台mysql进程杀死
5.
恢复之后做即时点恢复
有个文件xtrabackup_binlog_pos_innodb
./mysql-bin.000050 5868
根据这个信息搞吧
###########################################
增量备份(在昨晚全备之后,增备基于全备)
xtrabackup_55 --backup --target-dir=/home/backup/inc1 --incremental-basedir=/home/backup/full/ --datadir=/usr/local/mysql/data/
xtrabackup_55 --backup --target-dir=/home/backup/inc2 --incremental-basedir=/home/backup/inc1/ --datadir=/usr/local/mysql/data/
###########################################
注:最终都要应用到全备上
前提,全备不能使用单prepare命令,需要--apply-log-only
恢复的时候
xtrabackup_55 --prepare --apply-log-only --target-dir=/home/backup/full/
xtrabackup_55 --prepare --apply-log-only --target-dir=/home/backup/full/ --incremental-dir=/home/backup/inc1/
xtrabackup_55 --prepare --apply-log-only --target-dir=/home/backup/full/ --incremental-dir=/home/backup/inc2/
然后如上面全备一样修改目录即可