前面Zabbix使用的数据库是mysql,数据库备份不用多说,必须滴,由于使用的是innodb引擎,既然做,那就使用第三方强大的Xtrabackup工具来热备吧,Xtrabackup的说明,参见https://my.oschina.net/u/1171265/blog/200437

  • 数据库备份:

简单粗暴,下面给出mysql备份脚本:

#!/bin/bash
#mysql热备脚本,Version:1.0
#Author:jzd
#备份策略:每周一进行完整备份,以后每一天在前一天的基础上进行增量备份
#
#备份目录
back_dir="/back" #备份数据库信息
host="127.0.0.1"
dbuser="dbuser"
dbpasswd="dbpasswd" #日志文件
back_log="${back_dir}/mysql_back.log" #week day
week_day=`date +%w`
#yesterday
yesterday=`date +%F -d "1 days ago"` #日志记录函数
function log(){ echo "`date` $1" | tee -a ${back_log} } #判断当前日期,是周一进行全备份,其他时间进行增量备份
if [ ${week_day} -eq 1 ]; then
#完整备份
log "周${week_day}开始完全备份..."
innobackupex --host=${host} --user=${dbuser} --password=${dbpasswd} ${back_dir} &>> ${back_log}
if [ $? -eq 0 ]; then
log "完全备份完毕."
else
log "完全备份出错,请检查."
exit 1
fi
else
let dir_num=`find ${back_dir} -type d -name "${yesterday}*" | wc -l`
if [ ${dir_num} -ne 1 ]; then
log "昨天增量目录未找到或昨天备份目录大于等于2个,请确认后再次备份."
exit 1
fi
incremental_dir=`find ${back_dir} -type d -name "${yesterday}*"`
log "周${week_day}开始增量备份..."
#增量备份
innobackupex --host=${host} --user=${dbuser} --password=${dbpasswd} --incremental ${back_dir} --incremental-basedir=${incremental_dir} &>> ${back_log}
if [ $? -eq 0 ]; then
log "增量备份成功."
else
log "备份失败,请检查日志..."
exit 1
fi
fi exit $?

需修改的地方,也可以写成配置文件source进去,完全可以用在生产环境。

#备份目录

back_dir="/back"

#备份数据库信息

host="127.0.0.1"

dbuser="dbuser"

dbpasswd="dbpasswd"

#日志文件

back_log="${back_dir}/mysql_back.log"

  • 数据恢复:

话说备份容易,恢复不易啊,下面也给出恢复脚本,配合上面备份脚本使用,但是恢复完毕后,需手动恢复当日的二进制文件,恢复方法见开篇Xtrabackup介绍文章;

恢复脚本的星期和日期对应的转换,搞得头都大了,缠了两天,判断太多,导致太乱,于是多使用函数,发现自己对函数的使用加强了(哈哈,相对于以前,感觉自己有面向对象的思想了,但这是shell)

#!/bin/bash
#mysql数据恢复脚本
#Author:jzd
#Version:V1.0 #back dir
back_dir='/back'
#full back day
full_back_day=1
#today
today=`date +%F`
#week day
week_day=`date +%w`
#log file
recovery_log="${back_dir}/mysql_recovery.log" #log
function log(){
echo "`date` $1" | tee -a ${recovery_log}
} #find back dir
function finddir(){
if [ `find $back_dir -type d -name "$1*" | wc -l` -ne 1 ]; then
log "发现备份目录$1为0个或多于一个,请检查..."
exit 1
else
log "发现备份目录`find $back_dir -type d -name "$1*"`"
find_dir="`find $back_dir -type d -name "$1*"`"
fi
} #all recovery
function allredo(){
log "开始完整备份恢复准备..."
innobackupex --apply-log --redo-only $1 &>> ${recovery_log}
if [ $? -ne 0 ]; then
log "完整恢复准备出错,请检查..."
exit 1
fi
log "完整备份恢复准备完成"
} #incremental recovery
function incredo(){
log "开始增量数据恢复准备..."
innobackupex --apply-log --redo-only $1 --incremental-dir=$2 &>> ${recovery_log}
if [ $? -ne 0 ]; then
log "增量数据恢复准备出错,请检查..."
exit 1
fi
log "增量数据$2恢复准备完成"
}
#real recovery
function recovery(){
log "备份数据准备完成,开始恢复数据..."
innobackupex --copy-back $1 &>> ${recovery_log}
if [ $? -ne 0 ]; then
log "完整恢复准备出错,请检查..."
exit 1
fi
log "恢复数据完成,请检查."
log "请手动恢复二进制文件数据."
} #判断今日是否是周一 if [ $week_day -eq ${full_back_day} ]; then
finddir ${today}
all_dir="${find_dir}"
if [ ! -z "${all_dir}" ]; then
allredo $all_dir
recovery $all_dir
else
log "未发现今日备份,恢复上周数据."
for i in "7 6 5 4 3 2 1"
do
back_date=`date +%F -d "${i} days ago"`
if [ $i -eq 7 ]; then
finddir ${back_date}
all_dir="${find_dir}"
allredo ${all_dir}
else
finddir ${back_date}
dir_back=${find_dir}
incredo ${all_dir} ${dir_back}
fi
done
recovery ${all_dir}
fi
else
back_date=`date +%F -d "$((${week_day}-${full_back_day})) days ago"`
finddir ${back_date}
all_dir="${find_dir}"
allredo ${all_dir}
let flag=$((${week_day}-1-${full_back_day}))
while [ ${flag} -ge 0 ]
do
incr_date=`date +%F -d "${flag} days ago"`
finddir ${incr_date}
incr_dir="${find_dir}"
incredo ${all_dir} ${incr_dir}
let flag=`expr $flag - 1`
done
recovery ${all_dir}
fi exit 0

