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创文章,转载请注明出处!

相关文章推荐

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

Xtrabackup是由percona开发的一个开源软件,它是innodb热备工具ibbackup(收费的商业软件)的一个开源替代品。Xtrabackup由个部分组成:xtrabackup和innob...

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

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

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

Xtrabackup是由percona开发的一个开源软件,它是innodb热备工具ibbackup(收费的商业软件)的一个开源替代品。Xtrabackup由个部分组成:xtrabackup和innob...

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

【目标】使用mysqldump做全备,结合mysql自带的binlog功能实现增量备份 为了操作方便,建议开启两个Terminal,一个进行Mysql的相关操作,一个进行linux语句操作。...

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

一、安装解压1.安装数据库 官网:http://www.percona.com 下载地址:http://www.percona.com/redir/downloads/XtraBackup/Xtr...

innobackupex备份恢复使用!

1.安装innobackupex   yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percon...

mysql innobackupex备份恢复

下载安装地址: https://www.percona.com/downloads/XtraBackup/LATEST/ 这里选择二进制通用格式安装,安装完成之后解压,将bin目录添加到path中。 ...

MYSQL完全与增量备份及恢复【转载改编】

文档介绍 本文档采用mysqldump 对数据库进行备份,mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这...

达梦(7)增量备份恢复测试

关于增量备份的主要参考> p273。达梦的增量必须基于一个备份才可能生成。所以如果一个数据库还没进行去备份,而直接用“backup database increment with backupdir ...

oracle exp/imp增量备份恢复

orcale大数据备份机制
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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