zoukankan      html  css  js  c++  java
  • 生产环境mysql备份脚本

    #!/bin/bash
    #全备方式,一般在从机上执行,适用于小中型mysql数据库
    #删除15天以前备份
    source /etc/profile        #加载系统环境变量
    source ~/.bash_profile    #加载用户环境变量
    set -o nounset             #引用未初始化变量时退出
    #set -o errexit            #执行shell命令遇到错误时退出
    
    user="root"
    password="******"
    host="localhost"
    port="3306"
    #需备份的数据库,数组
    db=("hbase")
    #备份时加锁方式,
    #MyISAM为锁表--lock-all-tables,
    #InnoDB为锁行--single-transaction
    lock="--single-transaction"
    mysql_path="/usr/local/mysql"
    backup_path="/alidata/backup"
    date=$(date +%Y-%m-%d_%H-%M-%S)
    day=15
    backup_log="${backup_path}/backup.log"
    
    #建立备份目录
    if [ ! -e $backup_path ];then
        mkdir -p $backup_path
    fi
    
    #删除以前备份
    find $backup_path -type f -mtime +$day -exec rm -rf {} ; > /dev/null 2>&1
    
    echo "开始备份数据库:${db[*]}"
    
    #备份并压缩
    backup_sql(){
        dbname=$1
        backup_name="${dbname}_${date}.sql"
        #-R备份存储过程,函数,触发器
        mysqldump -h $host -P $port -u $user -p$password $lock --default-character-set=utf8 --opt --flush-logs --set-gtid-purged=OFF --events  --triggers  --routines   --master-data=2 --databases  $dbname > $backup_path/$backup_name    
        if [[ $? == 0 ]];then
            cd $backup_path
            tar zcpvf $backup_name.tar.gz $backup_name
            size=$(du $backup_name.tar.gz -sh | awk '{print $1}')
            rm -rf $backup_name
            echo "$date 备份 $dbname($size) 成功 "
        else
            cd $backup_path
            rm -rf $backup_name
            echo "$date 备份 $dbname 失败 "
        fi
    }
    
    #循环备份
    length=${#db[@]}
    for (( i = 0; i < $length; i++ )); do
            backup_sql ${db[$i]} >> $backup_log 2>&1
    done
    喜欢请赞赏一下啦^_^

    微信赞赏

    支付宝赞赏

  • 相关阅读:
    聊聊算法——回溯算法
    Redis高级用法
    聊聊算法——BFS和DFS
    这就是Java代码生成器的制作流程
    Spring Boot 2 实战:常用读取配置的方式
    Spring Security 实战干货:图解Spring Security中的Servlet过滤器体系
    想做时间管理大师?你可以试试Mybatis Plus代码生成器
    Maven中央仓库正式成为Oracle官方JDBC驱动程序组件分发中心
    作为一个Java开发你用过Jib吗
    使用反应式关系数据库连接规范R2DBC操作MySQL数据库
  • 原文地址:https://www.cnblogs.com/lkj371/p/15294504.html
Copyright © 2011-2022 走看看