转载

麒麟系统(基于centos)下的达梦8数据库定时全量备份


编写备份脚本

在随便什么地方创建sh文件,最好在统一 一个地方

我这里以( /dmdata/dmbak/dm_back.sh )为例

#!/bin/bash
 
# 配置参数
export DM_HOME="/home/dmdba/dmdbms"    # 达梦安装目录,有bin目录的那个
BAK_DIR="/dmdata/dmbak/dmback"         # 备份存储目录
USER="SYSDBA"                          # 数据库用户名
PASSWORD="Dm123456"                    # 密码(需修改)
PORT="5237"                            # 数据库端口
SCHEMA="DM8"                           # 需备份的模式名
RETENTION_DAYS=30                      # 备份保留天数
 
# 创建备份目录
mkdir -p ${BAK_DIR} || exit 1
 
# 设置环境变量
export PATH=${DM_HOME}/bin:${PATH}
export LD_LIBRARY_PATH=${DM_HOME}/bin:${LD_LIBRARY_PATH}
 
# 生成带时间戳的文件名
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
DMP_FILE="${SCHEMA}_${TIMESTAMP}.dmp"
LOG_FILE="${SCHEMA}_${TIMESTAMP}.log"
TAR_FILE="${BAK_DIR}/${SCHEMA}_${TIMESTAMP}.tar.gz"
 
# 执行逻辑备份(按模式导出)
${DM_HOME}/bin/dexp USERID=${USER}/${PASSWORD}@localhost:${PORT} \
DIRECTORY=${BAK_DIR} \
FILE=${DMP_FILE} \
LOG=${LOG_FILE} \
SCHEMAS=${SCHEMA} \
COMPRESS=Y
 
# 压缩备份文件
tar -czf ${TAR_FILE} -C ${BAK_DIR} ${DMP_FILE} ${LOG_FILE} && \
rm -f ${BAK_DIR}/${DMP_FILE} ${BAK_DIR}/${LOG_FILE}
 
# 清理旧备份(保留30天)
find ${BAK_DIR} -name "${SCHEMA}_*.tar.gz" -mtime +${RETENTION_DAYS} -exec rm -f {} \;
 
echo "[$(date)] 备份完成: ${TAR_FILE}" >> ${BAK_DIR}/backup.log

# 休眠60秒
sleep 60

# 重启数据库,释放内存
ps -ef|grep DMTEST >> ${BAK_DIR}/backup.log
systemctl restart DmServiceDMTEST.service
ps -ef|grep DMTEST >> ${BAK_DIR}/backup.log

echo "[$(date)] 数据库重启完成" >> ${BAK_DIR}/backup.log

授权执行权限

chmod u+x /dmdata/dmbak/dm_back.sh

手动执行

sh /dmdata/dmbak/dm_back.sh

配置定时任务

检查 crond 服务状态(确保定时任务服务正常运行)

# 查看crond服务状态
sudo systemctl status crond

# 若未启动,执行以下命令启动
sudo systemctl start crond
# 设置开机自启
sudo systemctl enable crond

编辑定时任务,设置每天0点5分执行

crontab -e

# 添加以下内容
5 0 * * * /dmdata/dmbak/dm_back.sh

#若使用 vim 编辑,按 Esc 后输入 :wq 保存退出

验证定时任务

crontab -l
#若能看到刚才添加的规则,说明任务已生效

备份结果检查

等待第天查看备份结果,查看backup.log文件

声明

转载自 CSDN-二当家的素材网

DB
达梦数据库

评论