xtrabackup 是MYSQL的一个备份软件

Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。
Xtrabackup有两个主要的工具:xtrabackup、innobackupex
(1)xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表
(2)innobackupex-1.5.1则封装了xtrabackup,是一个脚本封装,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁 
 
1.首先下载 
cd /usr/local
wget  http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-2.1.5/binary/Linux/x86_64/percona-xtrabackup-2.1.5-680-Linux-x86_64.tar.gz
 
2、检查服务器是否安装了Mysql版本,如果没有就要安装好mysql
    my.cnf中必须有datadir=/usr/local/mysql/data  (特别说明这个参数必须要,作者就在此问题栽跟着)
 
3、开始安装xtrabackup
     1)解压     
         cd /usr/local
         tar zxvf percona-xtrabackup-2.1.5-680-Linux-x86_64.tar.gz
     2)拷贝innobackupex、xtrabackup、xtrabackup_51 工具到/usr/bin
        cp /usr/local/percona-xtrabackup-2.1.5-Linux-x86_64/bin/* /usr/bin/
 
4.备份
需要说明的这个备份是针对实例,不能针对某个数据库
/innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf  --databases='test'  --slave-info /usr/local/  
 
注意此时会在"/usr/local"目录下生成一个根据当前时间产生的文件夹(比如"2016-03-21_13-17-34")存放备份数据,在第五步还原数据的时候,需要将此目录下的数据全部拷贝过去 cp 2016-03-21_13-17-34/*  /root/test_dir/2013-01-04_15-08-06/
注意点2:若命令报错"Can't locate Time/HiRes.pm in @INC",则执行命令:yum -y  install perl-Time-HiRes

 
5.还原
还原
(1)停止数据库服务
 
#/etc/init.d/mysqld stop
 
(2)整理(preparing)部分备份
 
#innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --apply-log --export /root/test_dir/2013-01-04_15-08-06/
 
(3)将备份文件拷贝回数据目录
 
 #\cp -rf /root/test_dir/2013-01-04_15-08-06/* /usr/local/mysql/data/
 
(4)赋权
 
# chown -R mysql:mysql /usr/local/mysql
 
(5)启动数据库
 
# /etc/init.d/mysqld  start
 
特别说明:
如果出现如下错误,说明没有装 dbi和dbd 
innobackupex: Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_file=/etc/my.cnf;mysql_read_default_group=xtrabackup' as 'root'  (using password: YES).
innobackupex: Error: Failed to connect to MySQL server as DBD::mysql module is not installed at /usr/bin/innobackupex line 
 
则按如下步骤进行操作:
Percona Toolkit 的安装:
 
1:下载percona toolkit的包:(可以是源码包,或者RPM)
 
访问:http://www.percona.com/software/percona-toolkit/ 下载最新稳定的版本。也可以如下命令行的方式下载最新版本。
 
wget percona.com/get/percona-toolkit.tar.gz
 
wget percona.com/get/percona-toolkit.rpm
 
2:安装于Perl相关的模块
 
yum install perl-DBI
 
yum install perl-DBD-MySQL
 
yum install perl-Time-HiRes
 
yum install perl-IO-Socket-SSL
 
3: 安装Percona Toolkit
 
rpm -Uvh percona-toolkit-2.2.1-2.noarch.rpm 
 
OK,就这么简单,安装完毕。
 
特别说明:
 
本机为:Linux mysql.example.com 2.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
 
安装错误:
 
在yum install perl-DBD-MySQL时,出现如下错误信息
 
 
 
---> Package perl-DBD-MySQL.x86_64 0:3.0007-2.el5 set to be updated
 
--> Processing Dependency: libmysqlclient.so.15(libmysqlclient_15)(64bit) for package: perl-DBD-MySQL
 
--> Processing Dependency: libmysqlclient.so.15()(64bit) for package: perl-DBD-MySQL
 
--> Running transaction check
 
---> Package mysql.x86_64 0:5.0.95-5.el5_9 set to be updated
 
--> Processing Conflict: mysql conflicts MySQL
 
--> Finished Dependency Resolution
 
mysql-5.0.95-5.el5_9.x86_64 from updates has depsolving problems
 
  --> mysql conflicts with MySQL-server
 
Error: mysql conflicts with MySQL-server
 
由于我安装的是5.5.xx的MySQL版本,而系统自带的是5.0xx版本的,而libmysqlclient.so.15是由5.0版本提供的,所以就出错了。如果你的系统是centos6.X系列的,MySQL自带的为5.1以上,可能不会出现这个问题了。解决方案如下:
 
rpm -Uvh MySQL-shared-compat-5.5.31-1.rhel5.x86_64.rpm
 
MySQL-shared-compat为客户端的libraries ,向下兼容。
 
在yum install perl-DBD-MySQL就没有问题了。
 

官方原理

在InnoDB内部会维护一个redo日志文件,我们也可以叫做事务日志文件。事务日志会存储每一个InnoDB表数据的记录修改。当InnoDB启动时,InnoDB会检查数据文件和事务日志,并执行两个步骤:它应用(前滚)已经提交的事务日志到数据文件,并将修改过但没有提交的数据进行回滚操作。

Xtrabackup在启动时会记住log sequence number(LSN),并且复制所有的数据文件。复制过程需要一些时间,所以这期间如果数据文件有改动,那么将会使数据库处于一个不同的时间点。这时,xtrabackup会运行一个后台进程,用于监视事务日志,并从事务日志复制最新的修改。Xtrabackup必须持续的做这个操作,是因为事务日志是会轮转重复的写入,并且事务日志可以被重用。所以xtrabackup自启动开始,就不停的将事务日志中每个数据文件的修改都记录下来。

上面就是xtrabackup的备份过程。接下来是准备(prepare)过程。在这个过程中,xtrabackup使用之前复制的事务日志,对各个数据文件执行灾难恢复(就像mysql刚启动时要做的一样)。当这个过程结束后,数据库就可以做恢复还原了。

以上的过程在xtrabackup的编译二进制程序中实现。程序innobackupex可以允许我们备份MyISAM表和frm文件从而增加了便捷和功能。Innobackupex会启动xtrabackup,直到xtrabackup复制数据文件后,然后执行FLUSH TABLES WITH READ LOCK来阻止新的写入进来并把MyISAM表数据刷到硬盘上,之后复制MyISAM数据文件,最后释放锁。

备份MyISAM和InnoDB表最终会处于一致,在准备(prepare)过程结束后,InnoDB表数据已经前滚到整个备份结束的点,而不是回滚到xtrabackup刚开始时的点。这个时间点与执行FLUSH TABLES WITH READ LOCK的时间点相同,所以myisam表数据与InnoDB表数据是同步的。类似oracle的,InnoDB的prepare过程可以称为recover(恢复),myisam的数据复制过程可以称为restore(还原)。

Xtrabackup和innobackupex这两个工具都提供了许多前文没有提到的功能特点。手册上有对各个功能都有详细的介绍。简单介绍下,这些工具提供了如流(streaming)备份,增量(incremental)备份等,通过复制数据文件,复制日志文件和提交日志到数据文件(前滚)实现了各种复合备份方式。

xtrabackup 安装、备份、还原及错误处理 教程的更多相关文章

  1. MySQL--使用xtrabackup进行备份还原

    使用rpm包安装xtrabackup ## 安装依赖包 yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl- ...

  2. Sql Server 备份还原失败错误ERROR:3145(备份集中的数据库备份与现有的数据库不同)及解决办法

    SQL Server备份文件bak,备份后还原出现错误3145,备份集中的数据库备份与现有的 'xxx' 数据库不同. 解决办法如下: 1,新建一个与现有数据库重名的数据库. 如果您不知道数据库名称, ...

  3. 基于xtrabackup实现mysql备份还原

    简介 Xtrabackup2.2版之前包括4个可执行文件: innobackupex: Perl 脚本 xtrabackup: C/C++ 编译的二进制 xbstream: 支持并发写的流文件格式 x ...

  4. xtrabackup备份还原mariadb数据库

    一.xtrabackup 简介 xtrabackup 是由percona公司开源免费的数据库热备软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份,对于myisam的备份同样需要 ...

  5. (4.15)mysql备份还原——物理备份之XtraBackup的下载与安装

    关键词:mysql物理备份,XtraBackup,XtraBackup安装,XtraBackup下载 实践链接:https://www.cnblogs.com/gered/p/11147193.htm ...

  6. mysql innobackupex xtrabackup 大数据量 备份 还原

    大数据量备份与还原,始终是个难点.当MYSQL超10G,用mysqldump来导出就比较慢了.在这里推荐xtrabackup,这个工具比mysqldump要快很多. 一.Xtrabackup介绍 1, ...

  7. mysql innobackupex xtrabackup 大数据量 备份 还原(转)

    原文:http://blog.51yip.com/mysql/1650.html 作者:海底苍鹰 大数据量备份与还原,始终是个难点.当MYSQL超10G,用mysqldump来导出就比较慢了.在这里推 ...

  8. xtrabackup备份还原MySQL数据库

    mysqldump 备份鉴于其自身的某些特性(锁表,本质上备份出来insert脚本或者文本,不支持差异备份),不太适合对实时性要求比较高的情况Xtrabackup可以解决mysqldump存在的上述的 ...

  9. Linux下手动备份还原硬盘主引导记录MBR跟硬盘分区表DPT教程

    Linux下手动备份还原硬盘主引导记录MBR跟硬盘分区表DPT教程 二 18 奶牛 Linux, Ubuntu, Windows 1,885 views查看评论 最近奶牛一直在折腾linux下的gru ...

随机推荐

  1. android复习第二天------布局

    1,在4,0版本前一共有五种布局,且都是ViewGroup的子类分别是 RelativeLayout(相对),AbsoluteLayout(绝对),LinearLayout(线性),FrameLayo ...

  2. asp上传图片提示 ADODB.Stream 错误 '800a0bbc'的解决方法

    asp上传图片提示 ADODB.Stream 错误 '800a0bbc' 有这个提示有很多问题导致.权限是常见一种.这个不多说,还有一个有点怪的就是 windows2008显示系统时间的格式竟然是:2 ...

  3. c语言小程序

    这是一个用c语言写的小程序,功能是随机输出30道100以内的四则运算,先生成两个随机数,再通过随机数确定四则运算符号,最后输出题目. #include<iostream> using na ...

  4. 夺命雷公狗ThinkPHP项目之----企业网站3之后台栏目页的搭建(百度编辑器的引入)

    我们现在就开始搭建我们的后台栏目页的后台了: 首先创建一个CategoryController.class.php的控制器,让列表页和添加页面显示出来先: 然后就是开始动手修改我们的视图部分了: 我们 ...

  5. linux下的终端模拟器urxvt的配置

    内容所在的文件: ~/.Xdefaults 文件的内容: URxvt.background:[90]#000000URxvt.foreground:#ffffffURxvt.colorBD:Gray9 ...

  6. inline-block去掉空白距离的方法

    一.现象描述:inline-block形式水平呈现的元素,换行显示或空格分割的情况下,元素之间会有间距,实例如下: 使用CSS将行内元素的display设置为inline-block时,也会出现间隔: ...

  7. Android压力测试快速入门教程(图解)——Monkey工具

    文章目录: 一.Monkey简介 二.Monkey的基本用法 三.Monkey测试示例图解 四.Monkey命令参数介绍 五.Monkey log分析 一.Monkey简介 Monkey:Androi ...

  8. android 应用架构随笔四(View、ViewGroup)

    View表示了用户界面的基本构建模块. 一个View占用了屏幕上的一个矩形区域并且负责界面绘制和事件处理.手机屏幕上所有看得见摸得着的都是View. Activity是四大组件中唯一一个用来和用户进行 ...

  9. 分享总结:更好地CodeReview

            代码质量分享    2016_06_24_舒琴_代码质量.key    For 代码提交人     基本原则 Review时机: 对于普通bugfix或优化,CodeReview最迟要 ...

  10. ubuntu 修改终端命令显示的颜色

    转于  http://www.blogbus.com/riusksk-logs/62891140.html 修改当前用户 gedit ~/.bashrc 在最后一行下面添加这行 PS1='${debi ...