DMDSC概述及关键技术

一、概述

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

DMDSC 集群主要由数据库和数据库实例、共享存储、DMASM 或 DMASM 镜像、本地存储、通信网络、集群控制软件 DMCSS、集群监视器 DMCSSM 组成。DMDSC 集群最多支持 8 个数据库实例节点。下图展示了一个两节点的 DMDSC 集群系统结构图。

1.1 系统特性

(1)高可用性:只要集群中有一个活动节点,就能正常提供数据库服务。此外,当出现磁盘损坏或数据丢失时,既可以利用其他镜像副本继续提供数据库服务,又可以使用其他镜像副本进行数据恢复。

(2)高吞吐量:多个节点同时提供数据库服务,有效提升集群的整体事务处理能力。

(3)负载均衡:一方面,通过巧用服务名,用户的连接请求被平均分配到集群中的各个节点,确保连接负载平衡;另一方面,条带化技术可保证写入的数据均匀分布到磁盘组内的不同磁盘中,实现数据负载均衡。

1.2 组成

DMDSC集群主要由以下部分组成:

1.2.1 数据库和数据库实例

1.2.2 共享存储

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

(1)共享存储最少挂四个盘,即:

voting disk:进程的通知,故障转移

dcr disk:集群的配置信息,故障信息

Group log:日志盘,最小不少于4G,否则会引起后面启动报错

Group data:数据文件盘

(2)DMASM是一个专用的分布式文件系统,可向用户提供更加便捷的DSC集群数据库文件管理方案,以下主要通过其部件来说明DMASM的功能特点:

DMASM磁盘与文件管理:DMASM文件系统将物理磁盘格式化后,变成可识别、可管理的 DMASM 磁盘,再通过DMASM 磁盘组将一个或者多个 DMASM 磁盘整合成一个整体提供文件服务。

dmasmsvr服务器:提供DMASM服务,启动时会扫描/dev/raw路径下的所有裸设备,构建DMASM磁盘组和DMASM文件系统,实例间通过MAL系统进行信息和数据传递。

dmasmapi接口:用户可以通过调用DMASMAPI接口,访问、操作DMASM文件。

dmasmcmd初始化工具:DMASM文件系统初始化工具,用于格式化裸设备为DMASM磁盘,并初始化DCR Disk和Voting Disk。

dmasmtool管理工具:提供了一套linux文件操作命令,用于管理DMASM文件。

1.2.3 本地存储

用来保存配置文件,包括记录数据库实例的配置信息文件,本地归档日志、远程归档日志。

1.2.4 通信网络

分为内部网络和外部网络,内部网络如MAL链路,用于数据库实例之间交换信息和数据,以及网络心跳检测等用途。公共网络则用于对外提供数据库服务。

1.2.5 集群控制软件DMCSS

定时从被监控对象voting disk读取被监控对象的信息,检查被监控对象的状态变化,启动相应处理流程。

1.3 其他一些基本概念

1.3.1 集群和集群组

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

集群又称为集群组。集群组的概念在配置 DMDCR_CFG.INI 文件中使用,用于配置一个集群中的组内成员节点的公用和专用信息。DMDSC 集群,DMCSS 集群和 DMASM 集群的集群组类型分别为 DB、CSS 和 ASM。

1.3.2 DMDSC 集群

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

1.3.3 DM 自动存储管理器

DM 自动存储管理器(DM Auto Storage Manager,简称 DMASM)是一个专用用来为块设备管理文件的分布式文件系统。使用 DMASM 文件系统可以灵活地在块设备上创建、删除、扩展、截断文件,不用担心空间不足(可以通过在线增加块设备的磁盘来扩展空间)或空间浪费;不用考虑文件个数限制;可以方便地查看空间使用情况。

DMDSC 支持多个节点同时访问、修改 DMASM 中的数据文件。

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

DMDSC 集群中若配置 DMASM,则要求 DMASM 站点数和 DMCSS 站点数一致,且只能存在一个 DMCSS 组和一个 DMASM 组。

1.3.4 DM 集群同步服务

DM 集群同步服务(DM Cluster Synchronization Services,简称 DMCSS)是一款集群控制软件,是 DMDSC 集群应用的基础。DMCSS 专门负责监控集群中各个节点的运行状态,主要功能包括集群环境中节点的启动、故障处理、节点重加入等操作。

每个 DMDSC 集群或 DMASM 集群节点都必须配置一个 DMCSS 服务。这些 DMCSS 服务又共同构成一个 DMCSS 集群。单节点应用时,可以不配置 DMCSS。

1.3.5 DM 集群监视器

DM 集群监视器(DM Cluster Synchronization Services Monitor,简称 DMCSSM)用来监控整个集群的状态信息。

DMCSSM 与 DMCSS 相互通信,从 DMCSS 处获取整个集群系统的状态信息。DMCSSM 提供一系列管理维护集群的命令。

配置了 DMCSS 的集群中,可配置 0~10 个 DMCSSM。为了防止硬件损坏导致 DMCSSM 和其他服务器同时故障,建议用户将 DMCSSM 和其他服务器分开放置,DMCSSM 可单独放置在一台机器上。

1.3.6 心跳机制

DMCSS 的心跳机制(Heartbeat)是通过 VOTE 磁盘(非镜像环境下)或 DCRV 磁盘(镜像环境下)的 Disk Heartbeat 实现。更多关于 VOTE 磁盘的介绍请参考 10 DMASM 介绍。更多关于 DCRV 磁盘的介绍请参考 11 DMASM 镜像介绍

心跳机制有最大时延,只有超过最大时延,才认为监测对象故障。

1.3.7 MAL 链路

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

