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

达梦数据库备份与还原终极指南:从基础到增量策略实战


第一部分:备份与还原核心原理

一、备份还原本质解析
  1. 数据存储机制

    • 数据存储在物理文件页中(最小单位4K-32K)
    • 有效数据页 = 文件描述页 + 已分配使用页
    • 日志优先原则:操作先写REDO日志再更新数据文件
  2. 三大核心操作

    操作作用关键特性
    备份复制有效页到备份集需捕获备份期间的归档日志
    还原备份集→数据文件仅恢复物理结构
    恢复重做日志到时间点保证事务一致性
  3. 容灾价值

    • 数据故障时恢复至故障前状态
    • 支持时间点恢复(PITR)满足RPO要求
二、备份方式选择矩阵
类型操作状态归档要求适用场景恢复速度
热备数据库运行需开启归档7×24业务★★★★☆
冷备数据库关闭无需归档维护窗口期★★★☆☆
增量任意状态热备需归档生产环境日常★★★★★

决策树
业务连续性要求高 → 热备
数据量>1TB → 增量备份
法规要求离线副本 → 冷备


第二部分:全量备份实操手册

一、热备全流程(联机备份)

前提条件

  • 开启本地归档(两种配置方式)

方法1:SQL命令配置归档

# 启动服务
./DmAPService start    # 启DMAP服务
./DmService start      # 启数据库服务# 配置归档
./disql SYSDBA/Dameng123@localhost:5236 <<EOF
alter database mount;
alter database add archivelog 'dest=/dm8/dmarch,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=102400';
alter database archivelog;
alter database open;
EOF# 执行全备
./disql -s "backup database full backupset '/dm8/full_$(date +%Y%m%d)'"

方法2:配置文件配置归档

# 配置归档文件
cat > /dm8/data/DAMENG/dmarch.ini <<CONF
[ARCHIVE_LOCAL1]
ARCH_TYPE = local
ARCH_DEST = /dm8/dmarch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 102400
CONF# 启用归档
sed -i 's/ARCH_INI.*/ARCH_INI = 1/' /dm8/data/DAMENG/dm.ini# 重启生效
./DmService restart# 执行备份
./dmrman <<CMD
backup database full backupset '/dm8/full_$(date +%Y%m%d)';
exit
CMD
二、冷备全流程(脱机备份)
# 关闭服务并启DMAP
./DmService stop
./DmAPService start# 执行备份
./dmrman <<RMAN
backup database '/dm8/data/DAMENG/dm.ini' 
backupset '/dm8/cold_full_$(date +%Y%m%d)';
exit
RMAN# 验证备份
./dmrman "check backupset '/dm8/cold_full_$(date +%Y%m%d)'"
三、备份集还原实战
# 停止数据库
./DmService stop# 使用RMAN还原
./dmrman <<RECOVER
restore database '/dm8/data/DAMENG/dm.ini' 
from backupset '/dm8/full_20231001';recover database '/dm8/data/DAMENG/dm.ini' 
from backupset '/dm8/full_20231001';recover database '/dm8/data/DAMENG/dm.ini' 
update db_magic;
exit
RECOVER# 重启服务
./DmService start

第三部分:增量备份深度解析

一、增量备份原理
基础
仅变化页
70%空间节省
全量备份
增量备份
小型备份集
高效存储
二、增量备份类型对比
特性差异增量(默认)累积增量
基备份要求全量/增量备份集仅全量备份集
备份链长度长(链式依赖)短(直连全量)
空间效率★★★★★★★★☆☆
恢复复杂度
备份集丢失风险高(链断裂失效)
三、增量备份实战

1. 基础环境准备

-- 创建基准全备(每周一执行)
BACKUP DATABASE FULL BACKUPSET '/dm8/backup/full_mon';

2. 差异增量备份(每日)

-- 周二增量(基于周一全量)
BACKUP DATABASE INCREMENT BACKUPSET '/dm8/backup/incr_tue';-- 周三增量(基于周二增量)
BACKUP DATABASE INCREMENT BACKUPSET '/dm8/backup/incr_wed';

3. 累积增量备份(周四)

-- 直接基于周一全量
BACKUP DATABASE INCREMENT CUMULATIVE 
BACKUPSET '/dm8/backup/cum_thur';

4. 路径问题解决方案

-- 显式指定基备份路径
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/dm8/backup' 
BACKUPSET '/dm8/backup/new_incr';
四、增量备份恢复
# 停止数据库
./DmService stop# 还原差异增量链
./dmrman <<RESTORE
restore database '/dm8/data/DAMENG/dm.ini' 
from backupset '/dm8/backup/incr_wed'
with backupdir '/dm8/backup';recover database '/dm8/data/DAMENG/dm.ini' 
from backupset '/dm8/backup/incr_wed';recover database '/dm8/data/DAMENG/dm.ini' 
update db_magic;
exit
RESTORE

