1.简介:Xtrabackup:percona公司提供的开源工具,路由实现MySQL的热备,能为InnoDB和XtraDB的数据库实现无阻塞(热备)备份,支持完全备份,部分备份,增量备份,并行备份,流式备份,热备,自动备份校验,提升MySQL的在线时间,功能很强大
2.安装
其最新版的软件可从 http://www.percona.com/software/percona-xtrabackup/ 获得。本文基于CentOS6.5的系统,因此,直接下载相应版本的rpm包安装即可,这里不再演示其过程。
安装percona
安装本地的percona-toolkit 和percona-xtrabackup
查看安装后生成的文件
3.备份的实现
# innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/
可以从以上语句看出:percona的备份需要数据库在线,最好二进制日志和数据文件分开
备份
查看该文件下的各种文件信息
1: (1)xtrabackup_checkpoints ―― 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。2: (2)xtrabackup_binlog_info ―― mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。3: (3)xtrabackup_binary ―― 备份中用到的xtrabackup的可执行文件;4: (4)backup-my.cnf ―― 备份命令用到的配置选项信息;准备数据,
1: innobackupex --apply-log /mybackup/2014-04-13_14-55-14/ 不是备份完就立马准备,而是什么时候需要还原什么时候准备
恢复数据
1: innobackupex --copy-back /mybackup/2014-04-13_14-55-14/ #只需指定需要恢复的备份文件,他自己会知道恢复到哪个目录的
查看恢复的文件.并改变其属主属组
增量备份
1: innobackupex --incremental /mybackup/ --incremental-basedir=/mybackup/2014-04-13_14-55-14/2: 说明是增量备份,备份的目录,相对于上一次哪个备份做增量备份
注意:增量备份仅能应用于InnoDB或XtraDB表,对于MyISAM表而言,执行增量备份时其实进行的是完全备份。
准备恢复的数据,由于有增量备份,所以不能回滚事务,因为你第一次完全备份时,事务未提交,但是增量备份的时候提交了,那回滚了就麻烦了,所以需要使用--redo-only选项
准备完全恢复的数据
准备增量备份的数据,如果有多个,需按次序逐个执行
1: innobackupex --apply-log --redo-only /mybackup/2014-04-13_14-55-14/ --incremental-dir=/mybackup/2014-04-13_15-30-29/2: --incremental后跟的是第一次增量备份的数据
查看完全备份的xtrabackup_checkpoints,可以看到已经和增量备份的结合在一起了
恢复数据
1: innobackupex --copy-back /mybackup/2014-04-13_14-55-14/ #只需指定需要恢复的备份文件,他自己会知道恢复到哪个目录的
提醒:不要忘记修改恢复后的文件的属主和属组
即时点恢复
查看即时点位置
导出即时点信息
连入mysql关闭关闭当前会话的二进制文件,导入二进制日志
老是忘记启动二进制日志
备份到异地:
1: innobackupex --stream=tar /mybackup/ | ssh [email protected] "cat - > /`date +%F_%H-%M-%S`.tar.gz"
切记,备份的时候要异地存储,至少不能存到一块硬盘上,如果需要网络传输,最好不要使用与在线的业务相同的网卡,至少隔一段做一次异地,数据备份应该周期性的做测试,每一次灾难恢复后都应该立即做一次完全备份,针对不同的规模或级别数据量,要制定好备份策略,二进制日志不应该和数据文件放在相同的磁盘,如何小心都不为过.
到服务器查看
从备份中恢复应该遵循步骤总结:
1、停止MySQL服务器;
2、记录服务器的配置和文件权限;
3、将数据从备份移到MySQL数据目录;其执行方式依赖于工具;
4、改变配置和文件权限;
5、以限制访问模式重启服务器;mysqld的--skip-networking选项可跳过网络功能;
方法:编辑my.cnf配置文件,添加如下项:
skip-networking
socket=/tmp/mysql-recovery.sock
6、载入逻辑备份(如果有);而后检查和重放二进制日志;
7、检查已经还原的数据;
8、重新以完全访问模式重启服务器;
注释前面在my.cnf中添加的选项,并重启;