达梦提供四种集群/分布式方案,定位不同:
| 架构 | 数据组织方式 | 主要面向 |
|---|---|---|
| 数据守护 | 一主多备,日志复制 | 高可用、异地容灾、读写分离 |
| DMDSC | 共享存储 + 多实例单库 | 高并发 OLTP |
| MPP | 完全对等无共享 | 海量 OLAP |
| DMDPC | 计算存储分离三层 + RAFT | OLTP/OLAP 混合、弹性伸缩 |
四种架构的关系:DMDSC 与 MPP 是"共享存储"与"无共享"两条路线;DMDPC 是 MPP 思路的演进,引入元数据服务和 RAFT 自动高可用;数据守护是叠加在 MPP/DMDSC 之上的复制容灾层,与前二者维度不同,支持 MPP 主备、DMDSC 主备等形态。
数据守护基于 Redo 日志传输与重演。主库把产生的 Redo 日志(最小单位 RLOG_PKG)经 MAL 系统传到备库,备库重演保持同步。主库故障时备库接管,切换只需数秒,几乎不受数据规模影响。
支持四种形态:实时主备、MPP 主备、DMDSC 主备、读写分离集群。
| 组件 | 作用 |
|---|---|
| 主库 Primary | 提供读写服务,产生 Redo 日志 |
| 备库 Standby | 接收重演日志,可切换接管 |
| 守护进程 dmwatcher | 与被守护实例同机,监控、消息中转、执行切换 |
| 监视器 dmmonitor | 第三方机器,自动切换须确认监视器 MON_DW_CONFIRM=1 |
归档类型:实时(写联机日志前发送)、即时(写后发送)、异步、同步。KEEP_RLOG_PKG 用于备库暂存日志不立即重演。
主备松耦合,主备各自独立存储,适合异地容灾、硬件故障快速接管、读写分离。相比备份还原,恢复速度快几个数量级。也支持实时主备、MPP 主备、DMDSC 主备、读写分离四种形态。
多实例(最多 8 节点)、单数据库的共享存储集群。多个实例同时读写同一份数据,数据文件、控制文件仅一份放在共享存储上。
| 组件 | 作用 |
|---|---|
| DMSERVER | 实例 |
| DMASM | 自动存储管理,管理共享存储的分布式文件系统 |
| DMCSS | 集群同步服务,节点启动、故障处理、控制节点选举,靠 VOTE/DCRV 磁盘心跳 |
| DMCSSM | 集群监视器 |
缓存交换(Buffer Swap)、全局/局部锁(GLS/LLS、GBS/LBS)、GTV/LTV 协调多实例并发访问同一数据页。同一数据页的 LSN 必须全局递增(不同页不要求),DMDSC 全局日志可能 LSN 重复,控制节点按 LSN 排序重做。
MAL 异常默认 HALT,节点号大的保留小的,可用 DMDCR_LINK_CHECK_IP 指定第三方仲裁。
相比双机热备,DMDSC 故障处理只重做故障节点日志,且多数页已在缓冲区,切换更快。
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 文件系统,多套会导致启动失败。
高并发 OLTP,需要高吞吐、负载均衡和快速故障切换。单节点故障不影响其他实例继续提供服务。
完全对等、无共享架构。多个实例组成并行计算网络,数据按分布列打散到各 EP(执行节点,最多 1024)并行计算,无主控节点。
五种方式:哈希、随机、复制、范围、LIST。哈希分布适合等值连接(常用连接键应作哈希分布列),复制分布适合小表广播,范围/LIST 适合按范围查询。范围/LIST 分布要求分布列与取值列表一致、实例名不重复。
随机分布表不支持 UNIQUE 索引。不指定 DISTRIBUTE 默认随机分布,易被忽略导致连接查询性能差。
MAL 系统负责节点间通信,涉及 MPP GATHER、COLLECT、DISTRIBUTE、BROADCAST、SCATTER 等操作符。
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 客户端/本地分发。
TB/PB 级数据仓库的 OLAP 分析,成本低、性能高。不适合高并发 OLTP——网络是首要瓶颈,节点并非越多越好,内网建议千兆/万兆,优化原则是减少节点间通信。
计算与存储分离的三层架构:
| 组件 | 作用 |
|---|---|
| SP | 计划生成节点,无状态,可多、可伸缩、可灰度升级 |
| BP | 数据存储节点,可 BP/BS 模式、多副本 |
| MP | 元数据服务器,全局唯一,DDL 集中执行,可多副本 |
多副本基于 RAFT 协议(LEADER/FOLLOWER/CANDIDATE/LEARNER,奇数节点,自动选主),不依赖守护进程和监视器。支持 PB 级存储、最多 1024 组、4096 实例、9 副本。
以分区为单位分布,同一分区同一 BP,分区列即分布列。分布式事务用两阶段提交(SP 协调、BP 参与)。
初始化指定 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)。
OLAP/OLTP 混合、大数据、动态伸缩(两地三中心)。
MPP 中"分区"与"分布"是两个概念:分布是把数据打散到各 EP,分区是 EP 内部再分。DMDPC 中二者是同一概念,分区列即分布列。这是二者最本质的差异。
| 架构 | 高可用机制 |
|---|---|
| 数据守护 | 日志复制 + 监视器切换 |
| DMDSC | 共享存储 + DMCSS |
| MPP | 对等无共享,建议结合数据守护 |
| DMDPC | RAFT 多副本自动选主 |
MPP 完全对等无主控;DMDPC 引入全局唯一的元数据服务器 MP,靠奇数(≥3)副本保高可用。
| 需求 | 架构 |
|---|---|
| 单机高可用、异地容灾 | 数据守护 |
| 高并发 OLTP、多实例负载均衡 | DMDSC |
| 海量数据分析 OLAP | MPP |
| OLTP/OLAP 混合、弹性伸缩 | DMDPC |
| 异地灾备 + 读写分离 | 数据守护(读写分离形态) |
选型要点:
文章
阅读量
获赞
