注册
集群架构学习笔记
专栏/技术分享/ 文章详情 /

集群架构学习笔记

wwwwww 2026/09/18 333 0 0
摘要

1. 概览

达梦提供四种集群/分布式方案,定位不同:

架构 数据组织方式 主要面向
数据守护 一主多备,日志复制 高可用、异地容灾、读写分离
DMDSC 共享存储 + 多实例单库 高并发 OLTP
MPP 完全对等无共享 海量 OLAP
DMDPC 计算存储分离三层 + RAFT OLTP/OLAP 混合、弹性伸缩

四种架构的关系:DMDSC 与 MPP 是"共享存储"与"无共享"两条路线;DMDPC 是 MPP 思路的演进,引入元数据服务和 RAFT 自动高可用;数据守护是叠加在 MPP/DMDSC 之上的复制容灾层,与前二者维度不同,支持 MPP 主备、DMDSC 主备等形态。

2. 数据守护

2.1 原理

数据守护基于 Redo 日志传输与重演。主库把产生的 Redo 日志(最小单位 RLOG_PKG)经 MAL 系统传到备库,备库重演保持同步。主库故障时备库接管,切换只需数秒,几乎不受数据规模影响。

支持四种形态:实时主备、MPP 主备、DMDSC 主备、读写分离集群。

2.2 组件

组件 作用
主库 Primary 提供读写服务,产生 Redo 日志
备库 Standby 接收重演日志,可切换接管
守护进程 dmwatcher 与被守护实例同机,监控、消息中转、执行切换
监视器 dmmonitor 第三方机器,自动切换须确认监视器 MON_DW_CONFIRM=1

归档类型:实时(写联机日志前发送)、即时(写后发送)、异步、同步。KEEP_RLOG_PKG 用于备库暂存日志不立即重演。

2.3 关键概念

  • OGUID:数据守护唯一标识码,组内所有库、守护进程、监视器必须一致;
  • MAL 系统:基于 TCP 的实例间内部通信机制,实现 Redo 日志传输;
  • 守护进程组:配置相同 OGUID 的两个或多个守护进程构成一个守护进程组。

2.4 适用场景

主备松耦合,主备各自独立存储,适合异地容灾、硬件故障快速接管、读写分离。相比备份还原,恢复速度快几个数量级。也支持实时主备、MPP 主备、DMDSC 主备、读写分离四种形态。

3. DMDSC

3.1 原理

多实例(最多 8 节点)、单数据库的共享存储集群。多个实例同时读写同一份数据,数据文件、控制文件仅一份放在共享存储上。

3.2 组件

组件 作用
DMSERVER 实例
DMASM 自动存储管理,管理共享存储的分布式文件系统
DMCSS 集群同步服务,节点启动、故障处理、控制节点选举,靠 VOTE/DCRV 磁盘心跳
DMCSSM 集群监视器

3.3 关键技术

缓存交换(Buffer Swap)、全局/局部锁(GLS/LLS、GBS/LBS)、GTV/LTV 协调多实例并发访问同一数据页。同一数据页的 LSN 必须全局递增(不同页不要求),DMDSC 全局日志可能 LSN 重复,控制节点按 LSN 排序重做。

MAL 异常默认 HALT,节点号大的保留小的,可用 DMDCR_LINK_CHECK_IP 指定第三方仲裁。

相比双机热备,DMDSC 故障处理只重做故障节点日志,且多数页已在缓冲区,切换更快。

3.4 配置与搭建

DMDSC 的搭建涉及三层组配置:dmdcr_cfg.ini 配 CSS/ASM/DB 三组(DCR_N_GRP=3、DCR_GRP_TYPE/NAME/N_EP、DCR_EP_NAME/HOST/PORT/SHM_KEY/SHM_SIZE、DCR_GRP_DSKCHK_CNT)。磁盘操作:create dcrdisk/votedisk/asmdisk → init dcrdisk。节点配 dmdcr.ini、dmasvrmal.ini、dmmal.ini、dm.ini(INSTANCE_NAME 必须等于 DCR_EP_NAME)。启动顺序:DMCSS → DMASMSVR → DMSERVER。

一台共享存储只能搭一套 DMASM 文件系统,多套会导致启动失败。

3.5 适用场景

高并发 OLTP,需要高吞吐、负载均衡和快速故障切换。单节点故障不影响其他实例继续提供服务。

4. MPP

4.1 原理

完全对等、无共享架构。多个实例组成并行计算网络,数据按分布列打散到各 EP(执行节点,最多 1024)并行计算,无主控节点。

4.2 数据分布

