首页 技术 正文
技术 2022年11月21日
0 收藏 953 点赞 3,181 浏览 2382 个字

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

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

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

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

1、配置信息:

username=SYSDBA
password=SSSTTTSSS
ipStr=localhost
portNumber=
backupsFileStr=/wocloud/db/backups
logsFileStr=/wocloud/db/backups/dmDexpLogs
backupsFileDay=
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=;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 编写定时任务表达式

例如:

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

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

(2)重新启动crond

service crond restart;

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,075
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,551
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,399
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,811
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,893