innobackupex备份恢复详解及详细增量备份及恢复脚本

原创 2017年10月13日 15:54:28

innobackupex安装完成后可以直接使用,默认的安装路径为/usr/bin/innobackupex.
以下所有操作在root用户下进行
为方便理解脚本,先介绍一下全备份和增量备份语句.
全备份:

innobackupex --defaults-file=/etc/mysql/my.cnf --user=root --password=123 $BACK_DIR 

增量备份:

innobackupex --defaults-file=/etc/mysql/my.cnf --user=root --password=123 --incremental $BACK_DIR --incremental-basedir=$FULLBACKUP 

解释一下:增量备份的基础是全量备份,第二次增量备份以第一次增量备份为基础,这一点可以查看生成的备份文件加下的xtrabackup_checkpoints文件做验证.
全量备份xtrabackup_checkpoints文件内容:

backup_type = full-backuped
from_lsn = 0
to_lsn = 3847017
last_lsn = 3847026
compact = 0
recover_binlog_info = 0

第一次增量备份xtrabackup_checkpoints文件内容:

backup_type = incremental
from_lsn = 3847017
to_lsn = 3847017
last_lsn = 3847026
compact = 0
recover_binlog_info = 0

第二次增量备份xtrabackup_checkpoints文件内容:

backup_type = incremental
from_lsn = 3847017
to_lsn = 3848936
last_lsn = 3848945
compact = 0
recover_binlog_info = 0

其中三个文件backup_type,from_lsn,to_lsn这三个参数的区别及含义显而易见,不做解释了.很多仁兄的博客里对这个都有介绍.
上备份脚本:

#!/bin/bash
LANG=C
GTIME=`date +%Y-%m-%d`
DIR_TIME=innoback-`date +%Y-%m-%d`
BACK_DIR=/home/zxy/data/$DIR_TIME
INNOBACK="/usr/bin/innobackupex"
if [ ! -d $BACK_DIR ]
then
        mkdir -p $BACK_DIR
        cd $BACK_DIR
        $INNOBACK --defaults-file=/etc/mysql/my.cnf --user=root --password=123 $BACK_DIR 
elif [ -d $BACK_DIR ]
then
        cd $BACK_DIR
        FULLBACKUP=`ls -1 | grep  $GTIME | sort -k 1r | awk 'NR==1{print $1}'`
        if [ -d ${FULLBACKUP:-nodir} ]
        then
                $INNOBACK --defaults-file=/etc/mysql/my.cnf --user=root --password=123 --incremental $BACK_DIR --incremental-basedir=$FULLBACKUP 
        else
                $INNOBACK --defaults-file=/etc/mysql/my.cnf --user=root --password=123 $BACK_DIR &> /dev/null
        fi
fi

其中:ls -1 | grep $GTIME | sort -k 1r | awk 'NR==1{print $1} 做一下解释.
ls -1 : 官方给出的注解为 list one file per line.
sort -k 1r : sort 为shell的排序函数,-k 1r : 设置排序方式,1标识第一个区块,默认为升序 r为降序.如果不加后面”-k 1r”参数,该脚本就是差量备份脚本.
awk ‘NR==1{print $1} NR==1 定位在file的第一行.
print $1 显示第一列内容


这里写图片描述
增量备份:备份自上一次备份以来(增量或完全)以来变化的数据; 特点: 节约空间、还原麻烦 .
差异备份:备份自上一次完全备份以来变化的数据 特点: 浪费空间、还原比增量备份简单.

当然,有脚本的话,备份的还原都不麻烦,所以为了节约空间,还是选择增量备份吧.


备份还原

先上脚本:

#!/bin/bash
LANG=C

INNOBACK="/usr/bin/innobackupex"

echo 'please input date   format: 2017-10-10'
read TIME

BACK_DIR=/home/zxy/data/innoback-$TIME

echo $BACK_DIR

if [[ ! -d $BACK_DIR ]]; then
    echo 'warning-----The format must be correct and make sure that the corresponding folder for that date exists'
    exit
fi

cd $BACK_DIR

FULLBACKUP=`ls -1 | grep  $TIME | sort | awk 'NR==1{print $1}'`
echo $FULLBACKUP

files=`ls -1 | grep $TIME | sort`

for var in $files
do
    if [[ $FULLBACKUP == $var ]]; then
        echo "quanbeifen"
        echo $BACK_DIR/$var
        $INNOBACK --defaults-file=/etc/mysql/my.cnf --user=root --password=123 --apply-log  --redo-only $BACK_DIR/$FULLBACKUP
    else
        echo "zeengliang--"$var 
        echo $BACK_DIR/$var
        $INNOBACK --defaults-file=/etc/mysql/my.cnf --user=root --password=123 --apply-log  --redo-only $BACK_DIR/$FULLBACKUP --incremental-dir=$BACK_DIR/$var
    fi
