DM8:达梦数据库dexp-DMP逻辑导出按用户模式定时自动备份数据库

环境介绍

  • 在某些特殊情况无法使用全库备份,需要按用户备份部分重要的数据表,适合使用dexp逻辑备份
  • 若实际配置文件路径,数据库安装路径与博文不符,只需修改dmp.sh脚本中的两处:

dm_conf.txt路径与/home/dmdba/dmdbms/bin 路径

1 编写脚本&配置文件

1.1编写shell脚本备份数据库

vi /home/dmdba/dmp.sh

#!/bin/bash

echo -e '\n\n\n'
time=$(date "+%Y-%m-%d-%H-%M-%S")
echo "开始时间是:"$time

#读取配置文件路径
exec < /home/dmdba/dmp_conf.txt
read dmp_conf

#读取用户名密码
#多个用户中间用空格分开
exec < $dmp_conf/dm_user.txt
read dm_userpwd

#读取ip:port
exec < $dmp_conf/ip_port.txt
read ip_port

#读取备份路径
exec < $dmp_conf/bak_path.txt
read bak_path

#创建备份路径
mkdir -p $bak_path/DATA$time

#linux 中定义一个数据的语法为
var_dm=("$dm_userpwd")
var_count=0

#数组的下标从0开始。
#for遍历
for i in ${var_dm[@]}; do

#获取用户名
dm_user=${i%/*}
echo 备份数据库名称: $dm_user

cd /home/dmdba/dmdbms/bin&&./dexp USERID=$i@$ip_port FILE=$bak_path/DATA$time/$dm_user.dmp LOG=$bak_path/DATA$time/$dm_user.log  SCHEMAS=$dm_user CONSTRAINTS=N TABLESPACE=N GRANTS=N TRIGGERS=N COMPRESS=Y >> /dev/null
#过滤不要导出的表
#EXCLUDE=TABLES:A

#打印日志
cat $bak_path/DATA$time/$dm_user.log |grep SCHEMA
cat $bak_path/DATA$time/$dm_user.log |grep 警告

#计数器
var_count=$[$var_count+1]
done

#任务执行完成
echo "------------------------------------------------"
echo       "共 "$var_count" 个 数据库用户备份完成"
echo "------------------------------------------------"

echo "开始时间是:"$time
time2=$(date "+%Y-%m-%d-%H-%M-%S")
echo "结束时间是:"$time2
echo -e '\n\n\n'

1.2 编写dm_conf 配置文件

vi /home/dmdba/dm_conf.txt

/home/dmdba/dmp_conf

1.3 编写用户名密码配置文件(用空格分隔多个用户,不能换行)

vi /home/dmdba/dmp_conf/dm_user.txt

SYSDBA/SYSDBASYSDBA DM/SYSDBASYSDBA

1.4 编写ip:port 配置文件

vi /home/dmdba/dmp_conf/ip_port.txt

192.168.248.19:5236

1.5 编写bak_path备份路径配置文件

vi /home/dmdba/dmp_conf/bak_path.txt

/home/dmdba/backup

2 编写linux 定时任务

#每晚23点 20 分开始执行
[root@localhost backup]$ crontab -e
20 23 * * * cd /home/dmdba;./dmp.sh >> /home/dmdba/dmp.log
[root@localhost backup]$
  • 定时任务时间介绍
1.用数值表示 时间信息
00 02 *  *  *  cmd 命令

2.利用特殊符号表示时间信息
*     *    *   *    *   cmd 命令
/分钟 /小时 ///周

=========================================
PS:定时任务最短执行的周期为 每分钟 
*/5       */ 6     */3      */1    */2
每隔5分钟  每隔6小时  每隔3日  每隔1月  每隔2周

=========================================
其它 写法:
01-05  02  * * *        每2日的01、02、03、04、05 执行一遍

指定不连续的时间范围:
00  14,20  *  *  *  *    每天14点,20点执行一次

3 执行dmp.sh 脚本输出的日志

[root@localhost backup]$ /home/dmdba/dmp.sh




开始时间是:2022-08-25-18-19-35
备份数据库名称: SYSDBA
成功导出 第1 个SCHEMA :SYSDBA
共导出 1 个SCHEMA
成功终止导出, 没有出现警告
备份数据库名称: DM
成功导出 第1 个SCHEMA :DM
共导出 1 个SCHEMA
成功终止导出, 没有出现警告
------------------------------------------------
共 2 个 数据库用户备份完成
------------------------------------------------
开始时间是:2022-08-25-18-19-35
结束时间是:2022-08-25-18-19-36




[root@localhost backup]$

4 dmp 命令参数介绍


USERID:用户名/MiMa@IP:端口      如果MiMa带特殊字符,双引号外边加一层单引号 '"abc@)16"'
FILE:导出路径
LOG:导出日志
OWNER:导出用户拥有权限的所有数据库对象
SCHEMAS:以哪个模式导出
TRIGGERS:触发器 Y=导出,N=不导出
GRANTS:权限 Y=导出,N=不导出
CONSTRAINTS:约束 Y=导出,N=不导出
TABLESPACE:表空间  默认不导
COMPRESS:压缩导出 Y=压缩,N=不压缩
TABLE_EXISTS_ACTION=TRUNCATE:表如果存在,就删除
REMAP_SCHEMA:源模式:目标模式(假如以A模式导出来的dmp文件,要导入到B模式里,需要用到这个参数)
FAST_LOAD=Y 使用快速装载
EXCLUDE= TABLES:A  不导出的表A

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5 达梦数据库学习使用列表

欢迎一起学习交流 达梦数据库学习使用列表 点我跳转

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值