优点:

不暂停服务器创建Innodb热备份

为mysql做增量的备份

在mysql服务器之间做在线表迁移

使创建mysql replication更加容易

备份mysql但不增加服务器的负载

安装:xtrabackup套件

配置官方给的yum源    yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

安装:yum install percona-xtrabackup-21.x86_64 -y

实际上,在备份的时候innobackupex会调用xtrabackup来备份innodb表,并复制所有的表定义,其他引擎的表(MyISAM,MERGE,CSV,ARCHIVE)。由于xtrabackup使用上没有innobackupex使用便捷,而且不支持其他的除innodb之外的存储引擎的备份

注意

不管是备份和恢复,innobackex都会不能指定data目录的位置,所以只能写在/etc/my.cnf配置文件中datadir=/usr/local/mysql/data. datadir必须是为空的,innobackupex --copy-back不会覆盖已存在的文件,还要注意,还原时需要先关闭服务,如果服务是启动的,那么就不能还原到datadir.

一些常用选项:

--no-timestamp,指定了这个选项备份会直接备份在BACKUP-DIR,不再创建时间戳文件夹

全量备份

备份数据:innobackupex --user=root --password=redhat /backup/ innobackupex --use-memory=256m --apply-log /backup/2015-12-16_23-22-20/

##--apply-log创建完备份之后数据被没有马上可以被还原,需要回滚未提交事务,前滚提交事务,之后数据就被写到了备份的数据文件(innodb文件)中,并重建日志文件。这一步隐式调用了2次xtrabackup –prepare。让数据库文件保持一致性

--user-memory:指定预备阶段可使用的内存,内存多则速度快,默认为10MB

恢复 innobackupex --copy-back /backup/2015-12-16_23-22-20/

增量备份:

依赖于innodb页上面的LSN(log sequence number),每次对数据库的修改都会导致LSN自增。增量备份会复制指定LSN之后的所有数据页.通过查看备份目录中的xtrabackup_checkpoints 可以看出一二

backup_type = incremental

from_lsn = 1602492

to_lsn = 1602829

last_lsn = 1602829

compact = 0

另外,此工具只会影响xtradb或者innodb存储引擎的表,其他引擎的表在增量备份的时候只会复制整个文件,不会差异。需要注意的是,应用增量备份的时候只能按照备份的顺序来应用。如果应用顺序错误,那么备份就不可用。如果无法确定顺序,可以使用xtrabackup-checkpoints来确定顺序。

先全量:innobackupex --user=root --password=redhat /backup/mon/

第一次增量,需要注意的是全量备份生成的文件默认是以时间为目录的,所以在指定basedir的时候要指定正确

innobackupex --incremental /backup/tue/ --incremental-basedir=/backup/mon/2015-12-16_23-39-44/ --user=root --password=redhat

第二次增量:第二次是在第一次的基础上完成的备份

innobackupex --incremental /backup/wed/ --incremental-basedir=/backup/tue/2015-12-16_23-44-19/ --user=root --password=redhat

恢复增量备份

step1:准备原始备份

innobackupex --apply-log --redo-only /backup/mon/2015-12-16_23-39-44/ --use-memory=256m --user=root --password=redhat

step2:合并增量备份到原始备份

第一次增量叠加到原始备份

innobackupex --apply-log --redo-only /backup/mon/2015-12-16_23-39-44/ --incremental-dir=/backup/tue/2015-12-16_23-44-19/ --use-memory=256m --user=root --password=redhat

第二次增量叠加到原始备份

innobackupex --apply-log --redo-only /backup/mon/2015-12-16_23-39-44/ --incremental-dir=/backup/wed/2015-12-16_23-45-31/ --use-memory=256m --user=root --password=redhat

step3:生成最终备份

innobackupex --apply-log /backup/mon/2015-12-16_23-39-44/ --user=root --password=redhat --use-memory=256m

step4: 恢复最终备份,修改文件、目录的权限属主

chown mysql. -R data/

chown mysql. -R ib_logfile*

#--redo-only只做已提交事务,不回滚未提交事务。除了最后一个不用加之外,其他的增量应用都要加,最后一个应用的时候可以直接进入回滚未提交事务阶段。如果加了也没事儿,服务启动的时候会进入recovery过程,来回滚。

参考:http://www.cnblogs.com/Amaranthus/archive/2014/08/19/3922570.html

