达梦数据库学习之DMDSC

时间:2024-04-07 09:22:32

       学习DMDSC的搭建,搭建过程参考 DM8 数据守护与读写分离集群V4.0官方手册和共享集群手册进行搭建,手册是在Windows本地安装后,在安装路径下有一个doc目录,里面是关于DM数据库的一些帮助手册。这里主要讲讲dsc的实现原理,架构以及搭建过程中需要注意的地方和相应的配置文件等内容。
一、DMDSC 实现原理
       DMDSC 是一个共享存储的数据库集群系统。多个数据库实例同时访问、修改同一个数据库,因此必然带来了全局并发问题。DMDSC 集群基于单节点数据库管理系统之上,改造了 Buffer 缓冲区、事务系统、*系统和日志系统等,来适应共享存储集群节点间的全局并发访问控制要求。同时,引入缓存交换技术,提升数据在节点间的传递效率。
        DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件。各个节点有自己独立的联机日志和归档日志。这些文件就保存在共享存储上。
       DMDSC 集群得以实现的重要基础就是共享存储。DM 支持的共享存储有两种:裸设备和DMASM。这两种存储的区别在于后者在前者的基础上,部署并使用了 DMASM 文件系统。为了方便对裸设备上的磁盘或文件进行管理,推荐用户使用后者。DMDSC 集群主要由数据库和数据库实例、共享存储、本地存储、通信网络、以及集群控制软件 DMCSS 组成。

达梦数据库学习之DMDSC
二、系统特性
       1高可用性
       DMDSC 集群提供了一种达梦数据库高可用解决方案。当出现系统故障、硬件故障、或人为操作失误时,DMCSS 检测故障、并自动将故障节点踢出集群,保证数据库服务的正常提供。故障节点的用户连接会自动切换到活动节点,这些连接上的未提交事务将被回滚,已提交事务不受影响;活动节点的用户连接不受影响,正在执行的操作将被挂起一段时间,在故障处理完成后,继续执行。当 DMCSS 检测到故障节点恢复时,自动启动节点重加入流程,将恢复的故障节点重新加入 DMDSC 集群,将集群恢复到正常的运行状态。因此,通过部署DMDSC 集群,可以在一定程度上避免由软、硬件故障引起的非计划停机,减少这些意外给客户带来的损失。
       2.高吞吐量
       DMDSC 集群中包含多个数据库实例,数据库实例访问独立的处理器、内存,数据库实例之间通过缓存交换技术提升共享数据的访问速度,每个数据库实例都可以接收并处理用户
的各种数据库请求。与单节点数据库管理系统相比,DMDSC 集群可以充分利用多台物理机器的处理能力,支撑更多的用户连接请求,提供更高的吞吐量。与双机热备系统相比,DMDSC 集群不存在始终保持备用状态的节点,不会造成硬件资源的浪费。
       3.负载均衡
       用户通过配置 DM 数据库连接服务名来访问 DMDSC 集群,可以实现节点间的自动负载均衡,用户的数据库连接请求会被自动、平均地分配到 DMDSC 集群中的各个节点。并且连
接服务名支持 JDBC、DPI、ODBC、DCI、.Net Provider 等各种数据库接口。

三、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 等。
       DMASM 提供的主要功能包括:
       1).分布式管理
               支持多台机器并发访问 DMASM 磁盘和文件,提供全局并发控制。
       2).磁盘组管理
               支持创建和删除磁盘组,将裸设备格式化为 DMASM 格式,并由 dmasmsvr 统一管理;一个磁盘组可以包含一个或者多个 DMASM 磁盘;磁盘组支持在线增加 DMASM 磁盘,实现动态存储扩展。
       3).文件管理
               支持创建、删除、截断文件等功能;支持创建目录;支持动态扩展文件;文件可以存放在一个磁盘组的多个磁盘中,文件大小不再受限于单个磁盘大小。
       4).完善、高效的访问接口
               通过 dmasmapi 可以获得各种文件管理功能。
       5).通用功能的管理工具
               dmasmtool提供一套类Linux的文件操作命令用于管理DMASM文件,降低用户学习、使用 DMASM 文件系统的难度。

