zoukankan      html  css  js  c++  java
  • MySQL备份脚本

    一、MySQL备份脚本

    #!/bin/bash  
    # script_name: db_backup.sh  
    # author: Michael Ho
    # contact: herui1991@sina.cn
    # 172.50.1.119 为专门的备份服务器,需要做一下服务器之间免密码登录
    
    # 备份的数据库名
    DOCKER_NAME=zzmysql
    DATABASES=(
        "managesystem"                    
    )
    USER="root"
    PASSWORD="ZZ2018info"
    BACKUP_DIR=/data/backup
    LOGFILE=/data/backup/data_backup.log 
    DATE=`date +%Y%m%d_%H%M`
    
    cd $BACKUP_DIR
    # 开始备份之前,将备份信息头写入日记文件   
    echo "--------------------" >> $LOGFILE   
    echo "BACKUP DATE:" $(date +"%y-%m-%d %H:%M:%S") >> $LOGFILE   
    echo "-------------------" >> $LOGFILE
    
    for DATABASE in ${DATABASES};do
        # 物理机版
        # /usr/local/mysql/bin/mysqldump -u$USER -p$PASSWORD --events -R --opt $DATABASE | gzip > ${BACKUP_DIR}/${DATABASE}_${DATE}.sql.gz
        
        # docker版
        /usr/local/bin/docker exec $DOCKER_NAME mysqldump -u$USER -p$PASSWORD --events -R --opt $DATABASE | gzip > ${BACKUP_DIR}/${DATABASE}_${DATE}.sql.gz
        if [ $? == 0 ];then
            echo "$DATE--$DATABASE is backup succeed" >> $LOGFILE
        else
            echo "Database Backup Fail!" >> $LOGFILE
            curl -H "Content-type: application/json" -X POST -d '{"msgtype": "text","text": {"content": "'$DATABASE'备份失败"}}' https://oapi.dingtalk.com/robot/send?access_token=xxx        
        fi
    done
    
    # 判断数据库备份是否全部成功,全部成功就同步到异地备份服务器
    if [ $? == 0 ];then
        /usr/bin/rsync -zrtopg --delete /data/backup/* root@172.50.1.119:/home/data/mysql/backup/ > /dev/null 2>&1
    else
        echo "Database Backup Fail!" >> $LOGFILE   
        # 备份失败后向钉钉发出告警
        curl -H "Content-type: application/json" -X POST -d '{"msgtype": "text","text": {"content": "同步到172.50.1.119失败"}}' https://oapi.dingtalk.com/robot/send?access_token=xxx
    fi
    
    # 删除30天以上的备份文件  
    find $BACKUP_DIR  -type f -mtime +30 -name "*.gz" -exec rm -f {} ;
    exit 0

    二、注意事项

    1.docker 、mysqldump一定要是绝对路径,否则加入到crontab是执行失败的,执行出来的文件是空的

    2.access_token=xxxxxxxxxxxxxxxxxxxx   这个值是自己钉钉申请的token值

     
  • 相关阅读:
    composer 版本号前置~与^符号的区别
    阿里巴巴离线数据同步工具/平台datax安装、使用笔记
    LAMP集成环境搭建
    MySQL在Windows中设置环境变量
    jQuery 事件
    jQuery 属性,元素
    jQuery 选择器
    JavaScript 动画
    JavaScript BOM-三剑客
    JavaScript BOM-对象
  • 原文地址:https://www.cnblogs.com/herui1991/p/12376673.html
Copyright © 2011-2022 走看看