centos定时备份数据库(Oracle)
·
需求是这样的,需要每天全量备份生产环境数据库,因为服务器空间较小,每天自动删除15天之前备份的数据,但为方便溯源,每月会保留一份存档.
首先安装Oracle客户端,这个没什么好说的,直接去Oracle下载客户端,
需要3个rpm包,分别是basic sqlplus tools(导入导出数据功能都是这个包里面的)
然后使用rpm -ivh直接安装就好了.
使用下面配置即可实现
centos定时任务配置
记录每次执行的日志,通过crontab -e命令进入
config文件配置
username=账号
password=密码
ipStr=数据库地址
portNumber=端口
serviceName=服务名称
directoryName=备份文件目录
backupsFileDay=备份文件保存时间
expdpStr=/usr/lib/oracle/19.5/client64/bin/exp
saveDb=备份的数据库
dumpshell文件内容
#!/bin/sh
. /etc/profile
. ~/.bash_profile
#db_backups_conf.txt文件路径
db_backups_conf="/opt/dumpshell/config.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)
savemonth=$(date +%Y%m)
#获取超出备份天数的年月日
delday=$(date -d ${map["backupsFileDay"]}' days ago' +%Y%m%d)
#遍历要备份的用户名,删除两天前备份的数据文件
echo "即将删除"${map["backupsFileDay"]}"天之前备份的数据"
find /data/dumpdata/ -maxdepth 1 -mtime +${map["backupsFileDay"]} -name "*.*"
find /data/dumpdata/ -maxdepth 1 -mtime +${map["backupsFileDay"]} -name "*.dmp" -exec rm -Rf {} \;
#遍历要备份的数据库,备份数据文件
for saveDb in ${saveDbArr[@]}; do
echo $(date +'%Y-%m-%d %H:%M:%S')" 备份数据库:"${saveDb}
${map["expdpStr"]} ${map["username"]}/${map["password"]}@${map["ipStr"]}:${map["portNumber"]}/${map["serviceName"]} file=${map["directoryName"]}/expdp_${saveDb}_database_${saveday}.dmp owner=${map["saveDb"]}
done
#归档数据 每月保留一条
cp -rf ${map["directoryName"]}/expdp_${saveDb}_database_${saveday}.dmp ${map["directoryName"]}/backupFiles/expdp_${saveDb}_database_${savemonth}.dmp
echo $(date +'%Y-%m-%d %H:%M:%S')" 数据备份完毕,脚本执行完毕"
else
echo "文件不存在"
fi
附件
一目了然
然后备份文件夹创建

backupFiles是每月存档
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)