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全量+增量备份脚本的更多相关文章

  1. mysql全备、增量备份脚本

     1.mysql全量备份及定时删除备份文件脚本 #!/bin/bash v_user="root" v_password="mysql" backup_date ...

  2. Xtrabackup全量 增量备份详解

    xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具,具有开源,免费,支持在线热备,备份恢复速度快,占用磁盘空间小等特点,并且支持不同情况下的多种备份 ...

  3. mysql全量和增量备份详解(带脚本)

    在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 下面对这种备份方案详细说明下:1.MySQLdump增量备份配置执行增量备份的前提条件是M ...

  4. Mysql备份系列(2)--mysqldump备份(全量+增量)方案操作记录

    在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 线上数据库备份场景:每周日执行一次全量备份,然后每天下午1点执行MySQLdump增量备份 ...

  5. mysql数据库的增量备份和全备

    还有一种简单的方法 参考 https://blog.csdn.net/u010098331/article/details/50932064 (注意:5.6版本以上新加了gtid 功能,gtid开启之 ...

  6. Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录

    在日常的linux运维工作中,大数据量备份与还原,始终是个难点.关于mysql的备份和恢复,比较传统的是用mysqldump工具,今天这里推荐另一个备份工具innobackupex.innobacku ...

  7. liunx系统mysql全量备份和增量备份

    前提 ​ 在互联网项目中最终还是读数据进行操作,都离不开曾删改查,那么数据是重中之重,数据库的备份就显得格外重要. ​ 但是每次都直接导出整个数据库的sql文件,显然是不现实的.对数据库的性能影响比较 ...

  8. Mysql备份系列(4)--lvm-snapshot备份mysql数据(全量+增量)操作记录

    Mysql最常用的三种备份工具分别是mysqldump.Xtrabackup(innobackupex工具).lvm-snapshot快照.前面分别介绍了:Mysql备份系列(1)--备份方案总结性梳 ...

  9. 【MySQL】全量+增量的备份/恢复

    生产环境中,有时需要做MySQL的备份和恢复工作.因MySQL是在运行过程中的,做全量备份需要时间,全量备份完成后又有数据变动,此时需要增量备份辅助.如果想恢复数据到一个空库(例如数据迁移或者上云等更 ...

随机推荐

  1. 什么是JavaEE,什么是Spring

    作者:大宽宽链接:https://www.zhihu.com/question/268742981/answer/341770209来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  2. Codeforces Round #603 (Div. 2) A. Sweet Problem(数学)

    链接: https://codeforces.com/contest/1263/problem/A 题意: You have three piles of candies: red, green an ...

  3. QQ互联登陆(Java)

    一.准备部分 1.账户注册 腾讯开放平台网址: https://connect.qq.com/index.html 首先需要到开放平台注册QQ互联开发者身份.注册之后创建一个网站应用,注意,需要备案成 ...

  4. BZOJ 3561: DZY Loves Math VI 莫比乌斯反演+复杂度分析

    推到了一个推不下去的形式,然后就不会了 ~ 看题解后傻了:我推的是对的,推不下去是因为不需要再推了. 复杂度看似很大,但其实是均摊 $O(n)$ 的,看来分析复杂度也是一个能力啊 ~ code: #i ...

  5. 使用s3-sftp-proxy 暴露minio s3 数据为sftp 访问

    尽管s3 很不错,但是ftp 也有自己存在的价值,以下是一个简单的通过s3-sftp-proxy 暴露minio s3 数据为ftp 的访问方式 环境准备 docker-compose 文件 vers ...

  6. 如何设置网站的robots.txt

    做过网站优化的朋友都知道,搜索引擎蜘蛛爬行抓取网站时首先会去访问根目录下的robots.txt文件,如果robots文件存在,则会根据robots文件内设置的规则进行爬行抓取,如果文件不存在则会顺着首 ...

  7. 数据结构HashMap哈希表原理分析

    先看看定义:“散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度. 哈希 ...

  8. centos7 安装 bugfree3

    . 安装apache yum install httpd . 安装mysql wget -i -c http://dev.mysql.com/get/mysql57-community-release ...

  9. shell 单引号以及双引号

    #!/bin/bash a= echo '$a' echo "$a" your_name='runoob' str="Hello, I know you are \&qu ...

  10. Python运行语法错误:IndentationError: unindent does not match any outer indentation level

    python脚本没有对齐.新的Python语法,是不支持的代码对齐中,混用TAB和空格的.