
1 数据守护集群概念
DM数据守护(Data Watch)作为一种集成化的高可用性、高性能数据库解决方案,在数据库异地容灾领域具备显著优势,堪称数据库异地容灾的首选方案。
当遭遇硬件故障(如磁盘损坏)、自然灾害(地震、火灾等)等极端情况时,部署DM数据守护能够有效规避数据损坏与丢失风险,切实保障数据安全。同时,该方案能够实现数据库服务的快速恢复,充分满足用户对于数据库服务不间断运行的严格要求。与传统的数据库备份(Backup)、还原(Restore)技术相比,DM数据守护在恢复数据库服务方面展现出更为卓越的时效性。随着数据规模的持续增长,采用传统还原手段恢复数据往往需要耗费数小时甚至更长时间,而DM数据守护受数据规模影响极小,仅需数秒即可完成备库向主库的切换,进而对外提供数据库服务。
DM 数据守护提供多样化的解决方案,可灵活配置为实时主备模式,并且 DMDSC
也支持配置为数据守护集群。此方案能够全面满足用户在系统可用性、数据安全性以及性能等方面的综合需求,通过合理架构设计,有效降低总体投入成本,助力用户获得较高的投资回报率。
实时主备架构由一个主库以及一个或多个配置了实时(Realtime
)归档的备库构成,其核心目标在于保障数据库的高可用性,提升数据安全性。 在实时主备系统中,主库承担着提供完整数据库功能的职责,备库则主要提供只读服务。主库在修改数据过程中产生的REDO日志,借助实时归档机制,在写入联机REDO
日志文件之前即被发送至备库。实时备库通过重演REDO
日志,与主库保持数据的高度同步。一旦主库出现故障,备库在完成所有REDO
日志的重演后,即刻切换为主库,对外提供数据库服务。
DMDSC
主备与单节点主备在功能上具有一致性。DMDSC
主备支持DMDSC
集群与单节点之间互为主备库的配置模式。通常情况下,建议将DMDSC
集群部署为主库,单节点部署为备库。当DMDSC集群作为主库时,DMDSC
集群控制节点负责收集所有节点的 Redo
日志,并将其发送至备库,备库严格依据各节点修改数据页的先后顺序重演 Redo
日志,以维持数据同步;当DMDSC集群作为备库时,主库将 Redo
日志发送至DMDSC集群控制节点,由DMDSC
集群控制节点重演 Redo
日志,实现数据同步。
2 数据守护原理
DM 数据守护 (Data Watch) 的实现原理非常简单:将主库(生产库)产生的 REDO
日志传输到备库,备库接收并重新应用 REDO
日志,从而实现备库与主库的数据同步。DM 数据守护的核心思想是监控数据库状态,获取主、备库数据同步情况,为 REDO
日志传输与重演过程中出现的各种异常情况提供一系列的解决方案。
DM 数据守护系统主要由主库、备库、REDO
日志、REDO
日志传输、REDO
日志重演、守护进程 (dmwatcher)、监视器 (dmmonitor) 组成,如下图所示:

2.1 主库
Primary 模式,提供完整数据库服务的实例,一般来说主库是用来直接支撑应用系统的生产库。
2.2 备库
Standby 模式,提供只读数据库服务的实例。备库除了用于容灾,还可以提供备份、查询等只读功能,并且备库还支持临时表的 Insert/Delete/Update 操作,备库支持临时表修改主要基于以下两个因素:
临时表数据的修改不会产生 REDO
日志,主库对临时表的修改无法同步到备库;可以提供更大灵活性,适应更多应用场景。
根据数据同步情况,备库又可以分为可切换备库和不可切换备库。可切换备库是指,主备库之间数据完全同步,主库发生故障、备库切换为主库后,不会造成任何数据丢失的备库。
2.3 REDO
日志
REDO
日志记录物理数据页内容变动情况,是数据库十分重要的一个功能,在数据库系统故障(比如服务器掉电)重启时,利用 REDO
日志可以把数据恢复到故障前的状态。
REDO
日志也是数据守护的实现基础,数据库中 Insert、Delete、Update 等 DML 操作以及 Create TABLE 等 DDL 操作最终都会体现为对某一个或者多个物理数据页的修改,因此备库通过重做 REDO
日志可以与主库数据保持一致。

