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

浅聊达梦数据库物理热备的概念及原理

达梦数据库(DM Database)的物理热备份,核心是在数据库不中断业务(联机) 的前提下,通过对数据库物理文件(如数据文件、控制文件、日志文件等)的增量或全量复制,实现数据备份的技术方案。其原理本质上基于**“一致性快照”+“重做日志(Redo Log)实时追踪”** 两大核心技术,同时结合达梦自研的存储引擎机制,确保备份过程中数据的完整性与业务连续性。

一、核心技术基石:达梦存储引擎的“页级管理”

要理解物理热备份,首先需要明确达梦数据库的底层存储逻辑——其数据以**“数据页(Data Page)”** 为基本单位存储(默认页大小为8KB/16KB/32KB,可配置),所有表、索引等数据最终都映射为磁盘上的物理页文件(.dbf格式)。
物理热备份的本质是对“数据页”的复制,但需解决一个关键问题:备份过程中数据库仍在写入,如何避免复制的“半脏页”(即页数据未完全写入就被备份)?
这就需要“一致性快照”技术来解决。

二、核心原理1:一致性快照(Consistent Snapshot)

达梦物理热备份的第一步,是创建一个数据库的一致性快照,确保备份的所有数据页都对应“同一时间点”的状态,避免数据不一致。其实现逻辑如下:

  1. 触发快照点:当用户发起热备份命令(如 BACKUP DATABASE)时,数据库首先记录当前的系统全局事务号(SCN,System Change Number) ——SCN是达梦用于标记数据版本的全局唯一序号,每发生一次数据修改,SCN都会递增。
  2. 冻结“脏页刷盘”规则:达梦的缓冲池(Buffer Pool)中会缓存近期访问的数据页,修改后的数据先存于“脏页”(未刷盘的修改页)。创建快照后,数据库会对“快照点之前的脏页”执行一次强制刷盘(确保快照点前的修改都落地到物理文件),同时对“快照点之后的新脏页”标记为“不参与当前备份”——新修改的页不会被备份,而是通过后续的重做日志补充。
  3. 生成“快照映射表”:快照创建后,数据库会生成一个“快照页映射表”,记录快照点时所有数据页的物理位置(磁盘地址)。后续备份进程只需根据该映射表,逐一复制对应位置的物理页,即可得到“快照点时刻的一致性数据副本”。

三、核心原理2:重做日志(Redo Log)的实时追踪与补充

一致性快照解决了“备份起点的一致性”,但备份过程可能持续数分钟甚至数小时,期间数据库仍在处理业务(产生新的修改)。为了让最终的备份集包含“快照点到备份结束”的所有数据,达梦引入了重做日志实时追踪技术:

  1. 重做日志的作用:达梦数据库会将所有数据修改操作(INSERT/UPDATE/DELETE等)实时写入“重做日志文件”(.log格式,默认双日志文件循环写入),用于崩溃恢复(Crash Recovery)和备份补充。
  2. 备份期间的日志追踪:在热备份启动后,数据库会启动一个日志追踪进程,实时监控并复制“快照点SCN之后生成的所有重做日志”(包括当前正在写入的日志文件和后续切换的日志文件)。
  3. 备份集的完整性:最终的物理热备份集包含两部分:
    • 快照点时刻的“一致性数据页副本”(全量或增量,取决于备份类型);
    • 快照点到备份结束期间的“增量重做日志片段”。
      恢复时,只需先恢复数据页副本到快照点状态,再通过重做日志片段“重演”后续修改,即可将数据恢复到“备份结束时刻”的完整状态。

四、关键技术特性:支持“增量热备份”的底层逻辑

达梦物理热备份不仅支持全量(备份所有数据页),还支持增量(仅备份“上一次备份后修改过的数据页”),其实现依赖**“页修改标记(Page Dirty Flag)”** 技术:

  1. 每次数据库启动或完成一次全量/增量备份后,达梦会初始化一个“页修改追踪表”;
  2. 当数据页被修改时,数据库会在“页修改追踪表”中标记该页的“修改状态”(如标记页的物理地址和修改时间);
  3. 执行增量热备份时,备份进程只需扫描“页修改追踪表”,仅复制“标记为修改过的数据页”,同时追踪对应期间的重做日志,大幅减少备份量和时间。

总结:物理热备份的技术核心链路

graph LR
A[发起热备份命令] --> B[记录当前SCN,创建一致性快照]
B --> C[强制刷盘快照点前的脏页]
C --> D[复制快照点的一致性数据页(全量/增量)]
D --> E[实时追踪并复制快照点后的重做日志]
E --> F[生成包含“数据页+重做日志”的备份集]

本质上,达梦物理热备份是通过**“SCN快照确保起点一致”+“重做日志追踪确保增量完整”+“页级管理实现高效复制”** 的技术组合,在不中断业务的前提下,实现了物理文件级的可靠备份,兼顾了备份效率、数据完整性和业务连续性。

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

相关文章:

  • Ubuntu 切换 SOCKS5代理 和 HTTP 代理并下载 Hugging Face 模型
  • 三方相机问题分析八:【返帧异常导致性能卡顿】Snapchat后置使用特效预览出现卡顿
  • OpenTelemetry 在 Spring Boot 项目中的3种集成方式
  • 互联网大厂Java面试深度解析:从基础到微服务云原生的全场景模拟
  • 嵌入式linux相机(1)
  • CPU、IO、网络与内核参数调优
  • 【目标检测】论文阅读5
  • 6.8 学习ui组件方法和Element Plus介绍
  • 【C++】类型系统:内置类型与自定义类型的对比
  • FlashAttention算法原理
  • 元宇宙与医疗健康:重构诊疗体验与健康管理模式
  • 【开题答辩全过程】以 微信小程序的老年活动中心为例,包含答辩的问题和答案
  • LabVIEW 音频信号处理
  • 火焰传感器讲解
  • laravel学习并连接mysql数据库
  • 煤矸石检测数据集VOC+YOLO格式3090张2类别
  • Python爬虫获取1688商品列表与图片信息
  • AGDO-BP+NSGAII梯度下降优化算法优化BP神经网络+NSGAII多目标优化算法,三目标和四目标案例
  • 【Oracle篇】伪列之ROWID:行数据的物理地址(基于物理地址对行数据最快速度的查询、更新、删除)(第四篇,总共六篇)
  • Python 前后端框架实战:从选型到搭建简易全栈应用
  • 使用MP4视频格式链接地址的自适应视频弹窗实现方案HTML代码
  • 共享云服务器替代传统电脑做三维设计会卡顿吗
  • 移远 × 高通:从开源生态到场景验证,共筑端侧AI新生态
  • 电脑开机显示器不亮
  • 私域电商新范式:开源AI智能名片链动2+1模式S2B2C商城小程序赋能传统行业流量转化
  • electron离线开发核心环境变量npm_config_cache
  • LangGraph - API多种访问方式
  • Diagnosing bias and variance|诊断偏差和方差
  • Redis哨兵机制:高可用架构的守护神!⚔️ 主从秒级切换实战指南
  • Elasticsearch核心配置详解与优化