zoukankan      html  css  js  c++  java
  • MySQL mysqldump与innobackupex 组合备份

    此脚本,在01点进行一次逻辑全备份,03点进行一次物理全备份,中午12点进行一次增量物理备份

    #! /bin/bash
    #05  01,03,12 * * *  mysql /data/mysqldata/scripts/mysql_backup_dump_xtra.sh  >> /data/mysql/backup/log/mysql_back2.log 2>&1
    ############################################################
    # Define the variables the script used for executing.
    #mysql backup by hongquan on 2017
    #day=`date +%u`
    curHour=`date +%H`
    curDate=`date +'%Y%m%d'`
    backupDir=/data/mysqldata/backup
    defaultFile=/data/mysqldata/backup
    mysqlHost=127.0.0.1
    port=3306
    logicuser=**
    logicpass=**
    logicalBackupDir=/data/mysqldata/backup/logical
    fullBackupDir=/data/mysqldata/backup/full
    incBackupDir=/data/mysqldata/backup/inc
    logfile=/data/mysqldata/backup/mysql_backup.log
    sockfile=/data/mysqldata/3306/mysql.sock
    
    full_inbkpex_day=/data/mysqldata/backup/full/full_ipx$curDate$curHour
    inc_inbkpex=/data/mysqldata/backup/inc/inc_ipx$curDate$curHour
    
    MYSQL_PATH=/usr/local/mysql/bin
    MYSQL_CMD="${MYSQL_PATH}/mysql -u${logicuser} -p${logicpass} -h${mysqlHost} -S /data/mysqldata/${HOST_PORT}/mysql.sock"
    MYSQL_DUMP="${MYSQL_PATH}/mysqldump -u${logicuser} -p${logicpass} -h${mysqlHost} -P${HOST_PORT}  -R -S  
                ${sockfile} --single-transaction  --master-data=2 --default-character-set=utf8 --set-gtid-purged=OFF -q "
    
    case ${curHour}  in
             01)
                    type=logical
                    ;;
             03)
                    type=full
                    ;;
             12)
                    type=inc
                    ;;
            "*")
                    exit 
    esac
    
    echo "NOW is : Backup type=$type" >> ${logfile}
    
        if [ ! -d "${backupDir}" ]; then
        mkdir -p "${backupDir}"
        echo -e "===${backupDir} does not exsits,created them!" >> ${logfile}
        fi
    
         if [ ! -d "${logicalBackupDir}" ]; then
        mkdir -p "${logicalBackupDir}"
        echo -e "===${logicalBackupDir} does not exsits,created them!" >> ${logfile}
        fi
    
         if [ ! -d "${fullBackupDir}" ]; then
        mkdir -p "${fullBackupDir}"
        echo -e "===${fullBackupDir} does not exsits,created them!" >> ${logfile}
        fi
    
        if [ ! -d "${incBackupDir}" ]; then
        mkdir -p "${incBackupDir}"
        echo -e "===${incBackupDir} does not exsits,created them!" >> ${logfile}
        fi
    
    extra_lsndir=${backupDir}
    ori_conf_file=/data/mysqldata/${port}/my.cnf
    new_conf_file=${backupDir}/my_${port}_`date +%Y%m%d%H%M%S`.cnf
    
    echo "backup start" `date` >> ${logfile}
    echo -e "===first cp my.cnf file to backup directory ===" >> ${logfile}
    /bin/cp ${ori_conf_file} ${new_conf_file}
    
    echo >> ${logfile}
    
    if [[ "${type}" = "logical" ]]; then
        # -------------------------- logical backup with mysqldump --------------------------
        echo -e "mysqldumpbk per db list= ${list} " >> ${logfile}
       for dbs in `${MYSQL_CMD} 2>/dev/null  -e "show databases" | sed '1d' | egrep -v "information_schema|performance_schema|sys"`
        do
          echo -e "echo $dbs is appoint ; " >> ${logfile}
          ${MYSQL_DUMP} ${dbs} 2>/dev/null | gzip >  ${logicalBackupDir}/${dbs}_${curDate}.sql.gz
          echo -e " **** database :${dbs} backup stop_time :`date +%F' '%T' '%w` **** 
    ">> ${logfile}
          echo -e "**** backup file size:`du -sh ${logicalBackupDir}/`**** 
    " >> ${logfile}
        done
    elif [[ "${type}" = "full" ]]; then
        # -------------------------- full backup with xtrabackup --------------------------
        cd ${backupDir}
        #rm -rf /data/mysql/backup/full/
        if [ ! -d "${full_inbkpex_day}" ]; then
        mkdir -p "${full_inbkpex_day}"
        echo -e "===${full_inbkpex_day} does not exsits,created them!" >> ${logfile}
        fi
        #tar -zcvf  $tar_full.tar.gz  ${full_inbkpex_day}
        cd ${full_inbkpex_day}
    
        /usr/bin/innobackupex  --defaults-file=${ori_conf_file} --user=${logicuser} --password=${logicpass} 
        --host=${mysqlHost}  --port=${port} --no-timestamp --extra-lsndir=${extra_lsndir}  --stream=tar  ${backupDir} 
        2>/tmp/full_ipx$curDate$curHour.log | gzip 1>${full_inbkpex_day}/`date +%Y%m%d%H%M%S`.tar.gz 
    
     echo -e "mysql full backup full_ipx$curDate$curHour" >> ${logfile}
    
    elif [[ "${type}" = "inc" ]]; then
        # -------------------------- incremental backup with xtrabackup --------------------------
        if [ ! -d "${inc_inbkpex}" ]; then
        mkdir -p "${inc_inbkpex}"
        echo -e "===${inc_inbkpex} does not exsits,created them!" >> ${logfile}
        fi
        /usr/bin/innobackupex --defaults-file=${ori_conf_file} --user=${logicuser} --password=${logicpass} 
        --host=${mysqlHost}  --port=${port} --no-timestamp --extra-lsndir=${extra_lsndir} --incremental 
        --incremental-basedir=${backupDir} ${inc_inbkpex}  2>/tmp/inc_ipx$curDate$curHour.log
        echo -e "mysql inc backup inc_ipx$curDate$curHour" >> ${logfile}
    else
        echo -e "wrong backup type!" >> ${logfile}
        exit 1
    fi
    
    #echo -e "----find expired backup and delete those files ----">> ${logfile}
    #for tfile in $(/usr/bin/find ${backupDir}/ -mtime +7)
    #do
    #  if [ -d $tfile ] ; then
    #    rmdir $tfile
    #   elif [ -f $tfile ]; then
    #   #rm -f $tfile
    #    echo -e "---not backupDir found ----">>  ${logfile}
    #  fi
    #   echo -e "----delete file:$tfile ----">>  ${logfile}
    #done
    
    echo -e "
    === backup dened at `date +%F' '%T' '%w`===
    " >> ${logfile}
  • 相关阅读:
    淘宝放大镜
    碰撞的小球
    模拟微博发布
    CSS兼容IE Firefox问题与解决方法
    太阳八大行星运行轨迹
    Canvas标签基础
    offsetTop、clientTop、scrollTop、offsetTop
    js绘制圆形时钟
    js时钟
    js五星好评2
  • 原文地址:https://www.cnblogs.com/yhq1314/p/9947521.html
Copyright © 2011-2022 走看看