分享一个自己用的银河麒麟下达梦数据库自动备份任务脚本。
达梦数据库备份脚本。按日期备份,备份后压缩为tar.gz文件,自动清理导出的文件。
备份脚本保留最后30天记录,以节省硬盘空间,可根据具体情况修改。
达梦数据库备份脚本
DMDBBakSvr.sh 内容
#!/bin/sh
echo "=================================="
echo "= 达梦数据库定时备份 ="
echo "= ="
echo "= Apull 2024-04 ="
echo "=================================="
echo
PRG=`pwd`
DM_HOME="/opt/dmdbms/bin" #需要修改为具体达梦路径
BAKPATH="/home/kylin/数据库备份" #修改为具体保存备份路径
ERRORLOG="$BAKPATH/error.log"
cd $DM_HOME
if [ ! -d "$BAKPATH" ]; then
echo "备份文件夹不存在,正在建立文件夹..."
mkdir "$BAKPATH"
fi
echo "清理30天前的备份文件..."
find "$BAKPATH" -type f -mtime +30 -exec echo "{}" +
echo "清除历史备份完成!"
echo
USERNAME=user #用户名
PASSWORD=1234 #密码
CONDETION="$USERNAME/$PASSWORD@127.0.0.1:5236"
TIMESTYLE=$(date +"%Y-%m-%d_%H-%M-%S")
echo "设置数据库导出文件"
echo
FILEPATH="$USERNAME-$TIMESTYLE.dmp"
LOGPATH="$USERNAME-$TIMESTYLE.log"
ZIPPATH="$USERNAME-$TIMESTYLE.tar.gz"
echo "正在导出数据库备份..."
echo
output=$($DM_HOME/dexp USERID=$CONDETION DIRECTORY=$BAKPATH FILE=$FILEPATH LOG=$LOGPATH FULL=Y 2>&1)
if [ $? -ne 0 ]; then
error_output=$(echo "$output" | grep 'error')
echo "[$(date +"%Y-%m-%d %H:%M:%S")] 数据库备份导出失败!" | tee -a $ERRORLOG
echo "错误信息:$error_output" | tee -a $ERRORLOG
else
echo "数据库备份导出成功!"
echo
cd $BAKPATH
echo "正在压缩备份文件..."
output=$(tar -czf $ZIPPATH $FILEPATH $LOGPATH 2>&1)
if [ $? -ne 0 ]; then
error_output=$(echo "$output")
echo "[$(date +"%Y-%m-%d %H:%M:%S")] 压缩备份文件错误!" | tee -a $ERRORLOG
echo "错误信息:$error_output" | tee -a $ERRORLOG
else
echo "备份文件压缩成功"
rm -rf $FILEPATH $LOGPATH
echo
echo "[$(date +"%Y-%m-%d %H:%M:%S")] 数据库备份完成" | tee -a $ERRORLOG
echo "备份文件名:$ZIPPATH" | tee -a $ERRORLOG
echo
fi
fi
cd $PRG
创建定时任务,定时运行达梦备份脚本
DMDBBakSvr-Setup.sh 内容
#!/bin/sh
echo "=================================="
echo "= 安装达梦数据库定时备份 ="
echo "= ="
echo "= Apull 2024-04 ="
echo "=================================="
echo
BINPATH=~/.local/bin
if [ -f DMDBBakSvr.sh ]; then
if [ ! -d $BINPATH ]; then
mkdir -p $BINPATH
fi
cp -f DMDBBakSvr.sh $BINPATH
if [ ! -f $BINPATH/DMDBBakSvr.sh ] || [ ! -x $BINPATH/DMDBBakSvr.sh ]; then
chmod +x $BINPATH/DMDBBakSvr.sh
fi
crontab -l | { cat; echo "30 22 * * * $BINPATH/DMDBBakSvr.sh"; } | crontab -
#每晚22:30执行备份数据库操作,根据需要修改
if [ $? -eq 0 ]; then
echo "数据库备份计划创建成功"
else
echo "数据库备份计划创建失败!"
fi
fi
#运行结束保留终端窗口
exec /bin/bash
用命令chmod +x 给上面2个sh文件执行权限。
双击或在终端运行DMDBBakSvr-Setup.sh建立运行计划。
这个方法比较简单,对单机版来说完全够用,不想折腾达梦的存档模式。
PS:
crontab 说明
查看已经创建的计划
crontab -l
清除所有计划
crontab -r
编辑定时任务
crontab -e