DMDSC 概述

本文档主要介绍DM共享存储集群的系统特性、基本概念、实现原理、主要功能,以及如何搭建DM共享存储集群并使用等。

1 引言

DM共享存储数据库集群的英文全称DM Data Shared Cluster,简称DMDSC。

DM共享存储数据库集群,允许多个数据库实例同时访问、操作同一数据库,具有高可用、高性能、负载均衡等特性。DMDSC支持故障自动切换和故障自动重加入,某一个数据库实例故障后,不会导致数据库服务无法提供。

本文主要介绍DMDSC集群的功能、概念、实现原理,并举例说明搭建过程和管理方法。

本手册可以帮助用户:

  • 了解DMDSC/DMCSS/DMASM等集群相关概念
  • 了解DMASM分布式文件系统、DMDSC集群,以及基于DMASM的DMDSC集群配置过程和应用

2 DMDSC概述

DMDSC集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件,这些文件保存在共享存储上。每个节点有自己独立的联机日志和归档日志,其中联机日志保存在共享存储上,归档日志可以保存在本地存储上也可以保存在共享存储上。

DMDSC集群得以实现的重要基础就是共享存储。DM支持的共享存储有两种:裸设备和DMASM。这两种存储的区别在于后者在前者的基础上,部署并使用了DMASM文件系统。为了方便对裸设备上的磁盘或文件进行管理,推荐用户使用后者。

DMDSC集群主要由数据库和数据库实例、共享存储、本地存储、通信网络、以及集群控制软件DMCSS组成。下面以部署了DMASM的DMDSC集群为例,展示DMDSC集群系统结构(图2.1)。

DMDSC系统结构图

图2.1 DMDSC系统结构图

数据库和数据库实例

数据库(Database)是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件等),保存在物理磁盘或文件系统中。

数据库实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存。通过数据库实例,可以操作数据库,一般情况下,我们访问、修改数据库都是通过数据库实例来完成的。

共享存储

DMDSC集群中,为了实现多个实例同时访问、修改数据,要求将数据文件、控制文件、日志文件保存在共享存储上。DMDSC支持使用裸设备或DMASM文件系统作为共享存储。

配置DMDSC集群需要的DCR、Voting disk也必须保存在共享存储上(目前仅支持裸设备存放DCR和Voting disk)。

本地归档日志也可以保存在共享存储上,不过这样会占用较为宝贵的共享存储资源。

本地存储

DMDSC集群中,本地存储用来保存配置文件(记录数据库实例配置信息的dm.ini、dmarch.ini、dmmal.ini),本地归档日志、远程归档日志。

通信网络

DMDSC集群中,网络分为内部网络和公共网络两个部分。实际应用中一般还存在服务器到共享存储的网络。内部网络用于数据库实例之间交换信息和数据,MAL链路使用的就是内部网络。公共网络用于对外提供数据库服务,用户使用公共网络地址登录DMDSC集群,访问数据库。

集群控制

集群控制是集群系统的重要组成部分。DMCSS就是一款集群控制软件,专门负责监控集群中各个节点的运行状态。DMCSS主要功能包括:管理集群的启动和关闭,控制节点故障处理,以及管理节点重加入流程。

2.1 系统特性

DMDSC的主要特点包括:

  • 高可用性 只要集群中有一个活动节点,就能正常提供数据库服务。
  • 高吞吐量 多个节点同时提供数据库服务,有效提升集群的整体事务处理能力。
  • 负载均衡 用户的连接请求被平均分配到集群中的各个节点,确保各个节点的负载大致平衡。

2.1.1 高可用性

DMDSC集群提供了一种达梦数据库高可用解决方案。当出现系统故障、硬件故障、或人为操作失误时,DMCSS检测故障、并自动将故障节点踢出集群,保证数据库服务的正常提供。

故障节点的用户连接会自动切换到活动节点,这些连接上的未提交事务将被回滚,已提交事务不受影响;活动节点的用户连接不受影响,正在执行的操作将被挂起一段时间,在故障处理完成后,继续执行。当DMCSS检测到故障节点恢复时,自动启动节点重加入流程,将恢复的故障节点重新加入DMDSC集群,将集群恢复到正常的运行状态。因此,通过部署DMDSC集群,可以在一定程度上避免由软、硬件故障引起的非计划停机,减少这些意外给客户带来的损失。

