Percona Xtrabackup可以说是一个完美的数据备份工具。特别是当数据库的容量达到了一定数量级的时候且存在单表达到几十G的数据量, 很难容忍一些逻辑备份的漫长时间。如单个数据库约200G,单表最大为120G,mysqldump逻辑备份的时间长达20多小时。除此之外,也不好验证逻辑备份的可用性与数据的一致性。去年就层简单使用过了Xtrabackup,但是一直没有用于生成环境。最近的一个集群需要搭建一主多从,数量约130G,也不能影响主库的正常工作,Xtrabackup作为了首选的备份工具。

1、Percona Xtrabackup的优点
1)可以快速可靠的完成数据备份(复制数据文件和追踪事务日志)
2)数据备份过程中不会中断事务的处理(热备份)
3)节约磁盘空间和网络带宽
4)自动完成备份检定
5)因更快的恢复时间而提高在线时间

2、备份原理
innobackupex在后台线程不断追踪InnoDB的日志文件,然后复制InnoDB的数据文件。数据文件复制完成之后,日志的复制线程也会结束。这样就得到了不在同一时间点的数据副本和开始备份以后的事务日志。完成上面的步骤之后,就可以使用InnoDB崩溃恢复代码执行事务日志(redo
log),以达到数据的一致性。
备份分为两个过程:
1)backup,备份阶段,追踪事务日志和复制数据文件(物理备份)。
2)preparing,重放事务日志,使所有的数据处于同一个时间点,达到一致性状态。

3、安装支持包

yum install cmake gcc gcc-c++ -y
yum install automake autoconf -y
yum install bzr zlib-devel libgcrypt-devel -y
yum install libaio libaio-devel   bison libtool ncurses-devel -y

4、编译innobackupex
在percona-xtrabackup-2.1.7目录下,执行./utils/build.sh

#./utils/build.sh
Build an xtrabackup binary against the specified InnoDB flavor. Usage: build.sh CODEBASE
where CODEBASE can be one of the following values or aliases:
innodb51         | plugin                build against InnoDB plugin in MySQL 5.1
innodb55         | 5.5                   build against InnoDB in MySQL 5.5
innodb56         | 5.6,xtradb56,         build against InnoDB in MySQL 5.6
| mariadb100,galera56
xtradb51         | xtradb,mariadb51      build against Percona Server with XtraDB 5.1
| mariadb52,mariadb53
xtradb55         | galera55,mariadb55    build against Percona Server with XtraDB 5.5

从上面可以看到不同版本mysql代码库的别名,选择上面第一列的值就可以编译生成对应版本的innobackupex备份工具。

我的使用的mysql5.5版本,那么执行./utils/build.sh innodb55。

注意编译过程中出现的错误,大多情况下出错是因为缺少支持的依赖包。编译完成之后,生成以下几个可执行文件,并复制到一个工作目录中。

cp innobackupex /usr/local/bin/
cp src/xbcrypt  /usr/local/bin/
cp src/xbstream /usr/local/bin/
cp src/xtrabackup_innodb55 /usr/local/bin/ #在使用innobackupex备份的过程提示找不到xtrabackup_55,需要把xtrabackup_innodb55重命名一下或者复制一份。(提示错误“xtrabackup_55: command not found”)
cp /usr/local/bin/xtrabackup_innodb55  /usr/local/bin/xtrabackup_55

5、innobackupex的参数选项

这里只简单一些常用的命令选项

--help     查询所有的命令选项,能够快速地了解选项的功能。
--user     数据库帐号
--password 数据库帐号密码
--host       备份数据库的IP或者主机名,TCP/IP连接 --default-files 指定配置文件(必须作为第一个参数选项)
--no-timestamp  备份文件时不会创建一个时间点名字目录,直接存放到指定的目录中,如2013-03-25_00-00-09。 --apply-log    备份后的文件不能只用用来恢复,数据并不完整,里面有未完成(提交或者回滚)的的事物。使用该选项可以撤销(undone)未提交的事务,或者重放(replay)事务日志。 --use-memory 默认值100M,通过使用更大的内存,加速preparing的过程。
--copy-back     把备份数据复制到数据目录。数据目录最好为一个空目录,且有mysql用户的读写权限。 --compact 不备份二级索引数据页。

6、备份操作过程
按照备份原理中步骤,操作分别如下。

1)backup,创建数据备份

innobackupex  --defaults-file=/etc/my_9306.cnf   --user=root  --password='extension@123'  --host=127.0.0.1  --port=9306   /opt/xtrabackup/

2)preparing,undo撤销未提交的事务,重放redo log

innobackupex  --defaults-file=/etc/my_9306.cnf   --user=root   --password='extension@123'  --host=127.0.0.1  --port=9306   --apply-log /opt/xtrabackup/2014-03-05_10-09-06

7、搭建复制从服务器
1)关闭从服务器上的mysqld进程。把上面创建的一致性备份复制到从服务器上的,并mysql的数据目录(比如data)和日志目录(默认在data目录中)备份。把这两个目录清空,mysql用户对这两个目录有写权限。
2)把备份目录中的所有文件复制到数据目录中,也可以在从上安装Xtrabackup,使用–copy-back选项,把数据复制回数据目录。
3)启动mysqld,注意mysql的错误日志的输出信息。
4)现在就可以开始启动从服务器上的复制功能,主从的复制的功能就不多说了。mysql主上的备份时bin-log信息保存xtrabackup_binlog_info文件中,这个文件在备份目录下面。

cat xtrabackup_binlog_info
mysql-bin.000023    109899810

5)设置同步点

