​达梦数据库异地定时备份​

达梦数据库异地定时备份
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
### 配置达梦数据库实现自动定时备份 #### 创建备份脚本 为了确保达梦数据库能够定期执行备份操作,首先需要编写一个用于备份的Shell脚本。该脚本会调用达梦数据库自带工具`dmrman`来完成实际的数据备份工作。 ```bash #!/bin/bash # 设置环境变量 export DM_HOME=/opt/dmdbms # 安装路径, 请根据实际情况修改 export LD_LIBRARY_PATH=$DM_HOME/bin:$LD_LIBRARY_PATH export PATH=$DM_HOME/bin:$PATH BACKUP_DIR="/data/backup" DATE=$(date +%Y%m%d_%H%M%S) $DM_HOME/bin/dmrsync -U SYSDBA -P sysdba_password -B $BACKUP_DIR/db_backup_$DATE.bak if [ $? -eq 0 ]; then echo "Backup succeeded at $(date)" else echo "Backup failed at $(date)" >&2 fi ``` 此段代码定义了一个简单的备份流程并将其保存为可执行文件[^1]。 #### 添加计划任务 通过Linux系统的cron服务可以轻松安排上述脚本按照指定的时间间隔运行。编辑crontab文件以加入新的调度条目: ```bash crontab -e ``` 向其中添加如下行以便每天凌晨两点钟触发一次完整的数据库备份过程: ```text 0 2 * * * /path/to/your/backup_script.sh >> /var/log/db_backup.log 2>&1 ``` 这里假设已经将之前编写的shell脚本放置到了特定位置,并赋予了相应的权限使其可以直接被执行[^2]。 #### 注意事项 - 在正式部署前务必测试整个方案的有效性和稳定性。 - 应当妥善管理好存储空间,防止因长期积累过多的历史备份而导致磁盘满载。 - 对于生产环境中使用的任何自动化脚本都建议增加必要的日志记录功能,便于后续排查可能出现的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值