zoukankan      html  css  js  c++  java
  • Shell脚本使用汇总整理——mysql数据库5.7.8以后备份脚本

    Shell脚本使用汇总整理——mysql数据库5.7.8以后备份脚本

    Shell脚本使用的基本知识点汇总详情见连接:

    https://www.cnblogs.com/lsy-blogs/p/9223477.html

    脚本分为三部分配置信息、脚本文件、定时任务;

    1、配置信息:

    username=root
    password=123456
    backupsFileStr=/dataBack/mysql
    backupsFileDay=7
    threadCounts=6
    mysqldumpStr=/usr/local/mysql/bin/mysqlpump
    copydb=hebei,countryJgPrep

    参数说明:

    username:用户名
    password:密码
    backupsFileStr:保留备份数据文件绝对路径
    backupsFileDay:保留备份数据文件天数
    threadCounts:备份开启多少个线程,偶数个线程
    mysqldumpStr:导出工具mysqlpump绝对路径,mysqlpump是mysql数据库5.7.8以后版本一种高效的导出方式
    copydb:备份的数据库名称,多个数据库用逗号分隔

    2、脚本文件:

    #!/bin/sh

    #db_backups_conf.txt文件路径
    db_backups_conf="/wocloud/shell/db_backups_conf.txt"

    #判断文件是否存在
    if [ -f "${db_backups_conf}" ];then

    echo $(date +'%Y-%m-%d %H:%M:%S')" 数据库配置信息文件存在,开始进行数据备份"

    #获取等号前内容,作为map中的Key值
    dbArrOne=($(awk -F'[=]' '{print $1}' ${db_backups_conf} ))

    #获取等号后内容,作为map中的value值
    dbArrTwo=($(awk -F'[=]' '{print $2}' ${db_backups_conf}))

    #创建一个空map
    declare -A map=()

    #通过循环,将db_backups_conf配置文件中的信息存储在map中
    for((i=0;i<${#dbArrOne[@]};i++))
    do
    map[${dbArrOne[i]}]=${dbArrTwo[i]}
    done

    #获取备份数据库的字符串
    copyDb=${map["copydb"]}

    #获取默认的字符串分隔符
    old_ifs="$IFS"

    #设置字符串分隔符为逗号
    IFS=","

    #将备份数据库value值的字符串进行分隔,获取一个数组
    dbArr=($copyDb)

    #将字符串的分隔符重新设置为默认的分隔符
    IFS="$old_ifs"

    #获取当前年月日
    saveday=$(date +%Y%m%d)

    #获取超出备份天数的年月日
    delday=$(date -d ${map["backupsFileDay"]}' days ago' +%Y%m%d)


    #遍历要备份的数据库,删除两天前备份的数据文件
    for delDb in ${dbArr[@]};
    do
    echo $(date +'%Y-%m-%d %H:%M:%S')" 删除文件:"${map["backupsFileStr"]}/${delDb}_database_${delday}.sql

    rm -f ${map["backupsFileStr"]}/${delDb}_database_${delday}.sql
    done

    #遍历要备份的数据库,备份数据文件
    for saveDb in ${dbArr[@]};
    do
    echo $(date +'%Y-%m-%d %H:%M:%S')" 备份数据库:"${saveDb}
    ${map["mysqldumpStr"]} -u${map["username"]} -p${map["password"]} --default-parallelism=${map["threadCounts"]} -B ${saveDb} > ${map["backupsFileStr"]}/${saveDb}_database_${saveday}.sql
    done

    echo $(date +'%Y-%m-%d %H:%M:%S')" 数据备份完毕,脚本执行完毕"

    else
    echo "文件不存在"
    fi

    注意:注意代码开头中读取配置文件的路径,这个位置可能不一样,需要进行适当修改。

    3、定时任务:

    Linux中的sh脚本定时任务,可以通过crontab进行管理,如果linux中没有安装crontab,需要进行安装:

    安装命令:

    yum -y install vixie-cron
    yum -y install crontabs

    服务管理

    service crond start     //启动服务
    service crond stop      //关闭服务
    service crond restart   //重启服务
    service crond reload    //重新载入配置
    service crond status    //查看crontab服务状态

    加入开机自启

    chkconfig crond on

    (1)设定定时任务:

    crontab -e 编写定时任务表达式

    例如:

    1 */3 * * * /wocloud/shell/fileBackupsScript.sh &>/wocloud/shell/fileBackupsLogs/fileBackupsEcho_`date +\%Y-\%m-\%d-\%H-\%M-\%S`.txt 2>&1

    定时表达式+脚本绝对路径+脚本打印信息日志输出绝对路径(一定要有日志输出记录,方便以后进行查看)

    (2)重新启动crond

    service crond restart;

  • 相关阅读:
    链表
    链式学习法:提升技术深度
    数组
    写点什么
    7 天掌握算法面试必考知识点: 作业安排及如何提交
    创建Mac OS root账户
    正则表达式匹配及替换
    Xcode 10 之New Build System & Legacy Build System 旧版构建系统
    性能指标:TPS、QPS、RT、吞吐量
    Objective-C和Swift语言特性
  • 原文地址:https://www.cnblogs.com/lsy-blogs/p/10174252.html
Copyright © 2011-2022 走看看