达梦数据库定时导出逻辑备份

背景

项目通常会部署drman自动备份作业,但这个是基于全库的备份。

有时会需要按用户模式进行备份,因此可以使用dexp来进行逻辑导出。

并且dexp工具支持远程备份,结合drman可以做双重保障。

 

 

 

备份脚本

1、手动创建备份目录

[root@db1 ~]# mkdir -p /dmdata/EXP_BAK/

[root@db1 ~]# chown -R dmdba:dinstall /dmdata/EXP_BAK/

 

 

2、创建备份脚本

注意环境变量这里:

通用机一般是 /home/dmdba/dmdbms/bin

 

cd /dmdata/EXP_BAK/


vi bak.sh


#!/bin/bash

source /etc/profile

export DM_HOME=/home/dmdba/dmdbms

PATH=$PATH:$HOME/.local/bin:$HOME/bin:$DM_HOME/bin:$DM_HOME/tool

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dmdba/dmdbms/bin

export PATH

 

#输入参数

  DBuser=$1

  DBpwd=$2

  Host_Port=$3

  bak_dir=$4

 

#时间戳 

  time=$(date '+%Y%m%d_%H%M%S')

 

#开始备份

dexp ${DBuser}/${DBpwd}@${Host_Port} owner=${DBuser} directory=${bak_dir} file=${DBuser}_${time}.dmp log=${DBuser}_${time}.log parallel=8 COMPRESS=Y

 

 

 

3、手动执行备份脚本

输入四个参数:

数据库用户名      platform

数据库密码         dameng123

IP地址:端口号     192.168.93.101:6236

备份路径            /dmdata/EXP_BAK

 

例如:

sh bak.sh platform dameng123   192.168.93.101:6236  /dmdata/EXP_BAK

 

表示: 备份库 platform/dameng123@192.168.93.101:6236,备份路径 /dmdata/EXP_BAK

 

     

查看备份集:

[dmdba@db1 ~]#   ls  /dmdata/EXP_BAK

[dmdba@db1 ~]#  platform_20210525_172713.dmp  

[dmdba@db1 ~]#  platform_20210525_172713.log

 

 

 

 

删除脚本

1、创建脚本

vi delete_bak.sh

 

#!/bin/bash

#输入参数:备份路径  删除天数  文件通配符(用户名)

  Delete_Dir=$1

  Delete_days=$2

  Delete_User=$3

 

#删除xx天前的备份

  find ${Delete_Dir} -mtime +${Delete_days} -name "${Delete_User}_*.dmp" -exec rm -rf {} \;

  find ${Delete_Dir} -mtime +${Delete_days} -name "${Delete_User}_*.log" -exec rm -rf {} \;

 

 

2、执行脚本

输入三个参数:

备份文件路径

删除天数(整数,即删除多少天以前的文件)

文件名关键字(通常是数据库用户名为前缀的文件)

 

例如:

sh delete_bak.sh  /dmdata/EXP_BAK   5   platform

 

表示 查找/dmdata/EXP_BAK目录下,删除5天前的,以platform开头的.dmp 和.log 文件。

删除....

platform_20210525_172713.dmp  

platform_20210525_172713.log

 

 

 

结合crontab做定时任务

crontab -e

#每隔4小时执行一次备份

0 */4 * * * sh /dmdata/EXP_BAK/bak.sh platform dameng123 192.168.93.101:6236  /dmdata/EXP_BAK

 

#每天凌晨1点删除7天前的文件

00 01 * * * sh /dmdata/EXP_BAK/delete_bak.sh /dmdata/EXP_BAK  7  platform

 

 


请使用浏览器的分享功能分享到微信等