Xtrabackup 每日增量恢复 – Awaken

前言

此恢复程序应该和上次发布的“Xtrabackup每周增量备份脚本程序”配合使用。http://www.ttlsa.com/mysql/xtrabackup-daily-backup/。本程序正式命名为:Awaken

程序用途

对于我个人来说使用每日增量恢复主要是有两个用途:

  • 用途1:为了验证备份的备份集是否有效,会不会出现备份不可用的情况。
  • 用途2:如果出现了线上误操作,更快的能找出误操作的数据并进行恢复(一般恢复库的数据总是比线上的晚1到2天)。

(提示:用途2的场景你也可以使用mysql主从来实现,通过start slave until等语法 + crontab。这里不多说)

程序结构

此程序包含了4个目录(bin、conf、log、var):

  • bin:存放运行恢复的主脚本程序(*.sh)。
  • conf:存放着程序运行的配置文件变量(*.conf)。
  • log:存放的是恢复时xtrabackup的输出内容(*.log)。
  • var:存放了索引文件(*.index)和错误记录文件(*.err)。
  1. *.index:每当恢复成功后都会记录一条信息到此文件中,此文件也是增量恢复的一个基础文件,当恢复的是增量的备份集,需要到*.index文件中找到第一次全备的记录作为增量恢复的基础。
  2. *.err:每当恢复出错了会记录一条数据到此文件。如果需要对恢复成功与否进行监控,可以通过此文件的变化来判断是否恢复成功(文件无变化就是备份成功了)。

(提示:这边的结果其实是和“Xtrabackup每周增量备份脚本程序”一致)

 

先决条件

确保你的xtrabackup 程序在机器上已经可以正确使用。

注意事项

为了安全请使用root以外的用户来使用本程序,本人专门使用了一个mysql用户来执行mysql相关的操作。

程序流程图

awaken

awaken流程

使用方式

一般此程序是配合crontab来每天执行的。

  • 执行

#         你的程序路径

/bin/bash /tmp/xtrabackup_cron/bin/recover.sh

(提示:有时候可能需要手动执行recover.sh脚本,可以指定文件/bin/bash recover.sh xx.tar.bz2。其中xx.tar.bz2需要在你配置文件中的备份目录)

 

  • 恢复成功索引文件内容

# 恢复成功 索引文件内容

{week_day:3,  dir:full_2015-12-31_20-11-36_4,  type:full,  date:2016-01-01 00:00:00}

{week_day:3,  dir:incr_2015-12-31_20-13-50_4,  type:incr,  date:2016-01-01 00:30:00}

  • 恢复失败错误文件内容

# 恢复失败 索引文件内容

{week_day:3, file_name:full_2015-12-31_20-11-36_4.tar.bz2, type:full, date:2016-01-01 00:10:00}

{week_day:3, file_name:incr_2015-12-31_20-13-50_4.tar.bz2, type:incr, date:2016-01-01 00:20:00}

(提示:其实索引文件的内容格式和错误文件的一样)

程序展示

  • 配置文件conf

  • 主程序说明

程序说明这里分4个模块来看(主逻辑、变量初始化、检测配置文件正确性、使用的其他方法)

  1. 主逻辑

2. 变量初始化

3. 检测配置文件正确性

4. 使用的其他方法

在我的机器上我将我的备份文件使用*.tar.bz2的压缩文件,因此我的配置文件的backup_file_suffix=.tar.bz2。你可以更具你自己而定。如果你没有使用压缩文件而是指定备份文件目录则可以将 apply_log_full 和 apply_log_incr 两个方法注释掉。

作者联系方式

谢谢作者的投稿,如有任何疑问可以直接联系作者,以下为联系方式:

昵称:HH

QQ:275258836

附件

awaken下载

 

感觉本文内容不错,读后有收获?

逛逛衣服店,鼓励作者写出更好文章。

HH

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:3   其中:访客  3   博主  0

  1. HH chen_hao 3

    由于有些用户说需要在备份的时候加上压缩命令方便恢复使用,这边我就添加上了
    在tar_backup_file方法中添加上如下代码
    cd $backup_dir
    tar -jcf ${1}_${backup_date}_${backup_time}_${backup_week_day}.tar.bz2
    ${1}_${backup_date}_${backup_time}_${backup_week_day}
    cd – > /dev/null
    新的程序我放在网盘上 https://yunpan.cn/crF25kgIJWuXS 访问密码 724f

  2. cuffs 0

    不错

  3. mysql 5