五、配置文件说明
        1 DMDCR_CFG.INI
        dmdcr_cfg.ini 是格式化 DCR 和 Voting Disk 的配置文件。配置信息包括三类:集群环境全局信息、集群组信息、以及组内节点信息。
        使用 dmasmcmd 工具,可以根据 dmdcr_cfg.ini 配置文件,格式化 DCR 和VotingDisk。
        集群环境全局信息
        DCR_VTD_PATH :Voting Disk 路径
        DCR_N_GRP :集群环境包括多少个 group,取值范围 1~16
        DCR_OGUID: 消息标识,dmcssm 登录 dmcss 消息校验用
        集群组信息
        DCR_GRP_TYPE: 组类型(CSS\ASM\DB)
        DCR_GRP_NAME: 组名,16 字节,配置文件内不可重复
        DCR_GRP_N_EP :组内节点个数 N,最大 16
        DCR_GRP_EP_ARR :组内包含的节点***,{0,1,2,…N-1}用户不能指定,仅用于从 DCR 磁盘 export 出来可见。
        DCR_GRP_N_ERR_EP: 组内故障节点个数,用户不能指定,仅用于从 DCR 磁盘 export 出来可见。
        DCR_GRP_ERR_EP_ARR: 组内故障节点***,用户不能指定,仅用于从 DCR 磁盘 export 出来可见。
        DCR_GRP_DSKCHK_CNT: 磁盘心跳机制,容错时间,单位秒,缺省 60S,取值范围 5~600节点信息,某些属性可能只针对某一类型节点,比如 SHM_KEY 只针对 ASM 节点有效
        DCR_EP_NAME :节点名,16 字节,配置文件内不可重复,DB 的节点名必须和 dm.ini 里的 INSTANCE_NAME 保持一致ASM 的节点名必须和 dmmal.ini 里的 MAL_INST_NAME 一致同一类型节点的 EP_NAME 不能重复
        DCR_EP_SEQNO: 组内序号,CSS/ASM 不能配置,自动分配DB 可以配置,0 ~ n_ep -1,组内不能重复,如不配置则自动分配
        DCR_EP_HOST: 节点 IP(CSS/ASM 有效,表示登录 CSS/ASM 的 IP 地址)对 DB 来说,是绑定 VIP 的网卡对应的物理 IP 地址CSS 中设置表示 DMCSSM 通过该 IP 连接 CSS;ASM 中设置表示 DB 通过该 IP 连接 ASM
        DCR_EP_PORT :节点 TCP 监听端口(CSS/ASM/DB 有效,对应登录 CSS/ASM/DB 的端口号),节点实例配置此参数,取值范围 1024~65534;发起连接端的端口在 1024~65535 之间随机分配特别对 DB 来说,DB 的 DCR_EP_PORT 与 dm.ini 中的 PORT_NUM 不一致时,DB 端口以 DCR_EP_PORT 为准。若要使用 VIP 功能,则不同服务器上配置的 DCR_EP_PORT 要相同
        DCR_EP_SHM_KEY: 共享内存标识,数值类型(ASM 有效,初始化共享内存的标识符),应为大于 0 的 4 字节整数
        DCR_VIP :节点 VIP(DB 有效,表示配置的虚拟 IP),需要和 DCR_EP_HOST 在同一网段。若需要取消 VIP 配置,仅需要将 DB 组的 DCR_VIP 和DCR_EP_HOST 删除即可
        DCR_CHECK_PORT DCR :检查端口号。检查实例是否活动的时候用,各实例不能冲突。实例配 置 此 参 数 , 取 值 范 围 1024~65535 ; DCR 发 起 连 接 的 端 口 在1024~65534 之间随机分配
        DCR_EP_SHM_SIZE: 共享内存大小,单位 M,(ASM 有效,初始化共享内存大小),取值范围10~1024
        DCR_EP_ASM_LOAD_PATH ASM :磁盘扫描路径,Linux 下一般为/dev/raw,文件模拟情况,必须是全路径,不能是相对路径