2.4 REDO
日志传输
主备库之间的 REDO
日志传输,以日志包 RLOG_PKG 为单位,主库通过 MAL 系统发送 REDO
日志到备库。各种不同数据守护类型的区别,就在于主库日志包 RLOG_PKG 的发送时机,以及备库收到 REDO
日志后的处理策略。日志包头存放日志包的自描述信息,包括日志包序号、包长度、LSN 信息、加密压缩信息等。日志包体存放若干条 PTX 日志。包尾附加信息存放包内的日志并行度信息、DSC 的依赖信息、HASH 校验值,属于变长的自描述信息。主库以日志包为单位向备库发送日志,备库在收到日志后,需要进行一系列的连续性校验,因此目前一条消息中仅包含一个日志包(系统内部会尽可能的将已产生的日志合并成一个体积较大的日志包,而非 N 个日志包,以减少通信代价和日志刷盘代价)。
2.5 REDO
日志重演
REDO
日志重演的过程,就是备库收到主库发送的 REDO
日志后,在物理数据页上,重新修改数据的过程。REDO
日志重演由专门的 REDO
日志重演服务完成,重演服务严格按照 REDO
日志产生的先后顺序,解析 REDO
日志、修改相应的物理数据页,并且重演过程中备库会生成自身的 REDO
日志写入联机日志文件。
2.6 守护进程
守护进程 (dmwatcher) 是数据守护系统的核心工具,监控数据库实例的运行状态和主备库数据同步情况,在出现故障时启动各种处理预案。守护进程是各种消息的中转站,接收数据库实例、其他守护进程、以及监视器发送的各种消息;同时,守护进程也会将收到的数据库实例消息转发给其他守护进程和监视器。守护进程必须和被守护的数据库实例部署在同一台机器上。
2.7 监视器
监视器 (dmmonitor) 用来监控守护系统内守护进程、数据库实例信息,执行用户输入命令、监控实例故障、实现自动切换等。监视器一般配置在数据库实例和守护进程以外的机器上。
● 监视数据守护状态
● 状态信息确认(配置为故障自动切换的确认监视器的情况下)
● 管理数据守护状态
● 发起故障自动接管命令
● 监视器类型
├ 0:监控模式(dmmonitor.ini: MON_DW_CONFIRM=0)--除确认监视器外其他节点配置为 0
└ 1:确认模式(dmmonitor.ini: MON_DW_CONFIRM=1)--只有确认监视器才配置为 1
▶ 区别:确认监视器除了具备监控模式监视器所有功能外,还具有状态确认和自动接管两个功能。
3 数据守护系统特性
完整功能的主库 活动的备库 多重数据保护 高可用性 多种守护模式 多种守护类型 故障自动重连 故障库自动重加入 历史数据自动同步 自动负载均衡 滚动升级 灵活的搭建方式 完备的监控工具 完善的监控接口 丰富的守护命令 支持 DMDSC 守护
4 归档介绍
达梦数据库提供多种归档模式,覆盖从基础备份到高可用集群的多样化需求。以下为各模式的核心要点及对比:
4.1. 本地归档(Local)
定义:
将 Redo 日志(数据库操作记录)直接写入本地磁盘归档文件。
特点:
基础备份:仅用于本地恢复,无跨节点容灾能力。 零配置依赖:开箱即用,适合单机环境或简单数据保护场景。
4.2. 远程归档(Remote Archive)
适用场景:
专为 DMDSC 集群设计,实现多节点间归档日志共享。
实现逻辑:
双向共享:节点 A 远程目录指向节点 B 本地目录(需共享存储如 ASM),反之亦然。 透明访问:集群内任意节点可无缝访问其他节点归档日志。
核心用途:跨节点数据恢复(如 DMRMAN 工具操作)。 主备库异步同步时,控制节点需读取从节点日志。
4.3. 实时归档(Realtime)
流程:
主库生成 Redo 日志(RLOG_PKG)后立即发送备库(写入本地前)。 备库接收标记为 KEEP_RLOG_PKG,并立即响应主库(无需等待重演)。 主库确认备库接收后,再写入本地联机日志文件。
特点:
零延迟同步:主备数据强一致,适合实时主备架构。 配置限制:仅主库生效,支持 1~8 个实时备库。
4.4. 即时归档(Timely)
两种模式:
| 模式 | |||
|---|---|---|---|
| 事务一致模式 | |||
| 高性能模式 | |||
| 触发时机 |
主库写入本地日志后通过 MAL 系统发送备库。
配置选项:dmarch.ini
中通过ARCH_WAIT_APPLY
设置(默认 1 为事务一致模式)。
事务一致模式 主库事务提交触发 Redo 日志刷盘和即时归档,备库收到主库发送的 Redo 日志,并重演完成后再响应主库。主库收到备库响应消息后,再响应用户的提交请求。事务一致模式下,同一个事务的 SELECT 语句无论是在主库执行,还是在备库执行,查询结果都满足 READ COMMIT 隔离级要求。
高性能模式 与实时归档一样,备库收到主库发送的 Redo 日志后,马上响应主库,再启动日志重演。高性能模式下,备库与主库的数据同步存在一定延时(一般情况下延迟时间非常短暂,用户几乎感觉不到),不能严格保证事务一致性。
事务一致模式下,主备库之间严格维护事务一致性,但主库要等备库 Redo 日志重演完成后,再响应用户的提交请求,事务提交时间会变长,存在一定的性能损失。高性能模式则通过牺牲事务一致性获得更高的性能和提升系统的吞吐量。用户应该根据实际情况,选择合适的即时归档模式。
4.5. 异步归档(Async)
运行机制:
定时触发:由主/备库定时器定期扫描本地归档目录,根据异步备库的 KEEP LSN 信息发送 Redo 日志。 级联扩展:异步备库可继续作为源库配置下级异步备库,形成级联架构。
特点:灵活部署:支持级联,适合多层级容灾。 配置限制: 主库或 Standby 模式库最多配置 8 个异步备库。 Normal 模式下异步备库自动失效。
4.6. 同步归档(Sync)
流程:
主库将 Redo 日志写入本地并刷盘。 立即发送备库,备库接收后加入重演队列并立即响应主库(不等待重演完成)。
特点:
日志同步优先:确保备库接收日志,但不保证实时一致性。 性能平衡:相比实时归档,减少主库等待时间,吞吐量更高。 配置限制:主库支持 1~8 个同步备库。
4.7. 归档对比
达梦数据库归档类型的核心差异,涵盖以下关键维度:
归档模式对比表
| 对比项 | 本地归档 | 实时归档 | 即时归档 | 异步归档 | 同步归档 | 远程归档 |
|---|---|---|---|---|---|---|
| 库数量 | ||||||
| 通过 MAL 传递数据 | ||||||
| 归档时机 | 主库写入本地前 | 主库写入本地后 | 主库刷盘后 | |||
| 数据来源 | ||||||
| 失败处理 | 2. 硬盘损坏:强制停机 | |||||
| 响应时机 | 高性能模式:收到立即响应 | 事务一致模式 高性能模式:收到立即响应 | ||||
| 源库模式 | ||||||
| 目标库模式 | ||||||
| 数据一致性 | ||||||
| 适用场景 |
4.8. 总结
核心差异点:
强一致性:实时归档 > 即时归档(事务一致模式) > 同步归档。 高吞吐量:异步归档 > 同步归档 > 即时归档(高性能模式)。 实时归档最早(主库写入本地前),同步归档次之(主库刷盘后),即时归档再次(主库写入本地后),异步归档最晚(定时触发)。 归档触发时机是区分模式的核心指标: 一致性 vs 性能: 失败处理策略:
本地归档风险最高(硬盘损坏直接停机),实时/即时归档通过 Suspend
机制保护数据完整性,异步归档依赖重试机制(容错性最低)。扩展能力:
异步归档支持级联架构,适合多层级容灾;远程归档依赖共享存储,专为 DMDSC
集群设计。配置灵活性:
即时归档提供两种子模式(事务一致/高性能),用户需根据业务需求主动选择;其他模式行为固定。
5 实时主备
实时主备系统由主库、实时备库、守护进程和监视器组成。通过部署实时主备系统,可以及时检测并处理各种硬件故障、数据库实例异常,确保持续提供数据库服务。实时主备系统主要包括以下功能:
实时数据同步
主备库通过实时归档完成数据同步,实时归档要求主库将 RLOG_PKG
发送到备库后,再将 RLOG_PKG
写入本地联机 REDO
日志文件。但要注意的是,备库确认收到主库发送的 REDO
日志,并不保证备库已经完成重演这些 REDO
日志,因此主备库之间的数据同步存在一定的时间差。

