zoukankan      html  css  js  c++  java
  • Shell脚本使用汇总整理——达梦数据库备份脚本

    Shell脚本使用汇总整理——达梦数据库备份脚本

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

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

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

    1、配置信息:

    username=SYSDBA
    password=SSSTTTSSS
    ipStr=localhost
    portNumber=5327
    backupsFileStr=/wocloud/db/backups
    logsFileStr=/wocloud/db/backups/dmDexpLogs
    backupsFileDay=3
    dexpStr=/opt/dmdbms/bin/dexp
    saveDb=HEBEI

    参数说明:

    username:用户名
    password:密码
    ipStr:ip地址,最好是localhost
    portNumber:端口号
    backupsFileStr:存放备份文件绝对路径
    logsFileStr:导出过程中日志存放绝对路径
    backupsFileDay:保留备份记录多少天
    dexpStr:导出工具dexp绝对路径
    saveDb:保存数据库名称,多个数据库用逗号分隔

    2、脚本文件:

    #!/bin/sh
    
    #db_backups_conf.txt文件路径
    db_backups_conf="/wocloud/shell/dm_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    
    
        #获取备份数据库
        saveDbStr=${map["saveDb"]}
        
        #获取默认的字符串分隔符
        old_ifs="$IFS"
        
        #设置字符串分隔符为逗号
        IFS=","
    
        #将用户名的value值的字符串进行分隔,获取一个数组
        saveDbArr=($saveDbStr)
    
        #将字符串的分隔符重新设置为默认的分隔符
        IFS="$old_ifs"
    
        #获取当前年月日
        saveday=$(date +%Y%m%d)
    
        #获取超出备份天数的年月日
        delday=$(date -d ${map["backupsFileDay"]}' days ago' +%Y%m%d)
    
    
        #遍历要备份的用户名,删除两天前备份的数据文件
        for delDb in ${saveDbArr[@]};
        do
            echo $(date +'%Y-%m-%d %H:%M:%S')" 删除文件:"${map["backupsFileStr"]}/${delDb}_database_${delday}.dmp
    
            rm -f ${map["backupsFileStr"]}/${delDb}_database_${delday}.dmp
        done
    
        #遍历要备份的数据库,备份数据文件
        for saveDb in ${saveDbArr[@]};
        do
            echo $(date +'%Y-%m-%d %H:%M:%S')" 备份数据库:"${saveDb}
               ${map["dexpStr"]} USERID=${map["username"]}/${map["password"]}@${map["ipStr"]}:${map["portNumber"]} FILE=${saveDb}_database_${saveday}.dmp LOG=${map["logsFileStr"]}/${saveDb}_database_${saveday}.txt SCHEMAS=${saveDb} DIRECTORY=${map["backupsFileStr"]}
        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;

     

     

  • 相关阅读:
    IOCP六:UDP 客户端退出
    IOCP六:UDP 客户端退出
    IOCP五:UDP线程退出
    IOCP五:UDP线程退出
    IOCP四:己方closesocket
    IOCP四:己方closesocket
    深入剖析多态,什么是多态?多态有什么用?
    SSM框架jsp无法从webapp下跳转到WEB-INF下的jsp;偶尔进去了也无法加载jsp的静态资源
    一句话理解什么是“聚合”,什么是“组合”
    Jsp+Servlet+JDBC实现ATM机系统
  • 原文地址:https://www.cnblogs.com/lsy-blogs/p/10174171.html
Copyright © 2011-2022 走看看