Xtrabackup—InnoDB实现mysql热备份的更多相关文章

  1. xtrabackup备份(MySQL备份)与恢复

    xtrabackup备份(MySQL备份)与恢复 1. innobackupex参数选项 --no-timestamp: 不创建一个时间戳 --defaults-file=[MY.CNF] //指定配 ...

  2. 通过xtrabackup工具对mysql数据库做全备

    需求描述: 使用xtrabackup工具对mysql实例中的所有的数据库进行备份,并且将备份的过程输出到指定的日志文件中. 操作过程: 1.使用xtrabacup工具备份mysql实例 xtrabac ...

  3. 使用 Xtrabackup 在线对MySQL做主从复制【转】

    1. 说明 1.1 xtrabackup mysqldump对于导出10G以下的数据库或几个表,还是适用的,而且更快捷.一旦数据量达到100-500G,无论是对原库的压力还是导出的性能,mysqldu ...

  4. xtrabackup增量备份mysql +MHA

    http://blog.csdn.net/yanggd1987/article/category/2214421 https://www.centos.bz/2013/09/innobackupex- ...

  5. 使用 Xtrabackup 在线对MySQL做主从复制

    1. 说明 1.1 xtrabackup mysqldump对于导出10G以下的数据库或几个表,还是适用的,而且更快捷.一旦数据量达到100-500G,无论是对原库的压力还是导出的性能,mysqldu ...

  6. 14.19 InnoDB and MySQL Replication InnoDB 和MySQL 复制:

    14.19 InnoDB and MySQL Replication InnoDB 和MySQL 复制: MySQL 复制工作对于InnoDB 表和对于MyISAM表. 它是可能使用复制的方式 存储引 ...

  7. xtrabackup在线迁移mysql并搭建为主主同步

    一.背景 工作中有需求数据库需要迁移,但是不能停服,不能锁库锁表影响业务的正常运行,所以使用XtraBackup 二.环境: 操作系统:CentOS Linux release 7.4.1708 (C ...

  8. 【原创】Innodb中mysql如何快速删除2T的大表

    小漫画 来,先来看小漫画陶冶一下情操 OK,这里就说了.假设,你有一个表erp,如果你直接进行下面的命令 drop table erp 这个时候所有的mysql的相关进程都会停止,直到drop结束,m ...

  9. mysql 热备份

    xtrabackup mysql 的备份和恢复 1.准备 安装依赖 yum install perl-DBD-MySQL perl-Time-HiRes libaio libaio-devel -y ...

随机推荐

  1. php安装 出现Sorry, I cannot run apxs. ***错误解决方法

    # tar zvxf php-5.1.2.tar.gz# cd php-5.1.2# ./configure --prefix=/usr/local/php --with-mysql=/usr/loc ...

  2. Ceph BlueFS

    一.概述 BlueFS是个小型文件系统,小体现在功能简单,没有实现Posix接口,不支持对文件的覆盖写操作只支持追加写,没有本地文件系统的树形层次结构,只有扁平的目录到文件的映射关系.和BlueSto ...

  3. 【MyBatis】MyBatis之如何配置

    1,MyBatis简介 MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis 使用简 ...

  4. 关于解锁美版Play市场

    关于解锁美版Play市场(本帖已经突破了G+的500评论上限,如有问题请转载留言) 我对这个问题思考的很深刻也思考了很久,作为一个深度google脑残粉怎么能用不完整的Play Store呢?那人生岂 ...

  5. JAX-RS annotations

    @Path("resource_path"):The @Path annotation defines the path to the base URL or resource_p ...

  6. Echarts 如何与 百度地图结合?

    官方demo:http://echarts.baidu.com/examples/editor.html?c=map-polygon 需要按顺序加载以下几个资源,然后就可以在echarts配置中使用 ...

  7. There is no Action mapped for namespace / and action name . - [unknown location]

    今天碰到了这个问题,原因不明白. 在webContent下建立了index.jsp后重启项目不报错了. 原因未知.

  8. Vue 中组件概念

    1 为了能在模板中使用,组件必须先注册以便 Vue 能够识别.这里有两种组件的注册类型:全局注册和局部注册. 1.1 全局注册是通过Vue.component 来向Vue注册,例子 Vue.compo ...

  9. windows系统安装ubuntu双系统

    近期由于要学习python开发,经常需要用到linux环境.但是一般的编辑和办公在windows环境下有非常的舒服,所以就想装一个双系统.经过几经周折,终于在我的系统上装成功了,在这分享一些安装过程. ...

  10. 精确光源(Punctual Light Sources)

    <Physically-Based Shading Models in Film and Game Production>(SIGGRAPH 2010 Course Notes) (地址: ...