注册
达梦数据库主备集群原理介绍
技术分享/ 文章详情 /

达梦数据库主备集群原理介绍

DM_184112 2026/07/31 232 0 0

什么是 DM DataGuard

DM DataGuard 是达梦数据库 DM8 提供的原生主备高可用解决方案,基于重做日志(REDO 日志)传输实现主库数据向备库实时复制,构建一主多备架构。
核心目标:故障自动转移、数据冗余、业务持续可用,解决单点故障问题。
区别于 DSC 共享集群:DataGuard 不需要共享存储,主备服务器独立磁盘,属于非共享存储高可用架构,部署成本更低,是政企最常用的达梦高可用方案。

基础架构组成

一套标准 DataGuard 集群由三类节点组成:

  1. 主库(Primary)
    唯一可读写实例,业务所有 DML/DDL 操作全部在主库执行;生成 REDO 重做日志,向备库发送日志。
  2. 备库(Standby
    只读实例,不接收业务写入;接收主库传输的 REDO 日志,在本地重演日志,同步主库数据。
    备库分类:
  • 实时备库:实时接收、实时重演日志,数据延迟极低;
  • 异步备库:日志异步传输,允许短暂数据差;
  • 即时备库(实时同步模式专用)。
    3. 守护进程(dmwatcher)
    集群核心调度组件,每台数据库服务器必须部署。
    作用:监控本地数据库状态、集群通信、发起主备切换、故障检测、配合确认集群脑裂。
    4. 监视器(dmmonitor,可选组件)
    独立第三方节点,集群仲裁者。
    区分:
  • 无监视器:手动主备切换;
  • 部署监视器:支持自动故障切换(自动接管)。

数据同步核心原理

达梦主备同步本质:基于 REDO 重做日志传输与重演,不是 SQL 语句复制。
整体流程拆解:

  1. 业务在主库执行 INSERT/UPDATE/DELETE/DDL,数据库产生 REDO 重做日志;
  2. 主库守护进程捕获日志,通过 MAL 通信链路(TCP 协议)发送到所有备库;
  3. 备库接收 REDO 日志,写入本地归档日志文件;
  4. 备库启动日志重演进程,顺序执行日志里的数据变更,保持和主库数据一致;
  5. 主备之间持续心跳通信,守护进程实时探测链路状态。
    两种同步模式
    1)实时同步模式
    主库事务提交前,必须等待至少一台备库接收并持久化日志;
  • 优点:零数据丢失 RPO=0;
  • 缺点:备库故障、网络中断时,主库会阻塞所有业务提交;
  • 适用:金融、账务、核心交易系统,绝对不能丢数据。
    2)异步同步模式
    主库事务提交无需等待备库应答,先完成本地写入,后台异步发送日志;
  • 优点:不影响主库性能,网络波动不会阻塞业务;
  • 缺点:极端场景存在少量数据丢失风险;
  • 适用:绝大多数政企业务、后台管理系统。

主备切换机制

  1. 切换类型
    计划内切换
    人工主动切换:主库→备库降级为备机,备库升级为主库;
    场景:版本升级、服务器运维、硬件维护;无数据丢失,业务平滑切换。
    故障接管
    主库意外宕机(断电、系统崩溃),监视器判定主库无法恢复,自动将备库提升为主库对外提供服务;
    异步模式下存在极小概率数据丢失风险。
  2. 脑裂防护
    脑裂场景:网络中断,主库、备库互相看不见对方,两台实例都认为自己是主库,同时对外读写,造成数据分裂。
    达梦解决方案:
    引入独立监视器节点做仲裁;
    集群配置 DW_ERROR_TIME 故障判定超时;
    采用「多数派机制」,无法获得集群多数投票的节点强制关闭实例,杜绝双主运行。

关键配套组件:MAL 链路

MAL:达梦自研消息通信层,专门负责主备之间日志传输、守护进程心跳。

  • 独立 TCP 端口,推荐和业务数据库端口分离;
  • 支持一主多备,一台主库同时向 N 台备库并行推送日志;
  • MAL 链路中断后,恢复连通会自动补发缺失日志,自动追平数据,无需重建备库。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服