当前位置: 首页 > news >正文

Linux达梦数据库异地备份

1.备份脚本(dm-backup.sh)
#!/bin/sh

# 数据库环境变量
# 安装路径
export DM_HOME="/apps/dm8" 
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

# 备份设置
# 备份文件路径
bakdir=/dmbak
# 当前时间
date=$(date +%Y%m%d%H%M)
# 设置删除10天前的数据
days=10 
# 要备份的DM数据库IP、端口
dmid=192.168.1.101:5236 
# 备份用户和密码
bakuser=SYSDBA
bakpass="SYSDBA"

# 远程服务器配置
# 远程服务器ip
remoteip=192.168.1.102
# 远程服务目录
remotedir=/apps/

# 创建备份目录(如果不存在)
mkdir -p "$bakdir" || exit 1

# 备份模式列表
schemas=("TEST0116" "TEST0117")

# 遍历模式列表进行备份
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" -C "$bakdir" "$bakdata" "$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 {} \; 
	# 备份文件
	rsync "$bakdir/$dmdatabak" "$remoteip:$remotedir"
done

# 删除10天前备份的压缩文件
find "$bakdir" -type f -name "*.tar.gz" -mtime +$days -exec rm -f {} \;
2.还原脚本(dm-restore.sh)
#!/bin/sh

#环境变量
#数据库安装路径
export DM_HOME="/apps/dm8" 
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)

#要还原的目标DM数据库IP、端口  
dmid=192.168.1.101:5236 
#数据库用户名 
bakuser=SYSDBA
#用户密码  
bakpass="SYSDBA"
#还原模式
schema=IBSP0117

#还原文件路径
restoredir=/dmbak

#还原文件名
restorefile=TEST0117_202503271133.dmp

# 开始还原
dimp $bakuser/$bakpass@$dmid FILE="$restorefile" LOG=db_str_$schema_$date.log SCHEMAS=$schema  DIRECTORY=$restoredir

3.配置自动任务
# 备份脚本授权
chmod +x dm-backup.sh
# 打开编辑器
crontab -e 
# 添加任务-指定日志文件
# 分 时 日 月 周
30 23 *  *  * sh /dmbak/dm-backup.sh > /dmbak/backup.log 2>&1
# 查看任务
crontab -l
# 重启crontab服务     
systemctl restart crond

相关文章:

  • STM32硬件IIC与OLED使用
  • Mininet--log.py-单例日志器-super().__new__(cls)解析
  • Dify 0.15.3版本 本地部署指南
  • 【已开源】UniApp+Vue3+TS全栈实战:从0到1构建企业级跨端应用与规范、uniapp+vue3模板应用
  • MySQL中如何进行SQL调优?
  • Windows 新型零日漏洞:远程攻击可窃取 NTLM 凭证,非官方补丁已上线
  • 【java笔记】泛型、包装类、自动装箱拆箱与缓存机制
  • 运维工程师学习知识总结
  • 生物化学笔记:医学免疫学原理07 补体系统+补体系统的激活+补体激活的调节+补体的生物学功能+补体与临床疾病
  • 【Linux网络-poll与epoll】epollserver设计(两个版本 Reactor)+epoll理论补充(LT ET)
  • DINOv2: Learning Robust Visual Features without Supervision
  • 1.第二阶段x64游戏实战-x86和x64的区别
  • 批量将 PDF 转换为 Word/PPT/Txt/Jpg图片等其它格式
  • Wireshark学习
  • 批量将多个彩色的 PDF 转换为黑白色
  • 2025年公路水运安全员 C 证考试内容及练习题
  • JS 防抖与节流
  • xr-frame 用cube代替线段实现两点间的连线
  • SQL Server中账号权限
  • std::string不是直接的 DATETIME类型,因此在插入数据库时,通常可以直接将这个字符串传递给数据库,它会自动将其转换为 DATETIME类型
  • 18种禁用软件黄app/seo搜索引擎优化主要做什么
  • 百度怎么创建网站/域名邮箱 400电话
  • 做外链选择那些网站/深圳seo优化电话
  • 做网站建设费用/市场营销策划ppt
  • 长业建设集团有限公司网站/专业做网站的公司
  • 电商网站建设规划/百度竞价软件哪个好