1.3.8 共享内存

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

二、关键技术

DMDSC 是一个共享存储的数据库集群系统。多个数据库实例同时访问、修改同一个数据库,必然会带来全局并发问题。DMDSC 集群基于 DM 单节点数据库管理系统,改造了 Buffer 缓冲区、事务系统、封锁系统和日志系统等,以适应数据共享集群并发访问控制要求。同时,引入缓存交换技术,提升数据在节点间的传递效率。

2.1 事务管理:确保操作“要么全做,要么全不做”

DMDSC中的事务管理确保了数据库操作的原子性、一致性、隔离性和持久性(ACID特性)。事务是一系列数据库操作的集合,这些操作要么全部成功提交,要么全部失败回滚。DMDSC通过事务管理器来协调和管理事务的执行,包括事务的开始、提交、回滚以及故障恢复时的状态恢复。事务管理器还负责处理并发事务之间的冲突,确保数据的一致性和完整性。

想象您在银行办理转账,从账户A转100元到账户B。这个过程包括从A账户扣款和向B账户存款两个步骤。在DMDSC中,这两个步骤被看作是一个整体,称为事务。事务管理就是确保这两个步骤要么都成功完成,要么都失败回滚,不会出现只扣款不存款或只存款不扣款的情况。这样,您的钱就不会莫名其妙地消失或多出来。

2.2 封锁与并发控制:避免“多人同时改同一数据”的混乱

封锁管理(也称为并发控制)是DMDSC处理并发访问和数据一致性的关键机制。DMDSC采用多种封锁策略,如共享锁和排他锁,来控制对数据库资源的访问。共享锁允许多个事务同时读取同一数据,而排他锁则确保在事务修改数据时,其他事务无法访问该数据。此外,DMDSC还可能采用更复杂的封锁策略,如意向锁和粒度锁,来优化并发性能和减少锁争用。

在DMDSC中,可能有多个用户或程序同时访问和修改数据库中的数据。为了确保数据的正确性和一致性,DMDSC采用了封锁机制。就像您在图书馆借书时,如果别人已经借了您想借的书,您就得等别人还回来才能借。在DMDSC中,当一个用户或程序正在修改某个数据时,其他用户或程序就得等这个修改完成才能访问或修改这个数据。这样,就不会出现多人同时改同一个数据,导致数据混乱的情况。

2.3 闩管理:确保资源“有序使用,不冲突”

在DMDSC中,闩管理是一种内部资源管理机制,用于控制对数据库内部资源(如内存缓冲区、字典缓存等)的并发访问。闩管理通过为每种资源设置相应的闩来控制访问权限,确保资源的有序使用和避免资源冲突。当某个事务或进程需要访问某个资源时,它必须先获取相应的闩。如果闩已被其他事务或进程占用,则当前事务或进程必须等待直到闩被释放。

DMDSC中的闩管理就像是一个门卫,负责控制哪些用户或程序可以进入哪些区域(即访问哪些资源)。每个区域都有一个门卫,只有当门卫允许时,用户或程序才能进入。这样,就可以确保资源的有序使用和避免资源冲突。比如,当您在超市排队结账时,只有当前面的人结完账离开后,您才能到收银台结账。在DMDSC中,闩管理就是起到这样的作用。

2.4 缓存与数据交换:提高数据访问速度,减少“翻箱倒柜”

DMDSC中的缓存机制用于提高数据访问速度并减少磁盘I/O操作。每个数据库节点都有自己的缓存,用于存储最近访问的数据。当某个节点需要访问其他节点缓存中的数据时,DMDSC通过高效的网络通信协议和传输机制来实现数据交换。这种缓存与数据交换机制大大提高了数据访问的效率和性能。

DMDSC中的缓存就像是一个临时仓库,用于存放最近访问过的数据。当您再次需要这些数据时,就可以直接从缓存中获取,而不需要再到数据库中“翻箱倒柜”地查找。同时,DMDSC还支持多个节点之间的数据交换,就像多个仓库之间可以互相调货一样。这样,就可以大大提高数据访问的速度和效率。

2.5 重做日志与数据恢复:确保数据“丢了也能找回来”

重做日志是DMDSC中实现数据恢复和容错的关键技术。在事务执行过程中,DMDSC会记录所有对数据库所做的修改操作到重做日志中。当系统发生故障或崩溃时,DMDSC可以利用重做日志中的记录来恢复数据到故障发生前的状态。重做日志确保了数据的持久性和可恢复性。

在DMDSC中,每个事务的执行过程都会被记录下来,这些记录被称为重做日志。就像您在写日记时,会记录下每天发生的事情一样。如果某一天的数据丢失了或损坏了,就可以通过查看重做日志来恢复数据。这样,即使数据丢失了,也能找回来,确保数据的完整性和可靠性。

2.6 回滚与撤销管理:确保操作“错了能改回来”

回滚与撤销管理是DMDSC中支持事务回滚和保持数据一致性的重要机制。在事务执行过程中,DMDSC会记录所有修改操作的反向操作(即撤销操作)到回滚日志中。当事务失败或需要回滚时,DMDSC会按照回滚日志中的记录来撤销事务所做的所有修改操作。回滚与撤销管理确保了事务的原子性和一致性。

在DMDSC中,如果事务执行过程中出现了错误或需要取消某个操作,就可以通过回滚与撤销管理来撤销已经做出的修改。就像您在画画时,如果发现画错了,就可以用橡皮擦把错误的部分擦掉一样。在DMDSC中,回滚与撤销管理就是起到这样的作用,确保操作错了能改回来,保持数据的一致性和正确性。

社区地址:https://eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值