与同样使用共享存储的双机热备系统相比,DMDSC具有更快的故障处理速度。双机热备系统故障切换时,需要完整重做Redo日志,所有数据需要重新从磁盘加载;而DMDSC故障处理时,只需要重做故障节点的Redo日志,并且大部分数据页已经包含在处理节点的Buffer缓冲区中,不需要重新从磁盘加载。

2.1.2 高吞吐量

DMDSC集群中包含多个数据库实例,数据库实例访问独立的处理器、内存,数据库实例之间通过缓存交换技术提升共享数据的访问速度,每个数据库实例都可以接收并处理用户的各种数据库请求。

与单节点数据库管理系统相比,DMDSC集群可以充分利用多台物理机器的处理能力,支撑更多的用户连接请求,提供更高的吞吐量。与双机热备系统相比,DMDSC集群不存在始终保持备用状态的节点,不会造成硬件资源的浪费。

2.1.3 负载均衡

用户通过配置DM数据库连接服务名来访问DMDSC集群,可以实现节点间的自动负载均衡,用户的数据库连接请求会被自动、平均地分配到DMDSC集群中的各个节点。并且连接服务名支持JDBC、DPI、ODBC、DCI、.Net Provider等各种数据库接口。

2.2 基本概念

集群(Cluster)

是由两个或多个节点(服务器)构成的一种松散耦合的计算机节点集合,这个集合在整个网络中表现为一个单一的系统,并通过单一接口进行使用和管理。大多数模式下,集群中的所有计算机都拥有一个相同的名称,集群内任意一个系统都可以被所有的网络用户使用。每个集群节点都是运行其自己进程的独立服务器,因此每个节点都有自己的运算能力。这些进程间彼此通信进行协调,协同起来向用户提供应用程序、系统资源和数据以及计算能力。本书中涉及到的集群有三种:DMDSC集群,DMCSS集群和DMASM集群。

DMDSC集群

DMDSC集群由若干数据库实例(Instance)组成,这些实例间通过网络(MAL链路)连接,通过一个特殊的软件(DMCSS,集群同步服务)的协助,共同操作一个数据库。从外部用户视角来看,他们看到的只是一个数据库。数据文件、控制文件等文件在集群中只有一份,所有节点平等地使用这些数据文件。这份数据一般放在共享存储上,每个服务器通过光纤连接到共享存储上。

DMDSC支持使用裸设备或DMASM文件系统存放共享数据库文件。为了方便对裸设备上的磁盘或文件进行管理,DM推荐使用DMASM文件系统。

裸设备(Raw Device)

一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备,允许直接访问磁盘而不经过操作系统的高速缓存和缓冲器。因为使用裸设备避免了经过操作系统这一层,数据直接从磁盘到数据库服务器进行传输,所以使用裸设备对于读写频繁的数据库应用来说,可以有效提高数据库系统的性能。但是裸设备的使用有很多限制,比如Linux主机的每个磁盘最多能划分16个分区,去掉一个扩展分区后,可用的只有15个;每个分区只支持一个裸设备;每个裸设备只能对应一个文件、裸设备一经创建大小就固定、不能动态调整等。所以实际使用时可能会出现数据库文件空间不够或者空间浪费的情况,需要根据应用实际情况提前分配好裸设备大小。

DMASM(DM Auto Storage Manager)

是一个专用的分布式文件系统。支持多个节点同时访问、修改数据文件,并减少直接使用裸设备存在的诸多限制。DMASM文件系统把指定的裸设备打包管理,使用DMASM文件系统可以方便地创建、删除、扩展、截断文件,不用担心空间不足(空间不足可以通过增加磁盘扩展空间)或空间浪费;不用考虑文件个数限制;可以方便查看空间使用情况;可以在线通过增加裸设备的方式扩展总体使用空间。

DMASM不是一个通用的文件系统,只能通过dmasmapi接口访问。理论上通过dmasmapi接口可以存放任何文件,但在DMDSC集群中,一般只建议将需要在节点间共享访问的文件存在DMASM文件中,如数据文件、联机Redo日志文件、控制文件等。归档Redo日志文件、备份集文件也可以考虑保存到DMASM文件系统中,避免还原、恢复等操作时节点间的文件拷贝,简化备份、还原操作。其他的一些本地配置文件比如dm.ini等保存在本地磁盘中。

DMDSC集群中若配置DMASM,则要求DMASM站点数和DMCSS站点数一致,且只能存在一个DMCSS组和一个DMASM组。这些DMASM站点共同构成了一个DMASM集群。