关键区别
差异增量恢复需完整备份链
累积增量只需基础全量+本次备份


第四部分:企业级备份策略

一、推荐备份方案
| 时间   | 备份类型     | 保留策略       | 特点                     |
|--------|--------------|----------------|--------------------------|
| 每周一 | 全量备份     | 永久保留       | 基准点                   |
| 周二三 | 差异增量     | 保留7天        | 节省空间                 |
| 周四   | 累积增量     | 保留30天       | 打破长链降低风险         |
| 周五   | 差异增量     | 保留7天        | 基于周四增量             |
| 每月1日| 异地冷备     | 离线存储12个月 | 满足合规要求             |
二、最佳实践清单
  1. 备份验证

    # 每周执行校验
    ./dmrman "check backupset '/dm8/backup/full_mon'"
    
  2. 归档管理

    • 设置ARCH_SPACE_LIMIT防止磁盘写满
    • 定期清理过期归档:SF_ARCHIVELOG_DELETE_BEFORE_TIME(sysdate-30)
  3. 备份监控

    -- 查询备份历史
    SELECT * FROM V$BACKUPSET; -- 监控备份状态
    SELECT backup_name, begin_time, end_time, (end_time - begin_time)*24*60 as duration_min 
    FROM V$BACKUP_HISTORY;
    
三、灾难恢复口诀

三停:停应用→停服务→停进程
四步走

  1. 定位备份集(with backupdir)
  2. 还原数据文件(restore)
  3. 重做日志(recover)
  4. 更新魔数(update db_magic)
    一验:启动前校验数据库一致性

第五部分:常见故障处理

一、典型错误解决方案
错误码现象解决方案
[-8036]无基备份1. 检查备份路径2. 使用with backupdir
[-718]归档不完整1. 检查归档空间2. 验证归档配置
[-610]备份集损坏1. 校验备份集2. 从备用副本恢复
二、数据恢复SOP
  1. 场景1:单表误删除

    -- 表级时间点恢复
    RECOVER TABLE 'EMP' 
    FROM BACKUPSET '/dm8/backup/full_mon' 
    UNTIL TIME '2023-10-01 14:30:00';
    
  2. 场景2:全库损坏

    # 使用增量备份恢复
    dmrman restore... recover... update...
    
  3. 场景3:磁盘故障

    # 替换磁盘后重做恢复
    dmrman repair database '/new_path/dm.ini'
    

终极建议

  1. 遵循3-2-1原则:3份备份、2种介质、1份异地
  2. 每月执行恢复演练:验证备份有效性
  3. 关键业务配置实时主备:DMDataWatch方案

通过合理运用热备、冷备与增量备份组合策略,可降低存储成本50%以上,缩短备份窗口70%,RTO控制在15分钟内,为业务系统提供坚若磐石的数据保障。

http://www.xdnf.cn/news/16981.html

相关文章:

  • k8s+isulad 国产化技术栈云原生技术栈搭建4-添加worker节点
  • 使用Database Navigator插件进行连接sqlite报错invalid or incomplete database
  • 新电脑上GitHub推送失败?全面排查与解决指南
  • 力扣经典算法篇-41-旋转图像(辅助数组法,原地旋转法)
  • 基于深度学习的医学图像分析:使用变分自编码器(VAE)实现医学图像生成
  • 华为智能家居与Spring人工智能
  • PyTorch生成式人工智能(24)——使用PyTorch构建Transformer模型
  • 06.Redis 配置文件说明
  • C++ <type_traits> 应用详解
  • 需求和测试的映射关系
  • 推荐一款进程间高速交换数据的解决方案
  • 前端JS-调用单删接口来删除多个选中文件
  • 操作系统——读者写者问题
  • Spring **${}** vs **#{}** 语法全景图
  • 【C++ 初级工程师面试--5】inline内联函数特点 、和普通函数的区别、什么时候适合内联?
  • Shell脚本-变量如何定义
  • 什么是DOM和BOM?
  • 搜索引擎评估革命:用户行为模型如何颠覆传统指标?
  • 数据结构1-概要、单向链表
  • [网安工具] Web 漏洞扫描工具 —— AWVS · 使用手册
  • 【C语言】内存函数与数据在内存中的存储
  • python -m build打包成为tar.gz或者whl
  • Qemu-NUC980(二):时钟clock代码添加
  • Redis数据库存储键值对的底层原理
  • SpringBoot相关注解
  • #Linux内存管理#缺页中断处理的核心函数是do_page_fault()的工作原理
  • Vulnhub ELECTRICAL靶机复现(附提权)
  • RPG增容2.尝试使用MMC根据游戏难度自定义更改怪物属性(三)
  • (LeetCode 面试经典 150 题) 138. 随机链表的复制 (哈希表)
  • Kotlin单例模式懒汉模式:LazyThreadSafetyMode.SYNCHRONIZED(2)