CHANGE MASTER TO MASTER_HOST='192.168.1.10',  MASTER_USER='replication', MASTER_PASSWORD='replication', MASTER_PORT=9306, MASTER_LOG_FILE='mysql-bin.000023',  MASTER_LOG_POS=109899810;

注意查看IO线程和SQL线程的状态。

总结

Xtrabackup第一次用于生产上备份,120G的数据备份时间不到两个小时。备份过程中服务器的负载没有明显的上升。备份的数据(包括索引数据)比原始的数据略大一点,当把备份数据库复制到其他的服务器上或者异地机房时,需要很长的网络传输时间或者很大的网络带宽资源。如果有专用的备份服务器,对于一些大表,可以删除索引或者备份的过程中不备份索引数据。innobackupex使用–conpact选项,就可以不备份二级索引数据。另外可以通过innodb fast index creation来快速创建二级索引。对于大数据库的备份,Percona Extrabackup是最佳的选择。高数据一致、快速备份与恢复,值得拥有。

Xtrabackup数据全备份与快速搭建从服务器的更多相关文章

  1. [Windows Azure] 使用 Windows Azure 快速搭建 Redis 服务器

    [Windows Azure] 使用 Windows Azure 快速搭建 Redis 服务器   Redis相信玩开源,大数据的朋友们并不陌生,大家最熟悉的使用者就是新浪微博,微博的整体数据缓存都是 ...

  2. koa2+koa-generator+mysql快速搭建nodejs服务器

    koa2+koa-generator+mysql快速搭建nodejs服务器 用koa的脚手架koa-generator可以快速生成项目骨架,可以用于发开或者测试接口 https://github.co ...

  3. CentOS 6.5下快速搭建ftp服务器[转]

    CentOS 6.5下快速搭建ftp服务器 1.用root 进入系统 2.使用命令 rpm -qa|grep vsftpd 查看系统是否安装了ftp,若安装了vsftp,使用这个命令会在屏幕上显示vs ...

  4. CentOS 6.5下快速搭建ftp服务器

    来源:Linux社区 作者:Linux CentOS 6.5下快速搭建ftp服务器 1.用root 进入系统 2.使用命令 rpm -qa|grep vsftpd 查看系统是否安装了ftp,若安装了v ...

  5. Ubuntu 14.04快速搭建SVN服务器及日常使用【转】

    转自:http://www.linuxidc.com/Linux/2015-05/117735.htm 1.介绍  Subversion是一个自由,开源的版本控制系统,这个版本库就像一个普通的文件服务 ...

  6. Ubuntu 14.04快速搭建SVN服务器及日常使用

    1.介绍  Subversion是一个自由,开源的版本控制系统,这个版本库就像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况.这样就可以很方面恢复到以前的版本,并可以查看数据更改 ...

  7. 快速搭建windows服务器的可视化运维环境

    开发好的程序部署在服务器上,如何对服务器的基本指标进行监控呢?最近对一套工具进行了研究,可以快速搭建服务器监管环境,很是强大,最重要的是它还很酷炫. 原理:数据采集+时序数据库+可视化,下面记录一下搭 ...

  8. 快速搭建Web服务器软件PHP+Apache+MySQL

    搭建网站或者博客,需要一个合适的 Web 服务器.除了如下能在购买的虚拟空间上进行操作外,我们也可以在自己的电脑上搞定,因为可以用来方便快捷地测试网站或者博客主题,无论是 Wordpress.Joom ...

  9. 快速搭建vsftp 服务器并配置指定目录

    1  搭建vsftp 服务器 前期准备: 1.用root 进入系统 2.使用命令 rpm  -qa|grep vsftpd 查看系统是否安装了ftp,若安装了vsftp,使用这个命令会在屏幕上显示vs ...

随机推荐

  1. MySQL: Tree-Hierarchical query

             http://dba.stackexchange.com/questions/30021/mysql-tree-hierarchical-query     No problem. ...

  2. python函数和常用模块(三),Day5

    递归 反射 os模块 sys模块 hashlib加密模块 正则表达式 反射 python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数 ...

  3. 习题:codevs 1035 火车停留解题报告

    本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...

  4. Hibernate(三)__核心接口和类

    该图显示了核心接口类以及配置文件的关系层次,越往下越偏向底层数据库. 1. hibernate.cfg.xml文件 ①该文件主要用于指定各个参数,是hibernate核心文件 ②默认放在src目录下, ...

  5. jquery图片查看插件,支持旋转、放大、缩小、拖拽、缩略图(仿qq图片查看)

    最近做了一个jquery图片查看的插件,目的是能精确查看图片的详情,插件支持图片旋转.放大.缩小.拖拽.缩略图显示,界面效果是按照window的qq查看图片功能写的,当然不尽相同. 具体功能: 1. ...

  6. AE常见接口之间的关系(较笼统)+arcgis常见概念

    常见的接口有如下关系 IworkspaceFactory-------------->IworkSpace------------------>IfeatureWorkSpace ---- ...

  7. 为 MDS 修改 SharePoint 2013组件

    了解如何修改 SharePoint 项目中的组件以在 SharePoint 2013 中利用最少下载策略(MDS).   本文内容 为何修改 SharePoint 组件? 母版页 ASP.NET 页面 ...

  8. JavaScript MVC框架和语言总结[infoq]

    infoq关于javascript的语言和框架的总结,非常全面,值得一读. http://www.infoq.com/minibooks/emag-javascript Contents of the ...

  9. 基于 VLC 的 Android 多媒体解决方案

    前段时间项目中需要在 Android 中播放视频.流媒体.查看监控,就研究了一下 Android 多媒体解决方案. 查找了一下,大致有如下几种: Android MediaPlayer FFmpeg ...

  10. [Android]Android系统启动流程源码分析

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5013863.html Android系统启动流程源码分析 首先 ...