达梦数据库异地定时备份
·
达梦数据库异地定时备份
1 环境准备
在数据库备份服务器部署新的达梦数据库服务(无需创建数据库实例)
参考文档:KylinV10x86架构安装达梦数据库
2 数据库备份
2.1上传备份脚本并修改
上传【达梦数据库备份还原】文件夹下的【dm_backup】文件夹至服务器【/usr/local/telewave】
并修改【/usr/local/telewave/dm_backup】路径下【back_dmdb.sh】备份文件中对应的参数

#!/bin/bash
# 数据库环境变量
export DM_HOME="/usr/local/dm"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DM_HOME/bin"
export PATH="$DM_HOME/bin:$PATH"
export LANG=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
# 当前时间,精确到分钟
date=$(date +%Y%m%d%H%M)
# 逻辑备份路径
bakdir=/usr/local/dm_backup/back_data
# 设置保留数据的天数
days=10
# DM数据库IP、端口
dmid=192.168.0.72:5632
# 备份用户和密码
bakuser=SYSDBA
bakpass="SYSDBA"
# 备份模式列表
schemas=("auth""config")
# 遍历模式列表进行备份
for schema in "${schemas[@]}"; do
# 备份文件名称
bakdata="${schema}_${date}.dmp"
baklog="${schema}_${date}.log"
dmdatabak="${schema}_${date}.tar.gz"
# 导出dmp和log文件
dexp "$bakuser/$bakpass@$dmid" file="$bakdir/$bakdata" log="$bakdir/$baklog" directory="$bakdir" schemas="$schema"
dexp_exit_status=$?
# 检查dexp命令是否成功执行
if [ $dexp_exit_status -ne 0 ]; then
echo "dexp failed for schema $schema"
continue
fi
# 压缩dmp和log文件
tar -zcvf "$bakdir/$dmdatabak" "$bakdir/$bakdata" "$bakdir/$baklog"
tar_exit_status=$?
# 检查tar命令是否成功执行
if [ $tar_exit_status -ne 0 ]; then
echo "tar failed for schema $schema"
continue
fi
#删除log文件
find $bakdir -type f -name "*.log" -mtime +$days -exec rm -rf {} \;
#删除dmp文件
find $bakdir -type f -name "*.dmp" -exec rm {} \;
done
# 删除10天前备份的压缩文件
find "$bakdir" -type f -name "*.tar.gz" -mtime +$days -exec rm -f {} \;
2.2授权备份脚本可执行权限
chmod +x ./ksql_backup/*.sh
2.3设置定时备份任务
使用linux中的Crontab 工具定时执行数据库备份脚本。

使用 crontab -e 创建定时任务
crontab -l 查看设置的定时任务
每天凌晨两点执行数据库备份
00 02 * * * /usr/local/telewave/dm_dbbak/back_dmdb.sh
3 备份文件还原
3.1 上传备份还原脚本并修改
上传 【达梦数据库备份还原】 文件夹下的【dm_restore】文件夹至服务器【/usr/local/】
修改【/usr/local/dm_restore/】路径下【dmdb_restore.sh】还原脚本中参数

#!/bin/sh
#环境变量
#数据库安装路径
export DM_HOME="/usr/local/dm"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/dm/bin"
export PATH="$DM_HOME/bin:$PATH"
export LANG=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
#还原设置
#当前时间
date=$(date +%Y%m%d%H%M)
#要还原的目标DM数据库IP、端口
dmid=192.168.0.72:5632
#数据库用户名
bakuser=SYSDBA
#用户密码
bakpass="SYSDBA"
#还原模式
schema=auth
#还原文件路径
restoredir=/usr/local/dm_restore/restore_data
#还原文件名
restorefile=auth_202407101651.dmp
# 开始还原
dimp $bakuser/$bakpass@$dmid FILE="$restorefile" LOG=db_str_$schema_$date.log SCHEMAS=$schema DIRECTORY=$restoredir
3.2 上传备份文件
上传备份文件至/usr/local/dm_restore/restore_data目录
3.3 授权备份脚本可执行权限
chmod +x dmdb_restore.sh
3.4 执行备份脚本等待还原
./dmdb_restore.sh
更多推荐
所有评论(0)