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

达梦数据库DM8备份恢复与容灾方案实战

一、为什么要重视数据库备份?

数据是企业的核心资产。一次误操作、硬件故障或勒索软件攻击,都可能导致数据永久丢失。达梦DM8提供了完善的备份恢复机制,包括物理备份、逻辑备份、增量备份、归档备份等多种方式。

二、达梦备份方式概览

  • 物理备份:使用dmrman工具,备份整个数据库文件,速度快

  • 逻辑备份:使用dexp/dimp工具,备份/恢复指定对象(表、模式等)

  • 归档备份:基于归档日志的增量备份,实现任意时间点恢复

三、开启归档模式

归档模式是实现增量备份和时间点恢复的前提:

# 1. 修改dm.ini配置文件
su - dmdba
vi /dm/data/DAMENG/dm.ini
# 修改以下参数:
ARCH_INI = 1
# 如果没有则添加
# 2. 创建归档配置文件
cat > /dm/data/DAMENG/dmarch.ini  SELECT ARCH_MODE, STATUS FROM v$database;
SQL> SELECT * FROM v$arch_status;

四、物理备份(dmrman)

4.1 全量备份

# 基本全量备份
./dmrman CTLSTMT="BACKUP DATABASE '/dm/data/DAMENG/dm.ini' FULL 
        BACKUPSET '/dm/backup/full_$(date +%Y%m%d)'"
# 全量备份并压缩
./dmrman CTLSTMT="BACKUP DATABASE '/dm/data/DAMENG/dm.ini' FULL 
        BACKUPSET '/dm/backup/full_$(date +%Y%m%d)' COMPRESSED LEVEL 6"

4.2 增量备份

# 基于上次全量备份做增量
./dmrman CTLSTMT="BACKUP DATABASE '/dm/data/DAMENG/dm.ini' INCREMENT 
        WITH BACKUPDIR '/dm/backup'
        BACKUPSET '/dm/backup/incr_$(date +%Y%m%d_%H%M)'"

4.3 备份脚本(生产推荐)

#!/bin/bash
# dm_backup.sh - 达梦数据库自动备份脚本
BACKUP_DIR=/dm/backup
DATE=$(date +%Y%m%d)
LOG_FILE=/var/log/dm_backup.log
# 保留最近30天全量备份,删除旧的
find ${BACKUP_DIR} -name "full_*" -mtime +30 -exec rm -rf {} \;
# 周日做全量备份,日常做增量
if [ $(date +%u) -eq 7 ]; then
    su - dmdba -c "/opt/dmdbms/bin/dmrman CTLSTMT="
        BACKUP DATABASE '/dm/data/DAMENG/dm.ini' FULL 
        BACKUPSET '${BACKUP_DIR}/full_${DATE}' 
        COMPRESSED LEVEL 6""
    echo "[$(date)] Full backup done" >> ${LOG_FILE}
else
    su - dmdba -c "/opt/dmdbms/bin/dmrman CTLSTMT="
        BACKUP DATABASE '/dm/data/DAMENG/dm.ini' INCREMENT 
        WITH BACKUPDIR '${BACKUP_DIR}'
        BACKUPSET '${BACKUP_DIR}/incr_${DATE}_\$(date +%H%M)'""
    echo "[$(date)] Incremental backup done" >> ${LOG_FILE}
fi

五、逻辑备份(dexp/dimp)

5.1 导出(dexp)

# 全库导出
./dexp SYSDBA/SYSDBA@localhost:5236 FILE=/dm/backup/dexp/fulldb.dmp LOG=fulldb.log FULL=Y DIRECTORY=/dm/backup/dexp
# 按用户导出
./dexp SYSDBA/SYSDBA@localhost:5236 FILE=/dm/backup/dexp/app.dmp LOG=app.log OWNER=APP_USER
# 按表导出
./dexp SYSDBA/SYSDBA@localhost:5236 FILE=/dm/backup/dexp/tables.dmp TABLES=user_table,order_table
# 导出DDL(不包含数据)
./dexp SYSDBA/SYSDBA@localhost:5236 FILE=/dm/backup/dexp/schema.sql ROWS=N

5.2 导入(dimp)

# 全库导入
./dimp SYSDBA/SYSDBA@localhost:5236 FILE=/dm/backup/dexp/fulldb.dmp FULL=Y
# 按用户导入
./dimp SYSDBA/SYSDBA@localhost:5236 FILE=/dm/backup/dexp/app.dmp FROM_USER=APP_USER TO_USER=APP_USER

六、恢复操作

6.1 全量恢复

# 恢复前的准备工作
systemctl stop DmServiceDMSERVER
# 使用dmrman恢复
./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' 
        FROM BACKUPSET '/dm/backup/full_20260301'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' 
        FROM BACKUPSET '/dm/backup/full_20260301'"
# 重启数据库
systemctl start DmServiceDMSERVER