DMCSS(DM Cluster Synchronization Services)

DMCSS是DM集群同步服务的简称,是DMDSC集群应用的基础,使用DMDSC集群或者DMASM集群都必须要配置DMCSS。DMCSS负责集群环境中节点的启动、故障处理、节点重加入等操作。

每个集群节点都需要有一个DMCSS服务。这些DMCSS服务又共同构成一个DMCSS集群。单节点应用时,可以不配置DMCSS。

DMCSSM(DM Cluster Synchronization Services Monitor)

DMCSSM(DM Cluster Synchronization Services Monitor)是DM集群监视器的简称。DMCSSM与DMCSS相互通信,获取并监控整个集群系统的状态信息。DMCSSM还提供了一系列的命令来管理、维护集群。

同一个集群中,允许最多同时启动10个监视器,一般建议将监视器放在独立的第三方机器上。

DCR(DM Clusterware Registry)

DCR是DM集群注册表的简称,用于存储、维护集群配置的详细信息,整个集群环境共享DCR配置信息,包括DMDSC、DMASM、DMCSS资源,包括实例名、监听端口、集群中故障节点信息等。DCR必须存储在集群中所有节点都可以访问到的共享存储中,并且只支持裸设备。在一个集群环境中只能配置一个DCR磁盘。

表决磁盘(Voting Disk)

表决磁盘记录了集群成员信息,DM集群通过Voting Disk进行心跳检测,确定集群中节点的状态,判断节点是否出现故障。当集群中出现网络故障时,使用Voting Disk来确定哪些DMDSC节点应该被踢出集群。表决磁盘还用来传递命令,在集群的不同状态(启动、节点故障、节点重加入等)DMCSS通过Voting Disk传递控制命令,通知节点执行相应命令。Voting Disk必须存储在集群中所有节点都可以访问到的共享存储中,并且只支持裸设备。在一个集群环境中只能配置一个表决磁盘。

集群中各实例启动时,通过访问DCR获取集群配置信息。被监控实例从Voting Disk读取监控命令,并向Voting Disk写入命令响应以及自身心跳信息;DMCSS也向Voting Disk写入自己的心跳信息,并从Voting Disk访问各被监控节点的运行情况,并将监控命令写入Voting Disk,供被监控实例访问执行。

HeartBeat(心跳机制)

DMCSS的心跳机制是通过Voting Disk的Disk Heartbeat。这种机制有最大时延,只有超过最大时延,才认为监测对象故障。

MAL链路

MAL系统是达梦数据库基于TCP协议实现的一种内部通信机制,具有可靠、灵活、高效的特性。使用DMASM文件系统的DMDSC集群中存在两套MAL系统,DMASM服务器之间配置一套MAL系统,dmserver服务器之间配置一套MAL系统。一旦MAL链路出现异常,DMCSS会进行裁定,并从集群中踢出一个节点,保证集群环境正常运行。

共享内存

共享内存是一种快速、高效的进程间通信手段。所谓共享内存,就是同一块物理内存被映射到多个进程的地址空间,进程A可以即时看到进程B对共享内存的修改,反之亦然。DMASM 服务器进程和DMASM客户端进程之间通过共享内存方式共享DMASM文件到实际磁盘的映射关系。

VIP

VIP(虚拟IP地址),是一个不与特定计算机或者计算机中的网络接口相连的IP地址。数据包被发送到这个VIP地址,但是所有的数据还是经过真实的网络接口。在集群环境中,应用通过VIP连接数据库服务器,实例故障后,把实例配置的VIP设置到其他活动节点(叫做IP漂移),这样应用可以不用修改配置,继续访问数据库服务。

2.3 使用说明

目前DMDSC在功能上与单机版DM相比存在一定限制,暂不支持下列功能:

  1. 支持定时器,但只有控制节点上配置的定时器生效。只支持脱机配置定时器,不支持联机配置
  2. 支持作业,但只有控制节点上支持执行作业
  3. 不支持HUGE表
  4. 不支持外部表
  5. 不支持类型别名相关操作
  6. 不支持table级别的space limit功能
  7. 不支持全文索引、词库相关操作
  8. 不支持安全版本
  9. 不支持DBMS_ALERT、DBMS_LOCK包
  10. 不支持数据复制
  11. 不能与MPP集群混合使用
  12. 不支持为表空间文件指定mirror_path
  13. 不支持闪回查询,不允许打开闪回功能
微信扫码
分享文档
扫一扫
联系客服