五种方式:哈希、随机、复制、范围、LIST。哈希分布适合等值连接(常用连接键应作哈希分布列),复制分布适合小表广播,范围/LIST 适合按范围查询。范围/LIST 分布要求分布列与取值列表一致、实例名不重复。

随机分布表不支持 UNIQUE 索引。不指定 DISTRIBUTE 默认随机分布,易被忽略导致连接查询性能差。

4.3 通讯

MAL 系统负责节点间通信,涉及 MPP GATHER、COLLECT、DISTRIBUTE、BROADCAST、SCATTER 等操作符。

4.4 配置与搭建

dm.ini 需设 INSTANCE_NAME、PORT_NUM、MAL_INI=1、MPP_INI=1、MAX_EP_SITES,各 EP 建库参数及部分 dm.ini 参数必须一致。dmmal.ini 各 EP 严格一致。dmmpp.ctl 由 dmmpp.ini 经 dmctlcvt TYPE=2 转换,各 EP 同一份。建表用 DISTRIBUTED BY HASH/RANGE/LIST 或 RANDOMLY/FULLY 指定分布方式。

dmfldr 做快速装载,MPP_CLIENT 客户端/本地分发。

4.5 适用场景

TB/PB 级数据仓库的 OLAP 分析,成本低、性能高。不适合高并发 OLTP——网络是首要瓶颈,节点并非越多越好,内网建议千兆/万兆,优化原则是减少节点间通信。

5. DMDPC

5.1 原理

计算与存储分离的三层架构:

组件 作用
SP 计划生成节点,无状态,可多、可伸缩、可灰度升级
BP 数据存储节点,可 BP/BS 模式、多副本
MP 元数据服务器,全局唯一,DDL 集中执行,可多副本

5.2 高可用

多副本基于 RAFT 协议(LEADER/FOLLOWER/CANDIDATE/LEARNER,奇数节点,自动选主),不依赖守护进程和监视器。支持 PB 级存储、最多 1024 组、4096 实例、9 副本。

5.3 数据分布

以分区为单位分布,同一分区同一 BP,分区列即分布列。分布式事务用两阶段提交(SP 协调、BP 参与)。

5.4 配置与搭建

初始化指定 DPC_MODE(SP/BP/MP,角色不可改)。节点信息用 SP_CREATE_DPC_INSTANCE、SP_MODIFY_DPC_INSTANCE、SP_ALTER_DPC_INSTANCE、SP_DROP_DPC_INSTANCE 注册到 MP。多副本配 RAFT 归档(ARCH_TYPE=RAFT)+ 本地归档,配 XMAL_HB_INTERVAL、RAFT_HB_INTERVAL、RAFT_VOTE_INTERVAL。

只读表 READ ONLY 优化(同构临时表 T$ROT)变分布式访问为本地访问。灰度升级加引流(SP_DPC_REBALANCE_SESSION)。

5.5 适用场景

OLAP/OLTP 混合、大数据、动态伸缩(两地三中心)。

6. 关键差异

6.1 分区与分布

MPP 中"分区"与"分布"是两个概念:分布是把数据打散到各 EP,分区是 EP 内部再分。DMDPC 中二者是同一概念,分区列即分布列。这是二者最本质的差异。

6.2 高可用机制

架构 高可用机制
数据守护 日志复制 + 监视器切换
DMDSC 共享存储 + DMCSS
MPP 对等无共享,建议结合数据守护
DMDPC RAFT 多副本自动选主

6.3 主控

MPP 完全对等无主控;DMDPC 引入全局唯一的元数据服务器 MP,靠奇数(≥3)副本保高可用。

7. 选型参考

需求 架构
单机高可用、异地容灾 数据守护
高并发 OLTP、多实例负载均衡 DMDSC
海量数据分析 OLAP MPP
OLTP/OLAP 混合、弹性伸缩 DMDPC
异地灾备 + 读写分离 数据守护(读写分离形态)

选型要点:

  1. 单机够用首选数据守护,部署和管理成本最低;
  2. 高并发事务型业务优先 DMDSC,共享存储带来快速切换;
  3. 海量分析型业务选 MPP,成本低、扩展好;
  4. 混合负载要弹性伸缩选 DMDPC,但要接受其功能限制。

8. 使用限制

  • DMDSC:定时器、作业、HUGE 表仅控制节点生效;不支持外部表;不能与 MPP 混用;一台共享存储只能搭一套 DMASM 文件系统。
  • DMDPC:不支持外部表、数组表、堆表全局索引、表级备份、联机还原;DDL 强制自动提交。
  • MPP:随机分布表不支持 UNIQUE 索引;不指定 DISTRIBUTE 默认随机分布,易被忽略导致连接查询性能差。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服