6.2 时间点恢复(PITR)

这是应对"误删数据"场景最重要的恢复方式:

# 恢复到指定时间点
./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' 
        FROM BACKUPSET '/dm/backup/full_20260301'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' 
        FROM BACKUPSET '/dm/backup/full_20260301'
        UNTIL TIME '2026-03-01 14:30:00'"
# 恢复到指定LSN
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' 
        FROM BACKUPSET '/dm/backup/full_20260301'
        UNTIL LSN 4398046511104"

七、容灾方案

7.1 主备同步(DW模式)

# 主库配置(dm.ini)
ARCH_INI = 1
MAL_INI = 1
# 备库配置
# 使用dmwatcher和dmmontor实现自动切换
# 配置主备同步后,备库执行
./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' 
        FROM BACKUPSET '/dm/backup/full_20260301'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' 
        UPDATE DB_MAGIC"

7.2 异地灾备

使用rsync或scp将备份文件传输到异地服务器:

#!/bin/bash
# 备份同步脚本
rsync -avz --progress /dm/backup/ backup@remote-server:/dm/backup/
# 删除远程7天前的备份
ssh backup@remote-server "find /dm/backup -name 'full_*' -mtime +7 -exec rm -rf {} \;"

八、备份恢复的验证

定期验证备份文件可用性非常重要,否则灾难发生时才发现备份不可用就晚了:

# 每月至少做一次恢复演练
# 在测试环境执行:
./dmserver /dm/data/DAMENG/dm.ini
./dmrman CTLSTMT="CHECK BACKUPSET '/dm/backup/full_20260301'"
./disql SYSDBA/SYSDBA@localhost:5236
SQL> SELECT COUNT(*) FROM important_table;

九、总结

备份策略的核心原则:3-2-1原则——至少3份副本,2种不同介质,1份异地存储。达梦DM8的备份恢复体系非常完善,关键是运维人员要建立定期备份和恢复演练的机制。


原文链接:https://shibaolong.com/115/
更多安全技术文章请访问 月梦沉冰的安全博客

http://www.jsqmd.com/news/699694/

相关文章:

  • 从K8s集群崩盘到毫秒级恢复:我们用Docker AI Toolkit 2026压测出的8条黄金参数铁律(附YAML审计模板)
  • MMA-Sim:GPU矩阵核心比特级精确模拟技术解析
  • 5分钟搞定抖音直播间实时弹幕监控:Golang爬虫实战指南
  • 3步实现浏览器实时超分!Anime4K终极指南让老旧动漫秒变4K
  • Python聚类算法实战:从原理到应用
  • 保姆级教程:用Android Studio + 百度地图API + 和风天气,手把手教你开发一个天气空气质量App
  • Linux系统性能调优实战:CPU、内存、磁盘、网络四维优化
  • 网络工程师避坑指南:华为MSTP与VRRP联动配置时,这几个参数没设对等于白干
  • 大模型学习路线图:小白也能轻松入门,附收藏版学习资料
  • 双层可移动天线系统在5G/6G中的优化设计与实现
  • 别再写多层if-else了!用Java 8的Comparator.thenComparing优雅搞定多级排序
  • 别再只画直线了!用CarSim自定义路面纹理,让你的仿真场景告别‘塑料感’
  • AD9361实战指南:从参考时钟到增益控制的射频收发器核心配置
  • 终极图像数据提取指南:如何从图表图片中快速获取数值数据
  • 达梦数据库(DM8)安装部署与初始化配置完全指南
  • 信息安全工程师-网络攻击技术体系与核心方法:核心考点
  • AutoCAD字体管理终极方案:FontCenter完整使用教程
  • Arduino IDE 5步入门指南:从零开始轻松玩转硬件编程
  • AD7124-8/AD7124-4调试血泪史:SPI速率、SYNC悬空、寄存器写入失败,这些坑你踩过几个?
  • Zabbix 7.0监控系统从零部署到生产实践(2026版)
  • Voxtral-4B-TTS-2603效果展示:德语科技新闻语音输出——辅音清晰度与长句断句实测
  • 基于Simulink仿真的永磁同步电机死区补偿策略实践
  • 企业级容器化架构设计:MDCx Docker部署实战解决方案
  • Banana Pi BPI-CM5 Pro:高性能AI边缘计算模块解析
  • 你的Termux终端太丑了?手把手教你用Oh My Zsh打造高颜值命令行(附字体配色方案)
  • OMC - 08 在多 Agent 时代,如何优雅地「分工协作」:oh-my-claudecode 委托分类体系深度解读
  • cryptography,一个让 Python 应用坚不可摧的密码学利器!
  • XGBoost实战:Python环境下的7步极简教程
  • Camera成像竖线故障:从现象到芯片级定位的完整排查指南
  • 终极解决方案:开源SensitivityMatcher如何实现跨游戏鼠标灵敏度精准匹配