一、概述

1.1 系统特性
DMDSC 的主要特点包括:
- 高可用性:只要集群中有一个活动节点,就能正常提供数据库服务。此外,当出现磁盘损坏或数据丢失时,既可以利用其他镜像副本继续提供数据库服务,又可以使用其他镜像副本进行数据恢复。
- 高吞吐量:多个节点同时提供数据库服务,有效提升集群的整体事务处理能力。
- 负载均衡:一方面,通过巧用服务名,用户的连接请求被平均分配到集群中的各个节点,确保连接负载平衡;另一方面,条带化技术可保证写入的数据均匀分布到磁盘组内的不同磁盘中,实现数据负载均衡。
1.2 DMDSC 使用的环境
部署 DMDSC 集群所用到的硬件和软件环境。
软硬件环境 | 环境介绍 |
---|---|
主机(2 台) | 内存:2 GB 以上; 网卡:双网卡;提供内部网络和外部网络服务; 主机用于部署数据库实例 dmserver、DMCSS、DMASMSVR。 |
共享存储 | 两台主机可同时访问存储,可以划分为裸设备的磁盘。 |
操作系统 | Linux、Unix、Windows 等。 |
DM 数据库软件 | DM 8.0 及以上版本 |
其他 DM 软件 | dmserver、dminit、dmasmcmd、dmasmsvr、dmasmtool、dmcss、dmcssm 等; 位于 DM 数据库安装目录 …/dmdbms/bin 文件夹内 |
1.3 DMDSC 实现原理
DMDSC 是一个共享存储的数据库集群系统。多个数据库实例同时访问、修改同一个数据库,因此必然带来了全局并发问题。DMDSC 集群基于单节点数据库管理系统之上,改造了 Buffer 缓冲区、事务系统、封锁系统和日志系统等,来适应共享存储集群节点间的全局并发访问控制要求。同时,引入缓存交换技术,提升数据在节点间的传递效率。
1.4 基本概念
1.4.1共享存储
- DMDSC 集群中,为了实现多个实例同时访问、修改数据,要求将数据文件、控制文件、日志文件保存在共享存储上。
- DMDSC 使用 DMASM 文件系统管理共享存储设备。DMASM 有两个版本:一是早期版本,提供基础的磁盘组操作、文件操作等;二是 ASM 镜像版本,在早期版本的基础上增加了 ASM 文件镜像功能、文件条带化功能、DCRV 多磁盘功能等。两种版本的 ASM 文件互不兼容。
- 一台共享存储上,只能搭建一套 DMASM 文件系统,多套会导致系统启动失败。
1.4.2本地存储
- DMDSC 集群中,本地存储用来保存配置文件(记录数据库实例配置信息的 DM.INI、DMARCH.INI、DMMAL.INI)。
1.4.3通信网络
- DMDSC 集群中,网络分为对外服务网络、MAL 高速内网和高速共享存储网络三部分。
- 对外服务网络用于对外提供数据库服务,用户使用公共网络地址登录 DMDSC 集群,访问数据库。
- MAL 高速内网用于数据库实例之间交换信息和数据。MAL 链路即为 MAL 高速内网。
- 高速共享存储网络用于数据库实例和共享存储之间的通信。常见的两种方式为通过光纤通道实现或通过网络 SCSI 实现。
1.4.4集群和集群组
- 集群(Cluster)是由两个或多个节点(服务器)构成的一种松散耦合的计算机节点集合,这个集合在整个网络中表现为一个单一的系统,并通过单一接口进行使用和管理。大多数模式下,集群中的所有计算机都拥有一个相同的名称,集群内任意一个系统都可以被所有的网络用户使用。
- 本文中涉及到的集群有三种:DMDSC 集群,DMCSS 集群和 DMASM 集群。一个DMDSC 集群由多个 DMSERVER 服务器共同构成;一个 DMCSS 集群由多个 DMCSS 服务器共同构成;一个 DMASM 集群由多个 DMASM 服务器共同构成。
1.4.5 DMDSC 集群
DMDSC 集群由若干数据库实例组成,这些实例间通过网络(MAL 链路)连接,通过一个特殊的软件(DMCSS,集群同步服务)的协助,共同操作一个数据库。数据文件、控制文件等文件在集群中只有一份,所有节点平等地使用这些数据文件。这份数据存放在共享存储上,每个服务器通过高速共享存储网络连接到共享存储上。
1.4.6 DM集群同步服务(DMCSS)
达梦集群同步服务(Dameng Cluster Synchronization Services,简称 DMCSS)使用 DMASM 集群或 DMDSC 集群都必须配置 DMCSS 服务。在 DMASM 集群或 DMDSC 集群中,每个节点都需要配置一个 DMCSS 服务。这些 DMCSS 服务自身也构成一个集群,DMCSS 集群中负责监控、管理整个 DMASM 集群和 DMDSC 集群的节点称为控制节点(Control Node),其他 DMCSS 节点称为普通节点(Normal Node)。DMCSS 普通节点不参与 DMASM 集群和 DMDSC 集群管理,当 DMCSS 控制节点故障时,会从活动的普通节点中重新选取一个 DMCSS 控制节点。
DMCSS 工作的基本原理是:在 VOTE 磁盘(非镜像环境下)或 DCRV 磁盘(镜像环境下)中,为每个被监控对象(DMASMSVR、DMSERVER、DMCSS)分配一片独立的存储区域,被监控对象定时向 VOTE 或 DCRV 磁盘写入信息(包括时间戳、状态、命令、以及命令执行结果等);DMCSS 控制节点定时从 VOTE 或 DCRV 磁盘读取信息,检查被监控对象的状态变化,启动相应的处理流程;被监控对象只会被动的接收 DMCSS 控制节点命令,执行并响应。
DMCSS 主要功能包括:写入心跳信息、选举 DMCSS 控制节点、选取 DMASM/DMDSC 控制节点、管理被监控对象的启动流程、集群状态监控、节点故障处理、节点重加入等,DMCSS 还可以接收并执行 DMCSSM 指令。
1.4.7 DM自动存储管理器(DMASM)
DM 自动存储管理器(DM Auto Storage Manager,简称 DMASM)是一个专用的分布式文件系统。DMDSC 如果直接使用块设备作为共享存储来存放数据库文件,会因为块设备本身的诸多功能限制,造成 DMDSC 集群在使用、维护上并不是那么灵活方便。为克服块设备的这些使用限制,DM 专门设计了一款分布式文件系统 DMASM,来管理块设备的磁盘和文件。DMASM 的出现为 DMDSC 灵活管理和使用块设备提供了完美的解决方案。
使用 DMASM 自动存储管理方案,可以帮助用户更加便捷地管理 DMDSC 集群的数据库文件。DMASM 的主要部件包括:提供存储服务的块设备、DMASMSVR 服务器、DMASMAPI 接口、初始化工具 DMASMCMD 和管理工具 DMASMTOOL 等。
下图为一个部署了 DMASM 的 DMDSC 集群结构图。
1.4.8 DMASM 镜像
共享存储上的数据非常宝贵,为了保障这些数据的安全性和高可用性,达梦提供了 DMASM 镜像功能。镜像是 DMASM 的一个重要功能。
DMASM 镜像提供了多副本和条带化功能。多副本技术保证同一数据的多个副本会分别写入到不同的磁盘中。多个副本中只有一个作为主副本对外提供服务,其余副本均作为镜像副本。当主副本发生故障后,系统会从镜像副本中重新自动挑选一个继续提供服务。条带化技术可保证写入的数据均匀分布到磁盘组内的不同磁盘中,实现负载均衡。
DMDSC 采用配置镜像功能的 DMASM 管理的块设备作为共享存储,当出现磁盘损坏或数据丢失时,既可以利用其他镜像副本继续提供数据库服务,又可以使用其他镜像副本进行数据恢复。
下图为一个部署了 DMASM 镜像的 DMDSC 集群结构图。
1.4.9 DM 集群监视器(DMCSSM)
- DM 集群监视器(DM Cluster Synchronization Services Monitor,简称 DMCSSM)用来监控整个集群的状态信息。
- DMCSSM 与 DMCSS 相互通信,从 DMCSS 处获取整个集群系统的状态信息。DMCSSM提供一系列管理维护集群的命令。
- 配置了 DMCSS 的集群中,可配置 0~10 个 DMCSSM。为了防止硬件损坏导致 DMCSSM和其他服务器同时故障,建议用户将 DMCSSM 和其他服务器分开放置,DMCSSM 可单独放置在一台机器上。
1.4.10 心跳机制
- DMCSS 的心跳机制(Heartbeat)是通过 VOTE 磁盘(非镜像环境下)或 DCRV 磁盘镜像环境下)的 Disk Heartbeat 实现。
- 心跳机制有最大时延,只有超过最大时延,才认为监测对象故障。
1.4.11 MAL 链路
- MAL 系统是达梦数据库基于 TCP 协议实现的一种内部通信机制,具有可靠、灵活、高效的特性。使用 DMASM 文件系统的 DMDSC 集群中存在两套 MAL 系统,DMASM 服务器之间配置一套 MAL 系统,DMSERVER 服务器之间配置一套 MAL 系统。
- 两套 MAL 系统工作原理相同:一旦 MAL 链路出现异常,DMCSS 会进行裁定,并从集群中踢出一个节点,保证集群环境正常运行。
1.4.12 共享内存
- 共享内存是一种快速、高效的进程间通信手段。所谓共享内存,就是同一块物理内存被映射到多个进程的地址空间,进程 A 可以即时看到进程 B 对共享内存的修改,反之亦然。
- DMASM 服务器进程和 DMASM 客户端进程之间通过共享内存方式共享 ASM 文件到实际磁盘的映射关系。