达梦数据库学习之DMDSC

        2. DMDCR.INI
        dmdcr.ini 是 dmcss、dmasmsvr、dmasmtool 等工具的输入参数。记录了当前节点***以及 DCR 磁盘路径。
        DMDCR_PATH 记录 DCR 磁盘路径
        DMDCR_SEQNO 记录当前节点序号(用来获取 ASM 登录信息)
        DMDCR_MAL_PATH 保存 dmmal.ini 配置文件的路径,仅对 dmasmsvr 有效
        DMDCR_ASM_RESTART_INTERVAL DMCSS 认定 DMASM 节点故障重启的时间间隔(取值 0~86400s),DMCSS 只负责和 DMDCR_SEQNO 节点号相等的DMASM 节点的故障重启,超过设置的时间后,如果 DMASM 节点的 active 标记仍然为 FALSE,则 DMCSS 会执行自动拉起。如果配置为 0,则不会执行自动拉起操作,默认为 60s。
        DMDCR_ASM_STARTUP_CMD DMCSS 认定 DMASM 节点故障后,执行自动拉起的命令串,可以配置为服务方式或命令行方式启动,具体可参考说明部分。
        DMDCR_DB_RESTART_INTERVAL DMCSS 认定 DMDSC 节点故障重启的时间间隔(取值 0~86400s),DMCSS 只负责和 DMDCR_SEQNO 节点号相等的DMDSC 节点的故障重启,超过设置的时间后,如果 DMDSC 节点的 active 标记仍然为 FALSE,则 DMCSS 会执行自动拉起。如果配置为 0,则不会执行自动拉起操作,默认为 60s。
        DMDCR_DB_STARTUP_CMD DMCSS 认定 DMDSC 节点故障后,执行自动拉起的命令串,可以配置为服务方式或命令行方式启动,具体可参考说明部分。
        DMDCR_AUTO_OPEN_CHECK 指定时间内如果节点实例未启动,DMCSS 会自动将节点踢出集群环境,单位为秒,取值范围应大于等于 30s。不配置此参数时表示不启用此功能。
达梦数据库学习之DMDSC
        3.dminit.ini 配置文件
        是 dminit 工具初始化数据库环境的配置文件。与初始化库使用普通文件系统不同,如果使用裸设备或者 ASM 文件系统,必须使用 dminit 工具的 control 参数指定 dminit.ini 文件。dminit 工具的命令行参数都可以放在 dminit.ini 中,比如db_name,auto_overwrite 等,dminit.ini 格式分为全局参数和节点参数。
        全局参数,全局有效:
        SYSTEM_PATH 初始化数据库存放的路径
       DB_NAME 初始化数据库名称
       MAIN MAIN 表空间路径
       MAIN_SIZE MAIN 表空间大小
       SYSTEM SYSTEM 表空间路径
       SYSTEM_SIZE SYSTEM 表空间大小
       ROLL ROLL 表空间路径
       ROLL_SIZE ROLL 表空间大小
       CTL_PATH DM.CTL 控制文件路径
       CTL_SIZE DM.CTL 控制文件大小
       LOG_SIZE 日志文件大小
       HUGE_PATH huge 表空间路径
       AUTO_OVERWRITE 文件存在时的处理方式
       DCR_PATH DCR 磁盘路径
       DCR_SEQNO 连接 DMASM 节点节点号
        节点参数,对具体节点有效
        CONFIG_PATH 配置文件存放路径
        PORT_NUM 节点服务器监听通讯端口号,服务器配置此参数,有效值范围(1024~65534),发起连接端的端口在 1024~65535之间随机分配
        MAL_HOST 节点 MAL 系统使用 IP
        MAL_PORT MAL 监听端口,用于数据守护、DSC、MPP 等环境中各节点实例之间 MAL 链路配置,监听端端口配置此参数,范围1024~65534,发起连接端的端口在 1024~65535 之间随机分配
        LOG_PATH 日志文件路径
