达梦数据库异地定时备份
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
Logo

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

更多推荐