innobackupex的使用的更多相关文章

  1. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  2. 配合crond服务实现自定义周期备份MySQL数据库(使用innobackupex进行备份)

    备份 新建一个脚本/root/backup.py,内容如下: #!/usr/bin/env python# -*- coding: utf-8 -*- ''' 脚本作者:昨夜星辰 脚本作用:配合cro ...

  3. 通过innobackupex实现对MySQL的增量备份与还原

    备份 增量备份是基于完整备份的,所以我们需要先做一次完整备份: innobackupex --password=test /backup/ 备注:test是我的MySQL服务的root用户的密码,/b ...

  4. 通过innobackupex实现对MySQL的完整备份与还原

    备份 新建一个用于存放备份的目录 mkdir /backup 执行以下命令: innobackupex --password=test /backup/ 执行完后你会看到“completed OK!” ...

  5. 数据库热备份工具innobackupex的安装

    Xtrabackup是由percona开发的一个开源软件,此软件可以说是innodb热备工具ibbackup的一个开源替代品. 这个软件是由2个部分组成的:xtrabackup和innobackupe ...

  6. innobackupex --rsync 报错 Error: can't create file (null)/xtrabackup_rsyncfiles_pass1

    在使用最新版的innobackupex(2.3.2): innobackupex /backup --rsync --user=xx --password=xxx 备份时报错: Error: can' ...

  7. Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录

    在日常的linux运维工作中,大数据量备份与还原,始终是个难点.关于mysql的备份和恢复,比较传统的是用mysqldump工具,今天这里推荐另一个备份工具innobackupex.innobacku ...

  8. MySQL的热备percona-xtrabackup、innobackupex的安装方法

    http://blog.csdn.net/dbanote/article/details/13295727 http://blog.csdn.net/yangzhawen/article/detail ...

  9. innobackupex的安装

    innobackupex的安装方法有3种: 通过RPM包安装: 通过源码包安装: 通过二进制包安装. 第3种方法最简单,这里只介绍它.以下是安装步骤: 打开官方下载链接: Version默认是最新版本 ...

  10. innobackupex 重启MySQL

    当重新修改了MySQL的数据目录时: 重启报错: Starting MySQL.The server quit without updating PID file (/[FAILED]l/mysql/ ...

随机推荐

  1. ivy

    ivy https://ant.apache.org/ivy/ Apache Ivy™ is a popular dependency manager focusing on flexibility ...

  2. 使用POCO发送HTTP(S)请求

    POCO GitHub地址https://github.com/pocoproject/poco http_example.cpp #include <iostream> #include ...

  3. 初探linux子系统集之led子系统(三)【转】

    本文转载自:http://blog.csdn.net/eastmoon502136/article/details/37822837 世界杯结束了,德国战车夺得了大力神杯,阿根廷最终还是失败了.也许3 ...

  4. hrtimer高精度定时器的简单使用【学习笔记】

    #include <linux/module.h> #include <linux/kernel.h> #include <linux/hrtimer.h> #in ...

  5. js判断字符串是否包含某个字符串

    String对象的方法 1,indexOf() (推荐) 方法可返回某个指定的字符串值在字符串中首次出现的位置.如果要检索的字符串值没有出现,则该方法返回 -1 var str = "123 ...

  6. 以太坊EVM在安全性方面的考虑

    以太坊上用户编写的合约是不可控的,要保证这些合约能够正确执行并且不会影响区块链的稳定,虚拟机需要做安全方面的考虑. 1 在程序执行过程中采取的每个计算步骤都必须提前支付费用, 从而防止DoS攻击.先消 ...

  7. jLim - 紧凑的 JavaScript 框架

    1. [代码][JavaScript]代码     /*! * jLim Core * * jLim is a small JavaScript base code. It can be used t ...

  8. iOS——多线程编程详细解析

    基本定义: 程序:由代码生成的可执行应用.(例如QQ.app) 进程:一个正在运行的程序可以看做是一个进程. (例如:正在运行的QQ 就是一个进程),进程拥有独立运行所需要的全部资源. 线程: 程序中 ...

  9. [USACO11NOV]二进制数独Binary Sudoku

    传送门 这道题是很好的一道IDA*练习题. 首先我们先确定搜索的框架,我们要求的是用最少的修改次数使得所有的行,列,宫之内都有偶数个1,最直观的想法显然是先预处理出有奇数个1的行,列,宫,之后枚举每一 ...

  10. JAVA interrupte中断线程的真正用途

    Java线程之中,一个线程的生命周期分为:初始.就绪.运行.阻塞以及结束.当然,其中也可以有四种状态,初始.就绪.运行以及结束. 一般而言,可能有三种原因引起阻塞:等待阻塞.同步阻塞以及其他阻塞(睡眠 ...