达梦数据库学习之DMDSC
        4.MAL 系统配置文件(DMMAL.INI、DMASVRMAL.INI)
       dmmal.ini 和 dmasvrmal.ini 都是 MAL 配置文件。使用同一套 MAL 系统的所有实例,MAL 系统配置文件要严格保持一致。
       MAL_CHECK_INTERVAL:MAL 链路检测时间间隔,取值范围(0s-1800s),默认 30s,配置为 0 表示不进行 MAL 链路检测。
       MAL_CONN_FAIL_INTERVAL 判定 MAL 链路断开的时间,取值范围(2s-1800s),默认 10s
       MAL_LOGIN_TIMEOUT:MPP/DBLINK 等实例间登录时的超时检测间隔(3-1800),以秒为单位,默认 15s
       MAL_BUF_SIZE:单个 MAL 缓存大小限制,以兆为单位。当此 MAL 的缓存邮件超过此大小,则会将邮件存储到文件中。有效值范围(0~500000),默认为 100
       MAL_SYS_BUF_SIZE:MAL 系统总内存大小限制,单位:M。有效值范围(0~500000),默认为 0,表示 MAL 系统无总内存限制
       MAL_VPOOL_SIZE:MAL 系统使用的内存初始化大小,以兆为单位。有效值范围( 1~500000 ), 默 认 为 128 , 此 值 一 般 要 设 置 的 比MAL_BUF_SIZE 大一些
       MAL_COMPRESS_LEVEL:MAL 消息压缩等级,取值范围(0-10)。默认为 0,不进行压缩;1–9 表示采用 zip 算法,从 1 到 9 表示压缩速度依次递减,压缩率依次递增;10 表示采用 snappy 算法,压缩速度高于 zip算法,压缩率相对低
       [MAL_NAME] MAL 名称,同一个配置文件中 MAL 名称需保持唯一性
       MAL_INST_NAME: 数据库实例名,与 dm.ini 的 INSTANCE_NAME 配置项保持一致,MAL 系统中数据库实例名要保持唯一
       MAL_HOST MAL IP: 地址,使用 MAL_HOST + MAL_PORT 创建 MAL 链路
       MAL_PORT MAL :监听端口,用于数据守护、DSC、MPP 等环境中各节点实例之间MAL链路配置,监听端端口配置此参数,范围1024~65534,发起连接端的端口在 1024~65535 之间随机分配
       MAL_INST_HOST MAL_INST_NAME 实例对外服务 IP 地址
       +MAL_INST_PORT MAL_INST_NAME 实例服务器监听通讯端口号,服务器配置此参数 , 有 效 值 范围 ( 1024~65534 ), 发 起 连 接 端的 端 口在1024-65535 之间随机分配此参数的配置应与 dm.ini 中的 PORT_NUM 保持一致
       MAL_DW_PORT MAL_INST_NAME 实例守护进程的监听端口,其他守护进程或监视器使用 MAL_HOST + MAL_DW_PORT 创建与该实例守护进程的 TCP 连接,监听端配置此参数,有效值范围(1024~65534),发起连接端的端口在 1024-65535 之间随机分配

六、搭建过程(虚拟机两节点)
       1. 在共享磁盘上裸设备划分
达梦数据库学习之DMDSC

       2.准备 dmdcr_cfg.ini
       3.使用 DMASMCMD 工具初始化
达梦数据库学习之DMDSC
       4.准备 DMASM 的 MAL 配置文件(命名为 dmasvrmal.ini),使用 DMASM 的所有节点都
要配置
       5.准备 dmdcr.ini 配置文件
       6.启动 DMCSS、DMASM 服务程序
       7.使用 dmasmtool 工具创建 DMASM 磁盘组
       选择一个节点(10.0.2.101),启动 dmasmtool 工具。
达梦数据库学习之DMDSC
       8.准备 dminit.ini 配置文件
       9.使用 dminit 初始化 DB 环境
       10.启动数据库服务器
       将初始化的实例目录拷贝到另一个节点上相同目录下,再分别启动 dmserver 即可完成 DMDSC 集群搭建。

七、注意事项
       1.DMASM 的两个节点分别配置 dmdcr.ini,dmdcr_path 相同,dmasvrmal.ini 文件内容也相同,dmdcr_seqo 分别为 0 和 1。
       2.注册,初始化实例,绑定磁盘等都在一台机器上完成。配置文件也在一个节点写好发送过去进行修改。
       3.绑定磁盘的所属用户是dmdba。尽量不要使用root用户绑定。