达梦数据库的数据定时备份和恢复脚本

背景

项目的国产化要求,使用达梦数据库进行存储,考虑到数据安全,所以需要进行定时的全量备份,在意外情况下,进行数据的全量恢复。

注意事项

该备份脚本是全量备份,建议进行定期清理,防止备份数据过多,占用磁盘存储。
恢复脚本是全量恢复,但是不会覆盖已存在的数据。

使用说明

1、修改备份脚本内容,指定达梦数据库的bin文件夹位置
2、使用crontab命令创建定时任务
3、检查备份情况

清理及备份脚本

#!/bin/bash

# 备份操作
# 获取当前日期作为备份目录名
DATE=$(date +%Y%m%d%H%M%S)
FILENAME="data%U.dmp"
LOG_NAME="data%U.log"
DM_HOME="/data/dameng/dmdbms"
BACKUP_HOME="/data/dameng/backup"
DBURL="SYSDBA/SYSDBA@127.0.0.1:5236"
FILE_PATH="$BACKUP_HOME/$DATE"

# 创建备份目录
mkdir -p "$FILE_PATH"

cd "$DM_HOME/bin/"
echo "./dexp "$DBURL" file="$FILE_PATH/$FILENAME" log="$FILE_PATH/$LOG_NAME" FULL=Y FILESIZE=10240m COMPRESS=Y PARALLEL=4 TABLE_PARALLEL=2 TABLE_POOL=3"
./dexp "$DBURL" file="$FILE_PATH/$FILENAME" log="$FILE_PATH/$LOG_NAME" FULL=Y FILESIZE=10240m COMPRESS=Y PARALLEL=4 TABLE_PARALLEL=2 TABLE_POOL=3


# 删除早期文件,防止文件占用资源
# 定义要检查的目录和最大允许的子目录数量
MAX_BACKUP_NUM=5

# 获取子目录数量,排除父目录
subdir_count=$(find "$BACKUP_HOME" -mindepth 1 -maxdepth 1 -type d | wc -l)

# 如果子目录数量大于5
if [ $subdir_count -gt $MAX_BACKUP_NUM ]; then
    # 获取所有子目录并按创建时间排序(升序,最早的在前)
    sorted_dirs=$(find "$BACKUP_HOME" -mindepth 1 -maxdepth 1 -type d -exec stat -c '%w %n' {} + | sort -n)
	echo $sorted_dirs
    # 获取并删除最早的子目录
    oldest_dir=$(echo "$sorted_dirs" | head -n 1 | awk '{print $2}')
    rm -rf "$oldest_dir"
    echo "Deleted the oldest directory: $oldest_dir"
else
    echo "The number of subdirectories is less than or equal to 5."
fi

# 可以选择在备份完成后发送邮件通知等操作
# ...

创建定时任务

crontab -e
# 添加下列内容
# 添加以下行,假设每三天的凌晨1点执行备份
0 1 */3 * * /bin/bash /root/dm/backup_dm.sh

恢复脚本

#!/bin/bash
# 获取当前日期作为备份目录名
DM_HOME="/data/dameng/dmdbms"
RECOVER_HOME="/data/dameng/backup/20240307010001"
DBURL="SYSDBA/SYSDBA@127.0.0.1:5236"

cd "$DM_HOME/bin/"
./dimp USERID=$DBURL FILE=$RECOVER_HOME/data01.dmp LOG=db_str.log FULL=Y DIRECTORY=$RECOVER_HOME

联系作者

如果有任何疑问,请邮件联系作者。
zhuxuanyong@163.com

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

siihmc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值