mysql全量+增量备份脚本
cat xtrabackup_mysql.sh
#!/bin/bash
#title :xtrabackup_mysql.sh
#description :backup mysql by using xtrabackup
#author :weavepub
#date :20190529
#version :1.0
#crontab :0 */2 * * * sh /usr/local/bin/xtrabackup_mysql.sh >>/opt/log/xtrabackup_mysql.out 2>&1
OFDAY="`date "+%u"`"
LASTWEEKENDDAY="`date -d '-'$OFDAY' day' "+%Y-%m-%d"`"
TODAY="`date +%Y-%m-%d`"
HOST="localhost"
PORT=""
BACKUP_USER="root"
BACKUP_PWD=""
FULLBACKUP_DIR="/opt/mysqlbackup/xtrabackup/fullbackup/"
INCREMENTAL_DIR="/opt/mysqlbackup/xtrabackup/incremental/"
LOG_FILE="/opt/log/xtrabackup_mysql.sh.log"
log(){
msg=$1
now=`date "+%Y-%m-%d %H:%M:%S"`
echo $now $msg >>$LOG_FILE
}
fullbackup(){
res=$(find $FULLBACKUP_DIR -type d -name $TODAY*)
if [ "$res" = "" ];then
log "start fullbackup"
innobackupex --host ${HOST} --port ${PORT} --user=${BACKUP_USER} --password=${BACKUP_PWD} ${FULLBACKUP_DIR}
else
log "already fullbackup today"
fi
} incrementalbackup(){
if [ $# -lt 1 ];then
log "using: incrementalbackup fullbackup_time[2016-09-25]"
return 1
fi
FULLBACKUP_TIME=$1
LAST_FULLBACKUP_DIR=$(find $FULLBACKUP_DIR -type d -name $FULLBACKUP_TIME*)
log "LAST_FULLBACKUP_DIR:"$LAST_FULLBACKUP_DIR
if [ "$LAST_FULLBACKUP_DIR" = "" ];then
log "LAST_FULLBACKUP not found"
return 1
fi
if [ -d ${LAST_FULLBACKUP_DIR} ];then
log "start incremental backup"
innobackupex --host=${HOST} --port=${PORT} --user=${BACKUP_USER} --password=${BACKUP_PWD} --incremental ${INCREMENTAL_DIR} --incremental-basedir=$LAST_FULLBACKUP_DIR
else
log "LAST_FULLBACKUP not found"
fi
} clean_full_backup(){
### clean mysql fullbackup file,please only run weekend OLDEST_DAY=$(date -d '1 week ago' -I)
OLDEST_TIMESTAMP=$(date -d "$OLDEST_DAY" +%s) if [ -d $FULLBACKUP_DIR ];then
cd $FULLBACKUP_DIR
for DIR in *
do
DAY=${DIR%%_*}
TIMESTAMP=$(date -d "$DAY" +%s)
if [ $TIMESTAMP -lt $OLDEST_TIMESTAMP ];then
rm -rf $DIR
log "clean dir $FULLBACKUP_DIR/$DIR"
fi
done
fi
} clean_incremental_backup(){
### clean mysql incremental backup file,please only run everyday OLDEST_DAY=$(date -d '1 day ago' -I)
OLDEST_TIMESTAMP=$(date -d "$OLDEST_DAY" +%s) if [ -d $INCREMENTAL_DIR ];then
cd $INCREMENTAL_DIR
for DIR in *
do
DAY=${DIR%%_*}
TIMESTAMP=$(date -d "$DAY" +%s)
if [ $TIMESTAMP -lt $OLDEST_TIMESTAMP ];then
rm -rf $DIR
log "clean dir $INCREMENTAL_DIR/$DIR"
fi
done
fi
} main(){
if [ ! -d $FULLBACKUP_DIR ];then
mkdir -p $FULLBACKUP_DIR
fi
if [ ! -d $INCREMENTAL_DIR ];then
mkdir -p $INCREMENTAL_DIR
fi
if [ "$OFDAY" = "" ];then
fullbackup
clean_full_backup
else
incrementalbackup $LASTWEEKENDDAY
clean_incremental_backup
fi
}
main
crontab -e
#xtrabackup
0 */2 * * * sh /opt/mysqlbackup/scripts/xtrabackup_mysql.sh >>/opt/log/xtrabackup_mysql.out 2>&1
mysql全量+增量备份脚本的更多相关文章
- mysql全备、增量备份脚本
1.mysql全量备份及定时删除备份文件脚本 #!/bin/bash v_user="root" v_password="mysql" backup_date ...
- Xtrabackup全量 增量备份详解
xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具,具有开源,免费,支持在线热备,备份恢复速度快,占用磁盘空间小等特点,并且支持不同情况下的多种备份 ...
- mysql全量和增量备份详解(带脚本)
在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 下面对这种备份方案详细说明下:1.MySQLdump增量备份配置执行增量备份的前提条件是M ...
- Mysql备份系列(2)--mysqldump备份(全量+增量)方案操作记录
在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 线上数据库备份场景:每周日执行一次全量备份,然后每天下午1点执行MySQLdump增量备份 ...
- mysql数据库的增量备份和全备
还有一种简单的方法 参考 https://blog.csdn.net/u010098331/article/details/50932064 (注意:5.6版本以上新加了gtid 功能,gtid开启之 ...
- Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录
在日常的linux运维工作中,大数据量备份与还原,始终是个难点.关于mysql的备份和恢复,比较传统的是用mysqldump工具,今天这里推荐另一个备份工具innobackupex.innobacku ...
- liunx系统mysql全量备份和增量备份
前提 在互联网项目中最终还是读数据进行操作,都离不开曾删改查,那么数据是重中之重,数据库的备份就显得格外重要. 但是每次都直接导出整个数据库的sql文件,显然是不现实的.对数据库的性能影响比较 ...
- Mysql备份系列(4)--lvm-snapshot备份mysql数据(全量+增量)操作记录
Mysql最常用的三种备份工具分别是mysqldump.Xtrabackup(innobackupex工具).lvm-snapshot快照.前面分别介绍了:Mysql备份系列(1)--备份方案总结性梳 ...
- 【MySQL】全量+增量的备份/恢复
生产环境中,有时需要做MySQL的备份和恢复工作.因MySQL是在运行过程中的,做全量备份需要时间,全量备份完成后又有数据变动,此时需要增量备份辅助.如果想恢复数据到一个空库(例如数据迁移或者上云等更 ...
随机推荐
- Chrome插件安装和用法
XPath Helper 下载插件,拖入chrome://extensions/ 使用方法:ctrl+shift+x呼出 JSONView的使用: 安装JSONView插件 下载插件,拖入chrome ...
- Hibernate的批量查询——Criteria查询所有、条件、分页、统计(聚合函数)、排序
1.查询所有的学生信息: public static void testSel() { Session session = HibernateUtils.openSession(); Transact ...
- spl_autoload_register 和 __autoload()魔术方法
在 PHP 5.3 之前,__autoload 函数抛出的异常不能被 catch 语句块捕获并会导致一个致命错误(Fatal Error). 尽管 __autoload() 函数也能自动加载类和接口 ...
- linux grep 查询多行的方法
linux grep 查询多行的方法 经常查询 git log 中使用的方法, 如下 git log |grep "xxxx" 如果想查询多行的话, 就有些尴尬, 如果想查询多行的 ...
- mpvue图片上传
mpvue小程序项目中的图片上传 我的csdn博客地址:https://blog.csdn.net/zmkyf1993 一般我是优先更新csdn内容,然后在拷过来的. 效果图 通过mpvue文档得知他 ...
- 安装和启动ElasticSearch服务遇到的几个问题
首先安装和启动服务的教程是参考文章:ES入门之一 安装ElasticSearch 然后在最后的启动es服务时遇到了几个小问题,因此在这里记录一下. 因为我对linux并不是很熟悉,因此文中如果有说错的 ...
- HustOJ二次开发之修改数据库连接池
有的时候我们会因为某种业务需要的情况下,需要修改hustoj默认的数据库连接池之类的. 修改数据库连接池步骤 进入到对应的目录 /home/judge/src/web/include 找到db_inf ...
- [Gamma阶段]第六次Scrum Meeting
Scrum Meeting博客目录 [Gamma阶段]第六次Scrum Meeting 基本信息 名称 时间 地点 时长 第六次Scrum Meeting 19/06/1 大运村寝室6楼 25min ...
- Java编程思想之七复用类
复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对之加以改变是不够的,它还必须做更多的事情. 使用类而不破坏程序代码: 在新类中产生现有对象.由于新的类是由现有 ...
- UDP丢包原因总结
丢包检查方法 给每个UDP包编号,对比收发端的接收到的包.对于UDP协议层上的包,例如RTP包,可以从RTP包中读出包的序列号进行判断. 抓包.发送端和接收端分别抓包.linux下可以使用tcpdum ...