• xtrabackup备份脚本


    #!/bin/sh
     
    INNOBACKUPEX=innobackupex
    INNOBACKUPEXFULL=/usr/bin/$INNOBACKUPEX
    TODAY=`date +%Y%m%d%H%M`
    YESTERDAY=`date -d"yesterday" +%Y%m%d%H%M`
    USEROPTIONS="--user=root --password=123456"
    TMPFILE="/home/mysqlbackup/innobackup_$TODAY.$$.tmp"
    MYCNF=/etc/my.cnf
    MYSQL=/usr/share/dev/mysql/bin/mysql
    MYSQLADMIN=/usr/share/dev/mysql/bin/mysqladmin
    BACKUPDIR=/home/mysqlbackup # 备份的主目录
    FULLBACKUPDIR=$BACKUPDIR/full # 全库备份的目录
    INCRBACKUPDIR=$BACKUPDIR/incr # 增量备份的目录
    KEEP=1 # 保留几个全库备份
     
    # Grab start time
    #############################################################################
    # Display error message and exit
    #############################################################################
    error()
    {
        echo "$1" 1>&2
        exit 1
    }
     
    # Check options before proceeding
    if [ ! -x $INNOBACKUPEXFULL ]; then
      error "$INNOBACKUPEXFULL does not exist."
    fi
     
    if [ ! -d $BACKUPDIR ]; then
      error "Backup destination folder: $BACKUPDIR does not exist."
    fi
     
    if [ -z "`$MYSQLADMIN $USEROPTIONS status | grep 'Uptime'`" ] ; then
     error "HALTED: MySQL does not appear to be running."
    fi
     
    if ! `echo 'exit' | $MYSQL -s $USEROPTIONS` ; then
     error "HALTED: Supplied mysql username or password appears to be incorrect (not copied here for security, see script)."
    fi
     
    # Some info output
    echo "----------------------------"
    echo
    echo "$0: MySQL backup script"
    echo "started: `date`"
    echo
     
    # Create full and incr backup directories if they not exist.
    for i in $FULLBACKUPDIR $INCRBACKUPDIR
    do
            if [ ! -d $i ]; then
                    mkdir -pv $i
            fi
    done
     
    # 压缩上传前一天的备份
    echo "压缩前一天的备份,scp到远程主机"
    cd $BACKUPDIR
    tar -zcvf $YESTERDAY.tar.gz ./full/ ./incr/
    #scp -P 8022 $YESTERDAY.tar.gz root@192.168.10.46:/data/backup/mysql/
    if [ $? = 0 ]; then
      rm -rf $BACKUPDIR/full $BACKUPDIR/incr
      echo "Running new full backup."
      innobackupex --defaults-file=$MYCNF $USEROPTIONS $FULLBACKUPDIR > $TMPFILE 2>&1
    else
      echo "Error with scp."
    fi
     
    if [ -z "`tail -1 $TMPFILE | grep 'completed OK!'`" ] ; then
     echo "$INNOBACKUPEX failed:"; echo
     echo "---------- ERROR OUTPUT from $INNOBACKUPEX ----------"
    # cat $TMPFILE
    # rm -f $TMPFILE
     exit 1
    fi
    
    # 这里获取这次备份的目录 
    THISBACKUP=`awk -- "/Backup created in directory/ { split( \$0, p, "'" ) ; print p[2] }" $TMPFILE`
    echo "THISBACKUP=$THISBACKUP"
    #rm -f $TMPFILE
    echo "Databases backed up successfully to: $THISBACKUP"
    
    # Cleanup
    echo "delete tar files of 3 days ago"
    find $BACKUPDIR/ -mtime +3 -name "*.tar.gz"  -exec rm -rf {} ;
     
    echo
    echo "completed: `date`"
    exit 0
    
  • 相关阅读:
    gocurd案例
    Go module的介绍及使用
    shell脚本第二天
    shell脚本第一天
    php实现图片压缩
    Golang协程详解和应用
    layui的表格渲染方式
    layui-treetable使用
    模拟tp5.1加载自定义类
    多卡训练的state_dict
  • 原文地址:https://www.cnblogs.com/kylingx/p/11887234.html
Copyright © 2020-2023  润新知