共享存储数据库集群
DMDSC 简介
DM 共享存储数据库集群的英文全称 DM Data Shared Cluster,简称 DMDSC。DM 共享存储数据库集群,允许多个数据库实例同时访问、操作同一数据库, 具有高可用、高性能、负载均衡等特性。 DMDSC 支持故障自动切换和故障自动重加入,某一个数据库实例故障后,不会导致数据库服务无法提供。
本章节主要介绍 DMDSC 集群的功能、概念、实现原理,并举例说明搭建过程和管理方法。阅读本章节可以帮助用户:
- 了解 DMDSC/DMCSS/DMASM 等集群相关概念。
- 了解 DMASM 分布式文件系统、 DMDSC 集群,以及基于 DMASM 的 DMDSC 集群配置过程和应用。
DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件。各个节点有自己独立的联机日志和归档日志。 这些文件就保存在共享存储上。
DMDSC 集群得以实现的重要基础就是共享存储。DM 支持的共享存储有两种:裸设备和 DMASM。这两种存储的区别在于后者在前者的基础上,部署并使用了 DMASM 文件系统。为了方便对裸设备上的磁盘或文件进行管理,推荐用户使用后者。
DMDSC 集群主要由数据库和数据库实例、共享存储、本地存储、通信网络、以及集群控制软件 DMCSS 组成。下面以部署了 DMASM 的 DMDSC 集群为例,展示 DMDSC 集群系统结构,如下图所示:
DMDSC 主要特点包括:
- 高可用性 只要集群中有一个活动节点,就能正常提供数据库服务。
- 高吞吐量 多个节点同时提供数据库服务,有效提升集群的整体事务处理能力。
- 负载均衡 用户的连接请求被平均分配到集群中的各个节点,确保各个节点的负载大致平衡。
DMDSC 使用的环境
部署 DMDSC 集群所用到的硬件和软件环境。
软硬件环境 | 环境介绍 |
---|---|
主机(2台) | 内存:2 GB 以上;网卡:双网卡;提供内部网络和外部网络服务;主机用于部署数据库实例 dmserver、DMCSS、DMASMSVR。 |
共享存储 | 两台主机可同时访问存储,可以划分为裸设备的磁盘。 |
操作系统 | Linux、Unix、Windows 等。 |
达梦数据库软件 | DM Database Server 64 V8 |
其他 DM 软件 | dmserver、 dminit、 dmasmcmd、 dmasmsvr、 dmasmtool、 dmcss、 dmcssm等 ;位于 DM 数据库安装目录 /dmdbms/bin |
DMDSC 实现原理
DMDSC 是一个共享存储的数据库集群系统。多个数据库实例同时访问、修改同一个数据库,因此必然带来了全局并发问题。DMDSC 集群基于单节点数据库管理系统之上,改造了 Buffer 缓冲区、事务系统、封锁系统和日志系统等,来适应共享存储集群节点间的全局并发访问控制要求。同时,引入缓存交换技术,提升数据在节点间的传递效率。
DMCSS 介绍
DMCSS (Dameng Cluster Synchronization Services) 达梦集群同步服务,使用 DMASM 集群或 DMDSC 集群都必须要配置 DMCSS 服务。在 DMASM 集群或 DMDSC 集群中,每个节点都需要配置一个 DMCSS 服务。这些 DMCSS 服务自身也构成一个集群,DMCSS集群中负责监控、管理整个 DMASM 集群和 DMDSC 集群的节点称为控制节点 (controlnode),其他 DMCSS 节点称为普通节点 (normal node)。DMCSS 普通节点不参与 DMASM 集群和 DMDSC 集群管理,当 DMCSS 控制节点故障时,会从活动的普通节点中重新选取一个 DMCSS 控制节点。
DMCSS 工作的基本原理是:在 Voting disk 中,为每个被监控对象 (dmasmsvr、dmserver、DMCSS) 分配一片独立的存储区域,被监控对象定时向 Voting Disk 写入信息(包括时间戳、状态、命令、以及命令执行结果等);DMCSS 控制节点定时从 Voting Disk 读取信息,检查被监控对象的状态变化,启动相应的处理流程;被监控对象只会被动的接收 DMCSS 控制节点命令,执行并响应。
DMCSS 主要功能包括:写入心跳信息、选举 DMCSS 控制节点、选取 DMASM/DMDSC 控制节点、管理被监控对象的启动流程、集群状态监控、节点故障处理、节点重加入等,DMCSS还可以接收并执行 DMCSSM 指令。
DMASM 介绍
DMASM (DM Auto Storage Manager) 是一个专用的分布式文件系统,使用 DMASM 自动存储管理方案,可以帮助用户更加便捷地管理 DMDSC 集群的数据库文件。DMASM 的主要部件包括:提供存储服务的裸设备、dmasmsvr 服务器、dmasmapi 接口、初始化工具 dmasmcmd 和管理工具 dmasmtool 等。
DMDSC 集群可以直接使用裸设备作为共享存储,存放数据库文件。但是,由于裸设备存在的一些功能限制,造成 DMDSC 集群在使用、-维护上并不是那么灵活、方便。裸设备的使用限制如下:
- 不支持动态扩展文件大小;在创建数据文件时,就必须指定文件大小,并且文件无法动态扩展。
- 数据文件必须占用整个裸设备盘,造成空间浪费
- 不支持类 linux 的文件操作命令,使用不方便
- 操作系统支持最大裸设备数目较小,无法创建足够的数据库文件
为了克服裸设备的这些使用限制, DM 专门设计了一个分布式文件系统 DMASM,来管理裸设备的磁盘和文件。 DMASM 提供了基本的数据文件访问接口,可以有效降低 DMDSC 共享存储的维护难度,DMASM 提供的主要功能包括:
- 分布式管理
支持多台机器并发访问 DMASM 磁盘和文件,提供全局并发控制。
- 磁盘组管理
支持创建和删除磁盘组,将裸设备格式化为 DMASM 格式,并由 dmasmsvr 统一管理;一个磁盘组可以包含一个或者多个 DMASM 磁盘;磁盘组支持在线增加 DMASM 磁盘,实现动态存储扩展。
- 文件管理
支持创建、删除、截断文件等功能;支持创建目录;支持动态扩展文件;文件可以存放在一个磁盘组的多个磁盘中,文件大小不再受限于单个磁盘大小。
- 完善、高效的访问接口
DMASM 文件系统将物理磁盘格式化后,变成可识别、可管理的 DMASM 磁盘,再通过DMASM 磁盘组将一个或者DMASM 磁盘整合成一个整体提供文件服务。
通过 dmasmapi 可以获得各种文件管理功能。
- 通用功能的管理工具
dmasmtool 提供一套类 Linux 的文件操作命令用于管理 DMASM 文件,降低用户学习、使用 DMASM 文件系统的难度。
- DMASM 原理
为了帮助用户更好的理解、使用 DMASM,本小节从 DMASM 磁盘与文件管理、DMASM redo日志、簇映射表等方面介绍 DMASM 原理。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nQkBfEUl-1609406467916)(…/asset/start/DMASM.jpg)]
DMASM 磁盘格式化以后,会逻辑划分为若干簇 (xtent),簇是管理 DMASM 磁盘的基本单位,DMASM 文件的最小分配单位也是簇。这些逻辑划分的簇根据其用途可以分为描述簇、inode 簇和数据簇。如下图所示:
创建、删除 DMASM 文件操作,在 DMASM 系统内部其实就是转换成修改、维护 inode AU 的具体动作。而扫描全局的 inode AU 链表就可以获取到磁盘组上所有的 DMASM 文件信息.