Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。
Xtrabackup中主要包含两个工具:
xtrabackup:是用于热备份innodb, xtradb表中数据的工具,不能备份其他类型的表,也不能备份数据表结构;
innobackupex:是将xtrabackup进行封装的perl脚本,可以备份和恢复MyISAM表以及数据表结构。
1、全备:
# innobackupex –user=root –password=123456 /app/backup/
2、基于全备进行增量备份:
# innobackupex –user=root –password=123456 –incremental-basedir=/app/backup/full/2017-03-14_16-14-19/ –incremental /app/backup/incre/
3、全备恢复(先停止mysql):
(a)回滚日志:
# innobackupex –defaults-file=/etc/my.cnf –user=root –password=123456 –user-memory=200M –apply-log /app/backup/2017-03-14_16-04-19
(b)恢复数据:
# innobackupex –defaults-file=/etc/my.cnf –user=root –password=123456 –copy-back /app/backup/2017-03-14_16-04-19
(c)修改权限:
# chown -R mysql:mysql /usr/local/mysql/data/
4、全备及增备恢复(先停止mysql):
(a)在所有备份目录下重做已提交的日志:
# innobackupex –apply-log –redo-only BASE-DIR
# innobackupex –apply-log –redo-only BASE-DIR –incremental-dir=INCREMENTAL-DIR-1
# innobackupex –apply-log BASE-DIR –incremental-dir=INCREMENTAL-DIR-2
注:其中BASE-DIR是指全备目录,INCREMENTAL-DIR-1是指第一次的增量备份,INCREMENTAL-DIR-2是指第二次的增量备份,最后一步的增量备份并没有–redo-only选项!可以使用–use-memory提高性能。
以上语句执行成功之后,最终数据在BASE-DIR(即全备目录)下。
(b)回滚日志:
# innobackupex –apply-log BASE-DIR
(c)恢复数据,即拷贝数据:
# innobackupex –copy-back BASE-DIR
最后检查数据目录的权限是否正确。
5、通过binlog日志恢复:
(a)查看binlog日志:# mysqlbinlog 227_binlog.000001 找到错误操作所对应的position或时间点
(b)# mysqlbinlog –stop-position=’1318′ 227_binlog.000001 > aaa.sql
(c)导入aaa.sql文件即可