主备库切换
主备库正常运行过程中,可以通过监视器的 Switchover
命令,一键完成主备库角色转换。主备库切换功能可以确保在软、硬件升级,或系统维护时,提供不间断的数据库服务。
自动故障处理
备库故障,不影响主库正常提供数据库服务,守护进程自动通知主库修改实时归档为 Invalid
状态,将实时备库失效。
自动数据同步
备库故障恢复后,守护进程自动通知主库发送归档 REDO 日志,重新进行主备库数据同步。并在历史数据同步后,修改主库的实时归档状态为 Valid,恢复实时备库功能。备库接管后,原主库故障恢复,守护进程自动修改原主库的模式为 Standby
,并重新作为备库加入主备系统。
备库接管
主库发生故障后,可以通过监视器的 Takeover
命令,将备库切换为主库,继续对外提供服务。如果配置为自动切换模式,确认监视器可以自动检测主库故障,并通知备库接管,这个过程不需要人工干预。
备库强制接管
如果执行 Takeover
命令不成功,但主库可能由于硬件损坏等原因无法马上恢复,为了及时恢复数据库服务,DM 提供了 Takeover Force
命令,强制将备库切换为主库。但需要由用户确认主库故障前,主库与接管备库的数据是一致的(主库到备库的归档是 Valid
状态),避免引发守护进程组分裂。
读写分离访问
在备库查询的实时性要求不高的条件下,实时主备也可以配置接口的读写分离属性访问,实现读写分离功能特性。
6 DMDSC
数据守护
DMDSC
(数据共享集群)支持多个数据库实例同时访问、修改保存在共享存储中的数据,能够提供更高的数据库可用性和事务吞吐量。但由于数据是保存在共享存储上,当出现存储失效等故障时,数据库服务将会中断。
DM 数据守护包含多个数据库,主库和备库部署在不同的机器上,数据分别保存在各自的存储上,主库传递 Redo 日志到备库,备库重演 Redo 日志实现数据同步。因此,DM 数据守护在容灾(特别是异地容灾)方面具有明显的优势。为了进一步提高 DMDSC
集群的数据安全性,以及系统的可用性,DM 提供了 DMDSC
集群数据守护功能。
DMDSC
集群数据守护功能与单节点数据守护保持一致,支持故障自动切换,支持实时归档与读写分离集群。支持 DMDSC
集群的守护,DMDSC
(主)和 DMDSC
(备)、DMDSC
(主)和单节点(备)、单节点(主)和 DMDSC
(备)相互之间都可以作为主备库的数据守护。
以下示例为 DMDSC
和单节点互为主备的守护系统结构简图:

