分享一个自己用的银河麒麟下达梦数据库自动备份任务脚本。

达梦数据库备份脚本。按日期备份,备份后压缩为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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