done

#Data rollback 
service mysql stop
echo "=========================================service mysql stop================================="

mv /var/lib/mysql /var/lib/mysql_bak
mkdir -p /var/lib/mysql

$INNOBACK --defaults-file=/etc/mysql/my.cnf --user=root --password=123 --apply-log $BACK_DIR/$FULLBACKUP

$INNOBACK --defaults-file=/etc/mysql/my.cnf --user=root --password=123 --copy-back $BACK_DIR/$FULLBACKUP

chown -R mysql.mysql /var/lib/mysql

service mysql start

echo "========================================service mysql start==================================="
echo "rollback end success"

增量备份的还原,是先将增量备份文件整合到全量备份文件中.再对全量备份文件进行还原操作.

具体参数含义,本着互利共赢的原则,我参考了以下两篇博客:
http://blog.csdn.net/rudygao/article/details/50435041
http://blog.51yip.com/mysql/1650.html
这些内容,前人已经写了,我就不再费劲了.

至于备份的脚本如何作为定时任务执行,简单写一下吧:
创建work.cron 文件,内容为:

* */1 * * * /home/zxy/data/innobackex.sh

那五个”* “的含义 :分 时 日 月 周.
执行命令:

crontab work.cron

即可每小时进行一次增量备份.
该脚本每天第一次备份为全量备份,之后为增量备份.


增量备份及还原脚本到此结束,如有异议,请评论商讨.

版权声明:yuan创文章,转载请注明出处!

innobackupex在线备份及恢复(全量和增量)

[MySQL] innobackupex在线备份及恢复(全量和增量) 安装 声明:以下操作最好以mysql用户执行。 首先,通过wget下载源码tar包: [plain] wget h...
  • heizistudio
  • heizistudio
  • 2014年04月17日 15:37
  • 20695

[MySQL] innobackupex在线备份及恢复(全量和增量)

Xtrabackup是由percona开发的一个开源软件,它是innodb热备工具ibbackup(收费的商业软件)的一个开源替代品。Xtrabackup由个部分组成:xtrabackup和innob...
  • u010415792
  • u010415792
  • 2013年10月29日 12:34
  • 20614

innobackupex mysql备份及恢复(全量和增量)

环境:Ubuntu 12.04.5 LTS mysql 5.5.47 备份路径 /backup/安装 apt-get install percona-xtrabackup一、 全量备份root@i...
  • u010066807
  • u010066807
  • 2016年02月17日 12:59
  • 2539

[MySQL] innobackupex在线备份及恢复(全量和增量)

Xtrabackup是由percona开发的一个开源软件,它是innodb热备工具ibbackup(收费的商业软件)的一个开源替代品。Xtrabackup由个部分组成:xtrabackup和innob...
  • djvc
  • djvc
  • 2017年06月21日 11:34
  • 320

MySQL innobackupex在线备份及恢复(全量和增量)

Xtrabackup是由percona开发的一个开源软件,它是innodb热备工具ibbackup(收费的商业软件)的一个开源替代品。Xtrabackup由个部分组成:xtrabackup和innob...
  • saga_gallon
  • saga_gallon
  • 2016年07月19日 17:47
  • 230

mysql之 Innobackupex(全备+增量)备份恢复

1. 准备实验环境 mysql> select version(); +------------+ | version()  | +------------+ | 5.6.25-log | +----...
  • zhang123456456
  • zhang123456456
  • 2017年06月08日 20:54
  • 266

innobackupex备份恢复详解

不想多说什么没用的,直接看实际操作吧。。还是说一句吧,就一句,innobackupex在备份过程中,会给非innodb表上读锁,会给innodb表上一个锁我不知道叫什么,总之不能更改表结构。我比较愚钝...
  • sun_ashe
  • sun_ashe
  • 2015年08月02日 21:21
  • 660

使用innobackupex在线备份及恢复mysql数据库

一、安装解压1.安装数据库 官网:http://www.percona.com 下载地址:http://www.percona.com/redir/downloads/XtraBackup/Xtr...
  • xizaihui
  • xizaihui
  • 2016年11月06日 09:51
  • 843

innobackupex 在线 备份及恢复数据库

innobackupex 在线 备份及恢复数据库
  • isoleo
  • isoleo
  • 2016年07月11日 17:51
  • 1525

【SQL】MySQL之使用mysqlbinlog进行增量备份及恢复详解

【目标】使用mysqldump做全备,结合mysql自带的binlog功能实现增量备份 为了操作方便,建议开启两个Terminal,一个进行Mysql的相关操作,一个进行linux语句操作。...
  • oYunTaoLianWu
  • oYunTaoLianWu
  • 2013年08月12日 01:13
  • 4948
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:innobackupex备份恢复详解及详细增量备份及恢复脚本
举报原因:
原因补充:

(最多只允许输入30个字)