总体原则说明:
DMDSC
集群各个节点分别部署守护进程(dmwatcher)。DMDSC
集群数据库控制节点的守护进程,称为控制守护进程,普通节点的守护进程称为普通守护进程,如果控制节点发生变化,则控制守护进程也相应变化。守护进程会连接 DMDSC
集群所有实例,但只有控制守护进程会发起 OPEN、故障处理、故障恢复等各种命令。普通守护进程不处理用户命令,但接收其他库的控制守护进程消息。主备实时同步数据时, DMDSC
集群主库各个节点将各自产生的联机日志发送到备库控制节点(重演节点)进行重演,备库普通节点不接收日志。
4 总结
以上内容是个人针对学习情况所做的总结。若将其应用于生产环境,强烈建议预先做好相关测试工作。
往期分享
安装部署
1.分享一个以前搭建主备集群遇到的一个路径乱码案例
2.给大家分享如何标准化部署达梦单机环境
3.DM 达梦数据库中大写敏感介绍分享
4.达梦 DSC 集群+DW 备库部署实战:高可用架构搭建指南
数据迁移
1.分享工作中数据迁移的实用技巧与方法
2.Oracle 迁移 DM 数据库实践
3.SQLark 迁移实践分享(oracle-达梦数据库)
4.年过完了,SQLark 3.3 发版了!连接分组,断点续迁,顺滑建表,数据筛选,导出结构这些都有!)
SQL 调优
1.DM 传统行业 SQL 优化案例分享
2.DM 数据库 SQL 优化案例分享
3.如何查询 DM 数据库缓存执行计划与清理
4.使用 ob_tools 包收集分析 oceanbase 数据库 oracle 租户缓慢 sql 语句
5.使用 format_obproxy_digest_log 工具分析 obproxy 网络层耗时 SQL
6.DM 数据库回表优化案例
7.SQL 优化案例分享
8.DM SQL 关联列 like 优化案例
9.达梦数据库 SQL 关联列 like 使用 hint 方式优化案例
工具使用与日常处理
1.DataGrip 访问国产数据库_datagrip 连接国产数据库
2.如何使用 dbeaver 连接达梦数据库
3.更新大字段提示-2201 无效的对象问题
4.DM7 读写分离部署问题总结
5.DM7 读写分离集群备库数据不同步问题处理
6.达梦数据库 DISQL 工具部署及使用技巧
7.达梦数据库日常巡检方法分享
8.如何查询达梦数据库缓存执行计划与清理
9.达梦数据库运维工具分享
10.东方通中间件环境中如何部署达梦企业管理工具(DEM)
11.达梦 dmdbchk 使用秘籍:掌握 DM 数据库检查工具的功能与参数
12.ET 工具快速上手:从入门到精通的使用步骤
13.达梦数据库 SQL 日志详解:关键概念、功能及实践方法
14.搞懂达梦数据库 SQL 日志使用延伸,这些方法超实用!




