简介

Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。特点:
(1)备份过程快速、可靠;
(2)备份过程不会打断正在执行的事务;
(3)能够基于压缩等功能节约磁盘空间和流量;
(4)自动实现备份检验;
(5)还原速度快;
Xtrabackup中包含两个工具: 
* xtrabackup - 用于热备份innodb, xtradb表的工具,不能备份其他表。 
* innobackupex - 对xtrabackup封装的perl脚本,提供了MyISAM表备份的能力。(能进行整库和数据表备份)。
使用innobakupex备份时,其会调用xtrabackup备份所有的InnoDB表,复制所有关于表结构定义的相关文件(.frm)、以及MyISAM、MERGE、CSV和ARCHIVE表的相关文件,
同时还会备份触发器和数据库配置信息相关的文件。这些文件会被保存至一个以时间命令的目录中。
在备份的同时,innobackupex还会在备份目录中创建如下文件:
(1)xtrabackup_checkpoints —— 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。
(2)xtrabackup_binlog_info —— mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。
(3)xtrabackup_binlog_pos_innodb —— 二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当前position。
(4)xtrabackup_binary —— 备份中用到的xtrabackup的可执行文件;
(5)backup-my.cnf —— 备份命令用到的配置选项信息;
在使用innobackupex进行备份时,还可以使用--no-timestamp选项来阻止命令自动创建一个以时间命名的目录;innobackupex命令将会创建一个BACKUP-DIR目录来存储备份数据。
二进制版本
http://www.percona.com/downloads/XtraBackup/
wget http://www.percona.com/downloads/XtraBackup/LATEST/binary/Linux/x86_64/percona-xtrabackup-2.0.3-470.tar.gz
tar zxvf percona-xtrabackup-2.0.3-470.tar.gz 
cd percona-xtrabackup-2.0.3/bin
cp * /usr/bin/
本次使用的是mysql5.5.28安装在此不叙述
建一个用于数据备份的目录
mkdir -p /opt/mysql_bak/
修改数据库配置文件:
vim /etc/my.cnf 
datadir = /home/mysql/data/
mysqladmin -uroot password 123456
整库备份:
innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf /opt/mysql_bak/
单独备份:
innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --database=test /opt/mysql_bak
备份并打包压缩:
innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --database=test --stream=tar /opt/mysql_bak/ | gzip > /opt/mysql_bak/testdb.tar.gz
带时间戳
innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --database=test --stream=tar /opt/mysql_bak/ | gzip > /opt/mysql_bak/`date +%F`_testdb.tar.gz
备份信息输出重定向到文件:
innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --database=test --stream=tar /opt/mysql_bak/ 2>/opt/mysql_bak/test.log | gzip 1>/opt/mysql_bak/test.tar.gz
说明:
      --stream指定流的格式,目前只支持tar
      --database=test 单独对test数据库做备份 ,若是不添加此参数那就那就是对全库做
      2>/opt/mysql_bak/test.log  输出信息写入日志中
      1>/opt/mysql_bak/test.tar.gz 打包压缩存储到该文件中
解压 tar -izxvf 要加-i参数,官方解释 innobackupex: You must use -i (--ignore-zeros) option for extraction of the tar stream.
在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。
此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。
innobakupex命令的--apply-log选项可用于实现上述功能。如下面的命令:
数据恢复:
要先停止MySQL服务/etc/init.d/mysqld stop   
然后删除数据库目录下的所有数据库文件 rm -rf /home/mysql/data/*(datadir所在实际目录)
#innobackupex --user=root --password=123456 --apply-log --defaults-file=/etc/my.cnf /opt/mysql_bak/2012-11-27_15-25-49/
apply-log指明是将日志应用到数据文件上 (可以使用--use-memory选项来指定其可以使用的内存的大小以提高完成速度,默认通常为100M)
innobackupex --apply-log --defaults-file=/etc/my.cnf  /opt/mysql_bak/2012-11-27_15-25-49/
copy-back选项用于执行恢复操作,其通过复制所有数据相关的文件至mysql服务器DATADIR目录中来执行恢复过程。innobackupex通过backup-my.cnf来获取DATADIR目录的相关信息。
innobackupex --copy-back --defaults-file=/etc/my.cnf /opt/mysql_bak/2012-11-27_15-25-49/
请确保信息的最行一行出现“innobackupex: completed OK!”
看看你的数据库目录下是不是有文件了?
cd /home/mysql/data/
修改数据文件的属主和属组:
chown -R mysql:mysql * 
/etc/init.d/mysqld start
重启数据库,看恢复是否成功。 
注意:这里我虽然指定的是test数据库,但实际上如果其他数据库中也有InnoDB引擎的表,那么这些InnoDB表中的数据也会被恢复了。
(对于InnoDB 引擎数据来说都是全备!所有数据库中的InnoDB数据都进行了备份,不是只备份指定的数据库,恢复时也一样)
以上写个简单脚本备份:
#!/bin/bash
echo "Start backup..."`date +%F-%H:%M:%S` >> /tmp/mysqlbak.log
log=testdb_`date +%F-%H:%M:%S`.log
str=testdb_`date +%F-%H:%M:%S`.tar.gz
/usr/bin/innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --database=test --stream=tar /opt/mysql_bak/ 2>/opt/mysql_bak/$log | gzip 1>/opt/mysql_bak/$str
echo "Backup complete.."`date +%F-%H:%M:%S` >> /tmp/mysqlbak.log

转载于:https://blog.51cto.com/hxl2009/1072183

MySQL Xtrabackup备份和恢复相关推荐

  1. mysql xtrabackup恢复_MySQL Xtrabackup备份和恢复

    http://instance.iteye.com/blog/1454027 2.安装Xtrabackup ,下载Xtrabackup 配置源 #vi /etc/yum.repos.d/percona ...

  2. mysql dba系统学习(16)mysql的mysqldump备份 mysql dba系统学习(17)mysql的备份和恢复的完整实践

    mysql数据库的备份恢复 mysqldump备份数据库 -B, --databases     Dump several databases. Note the difference in usag ...

  3. MySQL 的备份和恢复机制 MyISAM 和 Innodb

    转自:http://blog.csdn.net/sosoft_dzz/article/details/5299666 deven感觉这个文章还是比较靠谱的. 本文讨论 MySQL 的备份和恢复机制,以 ...

  4. java写的MySQL数据库备份和恢复代码:

    1.MySQL数据库备份和恢复,java代码实现:详情见下面: package com.spring.util; import java.io.BufferedReader; import java. ...

  5. python之mysql数据备份和恢复

    python之mysql数据备份和恢复 1. 数据的备份和恢复 1.1 数据备份 1.2 数据恢复 1. 数据的备份和恢复 下面的命令属于mysql特有的,不属于sql句. 1.1 数据备份 操作步骤 ...

  6. innobackupex和Xtrabackup备份和恢复MySQL数据

    innobackupex备份和恢复MySQL数据 当MySQL数据量很小时,我们可以使用mysqldump来备份,无论是myisam引擎还是innodb引擎都是没有问题的. 但数据量很大,比如上百GB ...

  7. MySQL下备份和恢复简单介绍

    为什么要备份?     由于使用MySQL时自己的一些误操作导致数据丢失或者是开发写程序时删除了不该删的数据,我们知道企业中数据是最重要的,那么此时为了数据的安全性,我们就必须的提前把数据给备份好,万 ...

  8. linux mysql集群 备份与恢复,Linux下MySQL的备份和恢复

    MySQL备份的原因1. 灾难恢复 2. 审计 3. 测试1234512345 mysql的备份类型1. 根据服务器的在线状态: 热备:服务器处于运行状态 冷备:服务器出去停止状态 温备:服务器处于半 ...

  9. MySQL的备份、恢复

    文章目录 MySQL备份.恢复 一.备份类型 1.根据服务是否在线 2.根据备份的数据量大小 3.根据备份形成的结果 4.要备份的东西 二.mysqldump工具(逻辑备份) 1.常用选项 2.注意 ...

最新文章

  1. C6000系列DSP的内联函数
  2. ML numpy、pandas、matplotlib的使用
  3. burpsuite下载使用详讲
  4. 普通RNN的缺陷—梯度消失和梯度爆炸
  5. python 程序运行计时 动态,在python中运行计时器几分钟
  6. CSS层叠样式表的理解(一)
  7. IO 模型 IO 多路复用
  8. 6寸照片的尺寸是多少_各类证件照标准尺寸大全
  9. i5双线程_新老系统多项测试:多线程运算谁更靠谱
  10. 网站建设的流程及步骤是什么?
  11. 几何算法合集(3D)
  12. C# 30分钟完成百度人脸识别——进阶篇(文末附源码)
  13. html扩展调用qq邮箱
  14. zcu102网口不通
  15. 辉芒微IO单片机FT60F010A-URT
  16. iptable使用笔记
  17. Java雷电游戏要准备什么_Java 雷电游戏(未完成)
  18. 网络空间安全导论实践报告
  19. 租用游戏服务器的优势
  20. 我的Java开发技术总结

热门文章

  1. Apache的prefork模式和worker模式
  2. .NET 框架中的 WMI 命名空间
  3. 好多Javascript日期选择器呀-7
  4. asp.net 2.0中一次性更新所有GRIDVIEW的记录
  5. DataGrid/DataList
  6. Memcached内存池分析
  7. C语言不要重复包含.h头文件和.c文件
  8. 设计一个矩形类rectangle_万字长文带你捋清六种设计模式的设计原则(建议收藏)...
  9. jpanel不使用jframe保存的图片为空_使用DataBinding还在为数据处理头疼?这篇文章帮你解决问题
  10. python高级网络编程_python高级编程——网络编程(二)