一、简介

达梦数据共享集群(DSC)允许达梦数据库实现在一组集群服务器上运行任何程序包,而客户应用不必作任何更改。

这种体系提供了最高级别的可用性和最灵活的可伸缩性。如果出现集群其中一个服务器失败,达梦会继续运行在集群中其它服务器上。如果您需要更多的处理能力,您可以很方便地在线增加另外的服务器而不必使用户脱机。为了保持低成本,可以将高端的系统构建在标准化的、低成本的产品上。达梦数据共享集群是达梦企业网格计算体系的基础。达梦 DSC 技术可为低成本硬件平台提供支持,使其提供优质的服务,并达到或超出昂贵的大型 SMP计算机所能提供的可用性和可伸缩性等级。通过显著降低管理成本和提供出色的管理灵活性,达梦为企业网格环境提供了强有力的支持。

二、数据共享集群架构

一个 DSC 数据库就是一个集群数据库。集群就是一组相互独立的服务器相互协作形成一个整体的,单一的系统。集群架构胜于对称多处理(SMP)系统,它提升了错误恢复能力,并且可随着系统增长而逐步扩展。一旦发生系统失败,集群对用户保证最高的可用性,保障访问关键时业务数据不丢失。通过额外的节点,互连接和服务器这些冗余的硬件设备保证了集群能够提供高可用性。这样冗余的硬件架构可以避免单点故障和提供杰出的错误恢复能力。

采用数据共享集群,我们可以把达梦实例(运行在服务器上的用来访问数据的进程和内存结构)与达梦数据库(在存储设备上的实际数据的物理结构,也就是通常所说的数据文件)进行分离。一个集群数据库是一个可为多个实例访问的单一数据库。在集群中,每个实例在各自的服务器上运行。

三、硬件架构

达梦数据共享集群是所有服务器共享磁盘的 Shared Everything 体系,集群中的所有服务器共享 DSC 数据库的所有存储设备。这种类型的磁盘存储可以是网络附加存储(NAS),可以是存储区域网络(SAN)或者是 SCSI 磁盘。存储选择取决于硬件选择并且要为硬件厂商所支持。关键在于存储系统要选择能为应用程序提供可扩展的 I/O,是一个支持添加服务器到集群中的 I/O 系统。相对于为应用程序连接到数据库服务器的局域网(LAN),集群需要一个额外的网络。集群需要另外一个私有专用网络来进行互联互通。为了高可用目的,达梦推荐使用两个网络接口。一个网络接口用于外部连接,实现故障保护和负载均衡。
另一个用来作为节点间互联互通,消息传递。DSC 的缓存交换技术也需要依靠这种连接。对于集群间的节点连接,达梦使用 TCP/IP 协议。

四、文件系统和卷管理

由于 DSC 是共享所有(Shared Everything)的体系架构,所以卷管理和文件系统必须是能够支持集群的,例如:NFS、GFS、GFS2。同时,DSC 支持使用裸设备或 DMASM 文件系统存放共享数据库文件。

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

五、配置连接服务名

达梦数据共享集群需要为每个使用该集群的客户端配置一个连接服务名,此配置项需要用户手工配置。用户使用 DM 的 JDBC、DPI 等接口连接服务器时,如使用配置的 SERVERNAME 进行连接,客户端会随机选择一台配置项中 ip 代表的服务器进行连接。如果发生一个节点失败,可以立即漂移到集群中另外的节点来继续响应连接请求。这种方式增加了应用程序的可用性,连接请求到另一个节点之前,用户不再需要等待一直到网络连接超时。

六、高可用性

达梦 DSC 实现了数据高可用的基础架构,作为达梦高可用体系架构的一个组成部分,提供了最高可用性的数据管理解决方案的最佳实践。达梦 DSC 高可用解决方案满足了高可用的主要特征。

七、可靠性

达梦 DSC 消除了单点故障。如果一个实例失败了,集群中其它的实例正常运转。

八、可恢复性

达梦数据库具有很多恢复特性可以从各种类型的失败中恢复。如果 DSC 数据库集群中的一个实例失败,这会被集群中的其它实例察觉到,恢复自动发生。通过应用透明故障切换(Transparent Application Failover),可以使用户感受不到失败。

九、错误检测

达梦集群组件自动监控 DSC 数据库和提供在这种环境下快速的问题检测。在问题发生后还没有人注意到之前,就已经开始自动地从失败中进行恢复。快速集群通知(Fast Application Notification)提供了应用程序接收集群中组件失败的通知的能力,并再次提交用户的事务到集群中一个正常运行的节点,避免用户感知失败。

十、持续操作

达梦 DSC 提供了持续服务能力应付计划及非计划的停机。如果一个节点(或实例)失败,数据库依然保持开启,应用照常访问数据。快速应用通知(FastApplication Notification)和快速连接故障切换(Fast ConnectionFailover)对用户隐藏了集群中的组件失败,保证了持续服务能力。

十一、可扩展性

达梦 DSC 为应用的可扩展性提供了便捷。传统上,当一台服务器处理能力都耗尽时,我们会替换成一台新的更强大的服务器。随着服务器处理能力的增强,它们的价值也更昂贵。使用 DSC 结构的数据库,可以以另一种方式增加处理能
力。传统上运行在大型 SMP 计算机的应用可以被移植到一群小服务器组成的集群上。这种替代使你可以继续维持你在当前硬件的投资,通过增加一个新服务器到集群中(或者把原结构变成集群)来实现处理能力的增强。集群中所有的服务器上必须是同样的操作系统和相同版本的达梦软件,但是这些服务器却不必具备一模一样的处理能力。

达梦 DSC 体系架构能自动适应快速变化的业务需求和因而发生的负载变化。应用程序的用户和中间层应用服务器客户端通过服务名(Service Name)连接到数据库。达梦自动地在应用中的各个节点上进行负载均衡。在不同节点上的DSC 数据库的实例被规划隶属于数据库的服务或数据库的服务的子集。这种方式给 DBA 们提供了连接灵活性,可以选择让连接某个数据库的特定应用客户端能够连接部分还是全部的数据库节点。当业务需求增长时,管理人员可以轻松通过增加连接节点来增加处理能力。DSC 的缓存交换技术可以马上使用新增节点的CPU 和内存资源,DBA 们无需手工地重新划分数据。

十二、负载管理

采用 DSC 数据库的应用程序需要在整个集群范围中管理工作量。达梦 DSC拥有管理负载的技术,保证在特定的配置和应用高可用下系统最佳的吞吐量。在面向交易系统的 OLTP 中,使用专业工具 TPCC 进行测试时,显示出了良好的负载均衡能力。

十三、服务

负载管理依赖于使用服务。服务通过隐藏 DSC 数据库的复杂性,提供给用户一个单一的系统影像。应用程序受益于集群的可靠性就是通过服务来实现的。一个服务能包含一个达梦数据库的一个或多个实例,一个实例能支持多个服务。提供给服务的实例的数量是由数据库管理员动态管理的,与应用无关。当某个节点发生故障,服务自动地恢复到其它存在的实例上。

十四、连接负载均衡

达梦提供了数据库连接的负载均衡能力。客户端负载均衡是指在所有的监听器上均衡所有的连接请求。对于集群,是通过在客户连接串中的地址列表里包含了所有集群中可用服务器的地址列表来实现的。数据库连接会随机选择其中一个服务器来连接。如果被选择的服务器不可用,就尝试连接下一个。服务端的负载均衡是在监听上实现的。每个监听监控集群中提供每个服务的所有节点。基于对服务定义的目标,监听选择最能满足这个目标的实例,建立连接。

十五、下面我们通过实验的方式来搭建一个达梦的DSC集群来具体实现一下DSC集群。

1、DMDSC 集群架构图。

同Oracle的rac相似,DMDSC 集群主要由存储组件  dmasmsvr  和  集群组件dmcss 和数据软件 dmserver   以及节点间的日志传递的系统   这几大组件组成。

数据库和数据库实例

数据库(Database)是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件等),保存在物理磁盘或文件系统中。
        数据库实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存。通过数据库实例,可以操作数据库,一般情况下,我们访问、修改数据库都是通过数据库实例来完成的。

共享存储

DMDSC 集群中,为了实现多个实例同时访问、修改数据,要求将数据文件、控制文件、日志文件保存在共享存储上。DMDSC 支持使用裸设备或 DMASM 文件系统作为共享存储。配置 DMDSC 集群需要的 DCR、Voting disk 也必须保存在共享存储上(目前仅支持裸设备存放 DCR 和 Voting disk)。本地归档日志也可以保存在共享存储上,不过这样会占用较为宝贵的共享存储资源。

本地存储

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

通信网络

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

集群控制

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

15.1 虚拟硬件环境准备

下面我们依据DMDSC系统结构图具体的来配置一下DSC集群。

存储我们使用是的Openfiler - 开源存储管理平台   openfiler 开源的存储管理软件。

下面是openfiler开源存储管理平台的安装教程Openfiler 安装教程 | openfiler中文网。 以及配置教程,Openfiler 安装教程 | openfiler中文网   最终的磁盘划分如下图所示。dcr和vote  都是128M大小。归档日志盘放置了2G。 数据盘放置了100G

两台主机配置如下

两台相同配置机器,2G 内存,100G 本地磁盘,2 块网卡,配置有openfile分享的四块共享磁盘。

操作系统:CentOS Linux release 7.7.1908 (Core)  64 位。
网 络 配 置 : eth0 网 卡 为 10.0.2.x 内 网 网 段 , 两 台 机 器 分 别 为10.0.2.101/10.0.2.102;eth1 为 192.168.56.x 外网网段,两台机器分别为192.168.56.101/192.168.56.102。内网网段用于 MAL 通讯。eth3为 192.168.118.x 内网网段,两台机器分别为192.168.118.201/192.168.118.202。内网网段用于 MAL 通讯

存储网络: 192.168.118.x 内 网 网 段  
DM 各种工具位于目录:/opt/dmdbms/bin。
配置文件位于目录:/home/dmdba/data。

主机名:dsc1   和  dsc2      dsc1 对应的主机的IP 为101结尾的主机,dsc2 对应的网络情况为102

15.2 存储环境准备

在主机上执行 发现存储和登录共享存储的操作。并执行创建磁盘的动作,最后实现的效果如下图所示。

发现存储 :  iscsiadm  -m discovery -t sendtargets -p 192.168.118.160

登录 共享存储:iscsiadm -m node --targetname   dmdsc -p 192.168.118.160 -l

执行裸设备的绑定。

cat >>/etc/udev/rules.d/60-raw.rules<<EOF
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="raw[1-4]", OWNER="root", GROUP="root", MODE="777"
EOF

最后通过如下的命令 完成裸设备的绑定,并查看裸设备的大小。

#最后执行重启服务,让裸设备绑定生效。
systemctl restart systemd-udev-trigger.service#  查看裸设备的大小
blockdev --getsize64 /dev/raw/raw4

dmdcr_cfg.ini 是格式化 DCR 和 Voting Disk 的配置文件。配置信息包括三类:集群环境全局信息、集群组信息、以及组内节点信息。使用 dmasmcmd 工具,可以根据 dmdcr_cfg.ini 配置文件,格式化 DCR 和 VotingDisk。后续 DMASMCMD工具执行 init 语句会使用到。

cat >>/home/dmdba/data/dmdcr_cfg.ini<<EOF
DCR_N_GRP = 3                #集群环境包括多少个 group,取值范围 1~16
DCR_VTD_PATH = /dev/raw/raw2  #Voting Disk 路径
DCR_OGUID = 63635            #消息标识,dmcssm 登录 dmcss 消息校验用
[GRP]                       #[GRP]表示新建一个 Group
DCR_GRP_TYPE = CSS           #  组类型(CSS\ASM\DB)
DCR_GRP_NAME = GRP_CSS         #组名,16 字节,配置文件内不可重复
DCR_GRP_N_EP = 2                #组内节点个数 N,最大 16
DCR_GRP_DSKCHK_CNT = 60       # 磁盘心跳机制,容错时间,单位秒,缺省 60S,取值范围 5~600
[GRP_CSS]                    #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = CSS0            #节点名,16 字节,配置文件内不可重复,ASM 的节点名必须和 dmasvrmal.ini 里的 MAL_INST_NAME 一致,
DCR_EP_HOST = 10.0.2.101       #节点 IP(实例所在机器的 IP 地址)。
DCR_EP_PORT = 9341            #节点 TCP 监听端口(CSS/ASM/DB 有效,对应登录 CSS/ASM/DB 的端口号),节点实例配置此参数,取值范围 1024~65534;发起连接端的端口
在 1024~65535 之间随机分配。
[GRP_CSS]                    #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = CSS1
DCR_EP_HOST = 10.0.2.102
DCR_EP_PORT = 9343
[GRP]                        #[GRP]表示新建一个 Group
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_ASM]                    #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = ASM0
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 20        #共享内存大小,单位 M,(ASM 有效,初始化共享内存大小),取值范围10~1024。共享内存大小与其能管理的磁盘大小的关系详见 6.4 节
DCR_EP_HOST = 10.0.2.101
DCR_EP_PORT = 9349
DCR_EP_ASM_LOAD_PATH = /dev/raw  #ASM 磁盘扫描路径,Linux 下一般为/dev/raw,文件模拟情况,必须是全路径,不能是相对路径
[GRP_ASM]                    #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 20
DCR_EP_HOST = 10.0.2.102
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP]                           #[GRP]表示新建一个 Group
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_DSC]                        #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = DSC0
DCR_EP_SEQNO  = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
[GRP_DSC]                          #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = DSC1
DCR_EP_SEQNO  = 1
DCR_EP_PORT = 5237
DCR_CHECK_PORT = 9742
EOF

1. 在用 dmasmcmd 工具执行 init votedisk disk_path from dcr_cfg_path时,指定的 disk_path 必须和 dcr_cfg_path 里面配置的 DCR_VTD_PATH 相同。
2. 如果配置 dmcssm,dmcssm 的 OGUID 必须和 DCR_OGUID 保持一致。
3. DCR_N_GRP 必须和实际配置的组数目保持一致。
4. CSS 和 ASM 组的 DCR_GRP_N_EP 要相等,DB 的 DCR_GRP_N_EP 要小于等于CSS/ASM 的 DCR_GRP_N_EP。
5. ASM节点的DCR_EP_NAME必须和DMASM系统使用的dmasvrmal.ini配置文件里的 MAL_INST_NAME 保持一致。
6. DB 节点的 DCR_EP_NAME 必须和数据库实例使用 dmmal.ini 配置文件里的MAL_INST_NAME、以及 dm.ini 配置文件里的 INSTANCE_NAME 保持一致。
7. 所有DB节点的DCR_EP_NAME都不能重复,DB组内的DCR_EP_SEQNO不能重复。
8. dmdcr_cfg.ini 配置文件中的所有路径均不支持中文路径。

使用 DMASMCMD 工具初始化

#进入dmasmcmd 管理工具中
cd /opt/dmdbms/bin
./dmasmcmd执行如下命令
create dcrdisk '/dev/raw/raw1' 'dcr'
create votedisk '/dev/raw/raw2' 'vote'
create asmdisk '/dev/raw/raw3' 'LOG0'
create asmdisk '/dev/raw/raw4' 'DATA0'
init dcrdisk '/dev/raw/raw1' from '/home/dmdba/data/dmdcr_cfg.ini'identified by 'abcd'
init votedisk '/dev/raw/raw2' from '/home/dmdba/data/dmdcr_cfg.ini'

可以启动 dmasmcmd 工具,依次输入以上命令,或者将命令写入 asmcmd.txt 文件,执行 dmasmcmd script_file=asmcmd.txt,只需在一台机器执行即可。用户没有指定脚本文件,则 dmasmcmd 进入交互模式运行,逐条解析、运行命令;用户指定脚本文件(比如 asmcmd.txt),则以行为单位读取文件内容,并依次执行,执行完成以后,自动退出 dmasmcmd 工具。脚本文件必须以“#asm script file”开头,否则
认为是无效脚本文件;脚本中其它行以“#”表示注释;脚本文件大小不超过 1M。

dmasvrmal.ini

dmmal.ini 和 dmasvrmal.ini 都是 MAL 配置文件。使用同一套 MAL 系统的所有实例,MAL 系统配置文件要严格保持一致。准备 DMASM 的 MAL 配置文件(命名为 dmasvrmal.ini),使用 DMASM 的所有节点都要配置,内容完全一样,保存到/home/dmdba/data/ 目录下

cat >>/home/dmdba/data/dmasvrmal.ini<<EOF
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 10.0.2.101
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 10.0.2.102
MAL_PORT = 7237
EOF

dmdcr.ini

dmdcr.ini 是 dmcss、dmasmsvr、dmasmtool 等工具的输入参数。记录了当前节点序列号以及 DCR 磁盘路径。 DMASM 的两个节点分别配置 dmdcr.ini,dmdcr_path 相同,dmasvrmal.ini 文件内容也相同,dmdcr_seqo 分别为 0 和 1。

#101
cat >>/home/dmdba/data/dmdcr.ini<<EOF
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/dmdba/data/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/data/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/dmserver path=/home/dmdba/data/dsc0_config/dm.ini dcr_ini=/home/dmdba/data/dmdcr.ini
EOF#102
cat >>/home/dmdba/data/dmdcr.ini<<EOF
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/dmdba/data/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/data/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/dmserver  path=/home/dmdba/data/dsc0_config/dm.ini dcr_ini=/home/dmdba/data/dmdcr.ini
EOF

使用 说明
1. dmasmsvr 和 dmserver 使用不同的 MAL 系统,需要配置两套 MAL 系统,配置文件 dmmal.ini 需要分别生成,保存到不同的目录下,并且 dmmal.ini 中的配置项不能重复、冲突。
2. DMDSC 集群环境下,只有当所有 OK 节点实例都启动的时,整个集群环境才能启动。可能存在某些场景,部分 OK 节点无法正常启动,导致整个集群环境无法正常启动。指定参数 DMDCR_AUTO_OPEN_CHECK 后,如果超过指定时间节点实例还未启动,DMCSS 自动将未启动节点踢出集群环境,变为 ERROR 节点,之后其他活动 OK 节点可以正常启动。DMDSC 中至少一个 OK 节点启动后 DMCSS 才开始检查,所有 OK 节点都未启动情况下,DMCSS 不会主动踢出节点。
3. DMCSS 自动拉起故障 DMASMSVR 或 dmserver 实例。故障认定间隔和启动命令串是配合使用的,DMASMSVR 和 dmserver 实例需要各自配置,如果没有配置启动命令串,故障间隔即使配置为大于 0 的值 DMCSS 也不会执行自动拉起操作,DMDCR_ASM_RESTART_INTERVAL 和 DMDCR_DB_RESTART_INTERVAL 默认的60s 只有在配置有启动命令串时才会起作用。DMDCR_ASM_STARTUP_CMD 和 DMDCR_DB_STARTUP_CMD 的配置方法相同,只是执行码名称和 ini 配置文件路径有区别,可以配置为服务名或命令行启动方式。

启动 DMCSS、DMASM 服务程序

在 10.0.2.101、10.0.2.102 节点先后分别启动 dmcss、dmasmsvr 程序。

cd /opt/dmdbms/bin#手动启动 dmcss 命令:
./dmcss DCR_INI=/home/dmdba/data/dmdcr.ini
#手动启动 dmasmsvr 命令:
./dmasmsvr  DCR_INI=/home/dmdba/data/dmdcr.ini

主 DMCSS 启动后屏幕打印如下:

[/opt/dmdbms/bin]# ./dmcss DCR_INI=/home/data/dmdcr.ini
dmcss V8
设置 CSS[0]为主 CSS
[ASM]: 设置 EP[0]为控制节点
[ASM]: 设置命令[START NOTIFY], 目标节点[0], 命令序号[2]
[ASM]: 设置命令[EP START], 目标节点[0], 命令序号[3]
[ASM]: 设置命令[NONE], 目标节点[0], 命令序号[0]
[ASM]: 设置命令[EP START], 目标节点[1], 命令序号[9]
[ASM]: 设置命令[NONE], 目标节点[1], 命令序号[0]
[ASM]: 设置命令[EP OPEN], 目标节点[0], 命令序号[12]
[ASM]: 设置命令[EP OPEN], 目标节点[1], 命令序号[13]
[ASM]: 设置命令[NONE], 目标节点[0], 命令序号[0]
[ASM]: 设置命令[NONE], 目标节点[1], 命令序号[0]
[ASM]: 设置命令[EP REAL OPEN], 目标节点[0], 命令序号[15]
[ASM]: 设置命令[EP REAL OPEN], 目标节点[1], 命令序号[16]
[ASM]: 设置命令[NONE], 目标节点[0], 命令序号[0]
[ASM]: 设置命令[NONE], 目标节点[1], 命令序号[0]

使用 dmasmtool 工具创建 DMASM 磁盘组

选择一个节点(10.0.2.101),启动 dmasmtool 工具。

[/opt/dmdbms/bin]# ./dmasmtool DCR_INI=/home/dmdba/data/dmdcr.ini

输入下列语句创建 DMASM 磁盘组:

#创建日志磁盘组
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
#创建数据磁盘组
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'

dminit.ini

dminit.ini 是 dminit 工具初始化数据库环境的配置文件。与初始化库使用普通文 件系统不同,如果使用裸设备或者 ASM 文件系统,必须使用 dminit 工具的 control 参数指定 dminit.ini 文件。dminit 工具的命令行参数都可以放在 dminit.ini 中,比如db_name,auto_overwrite 等,dminit.ini 格式分为全局参数和节点参数。dminit工具具体用法可以参考《DM8_dminit 使用手册》,准备 dminit.ini 配置文件,保存/home/dmdba/data/ 目录

cat >>/home/dmdba/data/dminit.ini<<EOF
db_name = dsc
system_path = +DMDATA/data
system = +DMDATA/data/dsc/system.dbf
system_size = 128
roll  = +DMDATA/data/dsc/roll.dbf
roll_size = 128
main  = +DMDATA/data/dsc/main.dbf
main_size = 128
ctl_path = +DMDATA/data/dsc/dm.ctl
ctl_size = 8
log_size = 256
dcr_path = /dev/raw/raw1 #dcr 磁盘路径,目前不支持 asm,只能是裸设备
dcr_seqno = 0
auto_overwrite = 1
[DSC0] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /home/dmdba/data/dsc0_config
port_num = 5236
mal_host = 10.0.2.101
mal_port = 9340
log_path = +DMLOG/log/dsc0_log01.log
log_path = +DMLOG/log/dsc0_log02.log
[DSC1] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /home/dmdba/data/dsc1_config
port_num = 5237
mal_host = 10.0.2.102
mal_port = 9341
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
EOF

使用 说明
1. SYSTEM_PATH 目前可以支持 ASM 文件系统,如果不指定MAIN/SYSTEM/ROLL/CTL_PATH/HUGE_PATH,数据文件、控制文件和 huge 表空间路径都会默认生成在 SYSTEM_PATH/db_name 下面。
2. 表空间路径和 DM.CTL 路径支持普通操作系统路径、裸设备、ASM 文件路径,如果指定必须指定 SIZE。
3. 只有 dminit 工具使用 ASM 文件系统,才会用到 DCR_PATH 和 DCR_SEQNO,并且不会写入其他配置文件。
4. CONFIG_PATH 暂时只支持裸设备,不支持 ASM 文件系统。DSC 环境配置,各节点的 config_path 要指定不同路径。
5. MAL_HOST 和 MAL_PORT 是为了自动创建 dmmal.ini 文件使用,只有在初始化DSC 环境时需要指定。
6. LOG_PATH 可以不指定,默认会在 SYSTEM_PATH 生成。如果指定,必须指定两个以上。
7. 必须指定实例名,也就是必须配置[XXX]。
8. dminit 工具的 control 参数只能独立使用,不能和其他任何参数一起使用。

使用 dminit 初始化 DB 环境

选择一个节点(10.0.2.101),启动 dminit 工具初始化数据库。dminit 执行完成后,会在 config_path 目录(/home/data/dsc0_config 和/home/data/dsc1_config)下生成配置文件 dm.ini 和 dmmal.ini。

./dminit control=/home/dmdba/data/dminit.ini
initdb V8
db version: 0x70009
file dm.key not found, use default license!
License will expire on 2017-06-08
log file path: +DMLOG/log/dsc0_log01.log
log file path: +DMLOG/log/dsc0_log02.log
log file path: +DMLOG/log/dsc1_log01.log
log file path: +DMLOG/log/dsc1_log02.log
write to dir [+DMDATA/data/dsc].
create dm database success. 2016-06-23 15:23:13

启动数据库服务器

将 10.0.2.101 机器/home/dmdba/data/dsc1_config 目录拷贝到 10.0.2.102 机器相同目录下,再分别启动 dmserver 即可完成 DMDSC 集群搭建。如果 DMCSS 配置有自动拉起 dmserver 的功能,可以等待 DMCSS 自动拉起实例,不需要手动启动。
如果需要手动启动,可参考下面的操作步骤:

#10.0.2.101  机器:
./dmserver /home/dmdba/data/dsc0_config/dm.ini dcr_ini=/home/dmdba/data/dmdcr.ini
#10.0.2.102  机器:
./dmserver /home/dmdba/data/dsc1_config/dm.ini dcr_ini=/home/dmdba/data/dmdcr.ini

注册服务并做开机启动

注册dmcss 服务。

#root用户执行
cd /opt/dmdbms/script/root/
./dm_service_installer.sh -t dmcss  -p dmcss  -dcr_ini /home/dmdba/data/dmdcr.ini
#哪个先启动哪个就是控制节点。
systemctl   start  DmCSSServicedmcss.servicesystemctl    enable  DmCSSServicedmcss.service

注册dmasm服务

#root用户执行
#101机器
cd /opt/dmdbms/script/root/
./dm_service_installer.sh -t dmasmsvr  -y DmCSSServicedmcss  -p asm0 -dcr_ini /home/dmdba/data/dmdcr.ini
#哪个先启动哪个就是控制节点。
systemctl start DmASMSvrServiceasm0 systemctl enable DmASMSvrServiceasm0
#102机器
cd /opt/dmdbms/script/root/
./dm_service_installer.sh -t dmasmsvr  -y DmCSSServicedmcss  -p asm1 -dcr_ini /home/dmdba/data/dmdcr.ini
#哪个先启动哪个就是控制节点。
systemctl start DmASMSvrServiceasm1systemctl enable DmASMSvrServiceasm1

注册达梦database服务

#root用户执行
#101机器
cd /opt/dmdbms/script/root/
./dm_service_installer.sh -t dmserver   -p DSC0  -y DmCSSServicedmcss -dcr_ini /home/dmdba/data/dmdcr.ini  -dm_ini /home/dmdba/data/dsc0_config/dm.ini
#哪个先启动哪个就是控制节点。
systemctl start  DmServiceDSC0systemctl  enable   DmServiceDSC0#102机器
./dm_service_installer.sh -t dmserver   -p DSC1  -y DmCSSServicedmcss -dcr_ini /home/dmdba/data/dmdcr.ini  -dm_ini /home/dmdba/data/dsc1_config/dm.inisystemctl start  DmServiceDSC1
systemctl  enable   DmServiceDSC1

最后进行机头服务器的重启测试。

故障自动重连

当用户连接到 DM 共享存储集群时,实际上是连接到集群中的一个实例,用户的所有增删改查操作都是由该实例完成的。但是如果该实例出现故障,那么用户连接会被转移到其他正常实例。而这种转移对用户是透明的,用户的增删改查继续返回正确结果,感觉不到异常。这种功能就是故障自动重连。实现故障自动重连的前提条件是在配置DM共享存储集群的时候,必须配置连接服务名。

配置服务名 配置服务名 (dm_svc.conf )

配置 DMDSC 集群,一般要求配置连接服务名,以实现故障自动重连。连接服务名可以在 DM 提供的 JDBC、DPI 等接口中使用,连接数据库时指定连接服务名,接口会随机选择一个 IP 进行连接,如果连接不成功或者服务器状态不正确,则顺序获取下一个 IP 进行连接,直至连接成功或者遍历了所有 IP。可以通过编辑 dm_svc.conf 文件,配置连接服务名。dm_svc.conf 配置文件在 DM安装时生成,Windows 平台下位于%SystemRoot%\system32 目录,Linux 平台下位于/etc 目录。
连接服务名格式:

SERVERNAME=(IP[:PORT],IP[:PORT],......)

dm_svc.conf 文件常用配置项目说明:
  SERVERNAME 
连接服务名,用户通过连接服务名访问数据库。
  IP
数据库所在的 IP 地址,如果是 IPv6 地址,为了区分端口,需要用[]封闭 IP 地址。
  PORT 
数据库使用的 TCP 连接端口,可选配置,不配置则使用连接上指定的端口。
  SWITCH_TIME
检测到数据库实例故障时,接口在服务器之间切换的次数;超过设置次数没有连接到有效数据库时,断开连接并报错。有效值范围 1~9223372036854775807,默认值为 3。
  SWITCH_INTERVAL

表 示 在 服 务 器 之 间 切 换 的 时 间 间 隔 , 单 位 为 毫 秒 , 有 效 值 范 围1~9223372036854775807,默认值为 200。

例如,配置一个名为 dmdsc_svc 的连接服务名,使用 dmdsc_svc 连接 DMDSC 集群中的数据库,即可实现故障自动重连。

dmdsc_svc=(10.0.2.101:5236,10.0.2.102:5237)
SWITCH_TIME=(10000)
SWITCH_INTERVAL=(1000)

体验故障自动 体验故障自动 重连

成功架构的共享存储集群系统,下面用一个简单的例子来体验故障自动重连。

1. 连接到 dsc
DIsql sysdba/sysdba@dmdsc_svc
2.确认当前用户已经连接到的节点实例
SQL> select name from v$instance;
行号 NAME
---------- ------- -------
1 DSC0
用户当前连接到节点 0 上 DSC0 实例。不要退出这个会话,第 4 步还是在这个会话中
执行。
3.关闭 DSC0 实例,或者将节点 0 所在的这台主机关机。
4.等待几秒后,再次执行这条语句,还在会话 1 中执行,服务器会返回提示已切换当
前连接。SQL> select name from v$instance;
[-70065]:连接异常,切换当前连接成功.
5.在会话 1 中再次执行这条语句,可执行成功,可以看到会话已切换到 DSC1 实例。
SQL> select name from v$instance;
行号 NAME
---------- ------ --------
1 DSC1

搭建完成后的虚拟机,需要的请下载。

链接:https://pan.baidu.com/s/1OB4Lb3pLu8_OutmEGTLxwQ 
提取码:tti2

之后进一步的学习DSC集群之后,现在打开监视器

cat>>/home/dmdba/data/dmcssm.ini<<EOF
CSSM_OGUID = 63635
CSSM_CSS_IP = 10.0.2.101:9341
CSSM_CSS_IP = 10.0.2.102:9343
CSSM_LOG_PATH = /home/dmdba/data/dcssmon_log
CSSM_LOG_FILE_SIZE = 32
CSSM_LOG_SPACE_LIMIT = 1024
EOF

最后执行监视器,以及产生的效果如下,

[root@dsc2 bin]# /opt/dmdbms/bin/dmcssm ini_path=/home/dmdba/data/dmcssm.ini
[monitor]         2022-05-18 20:26:23: CSS MONITOR V8
[monitor]         2022-05-18 20:26:33: CSS MONITOR SYSTEM IS READY.[monitor]         2022-05-18 20:26:33: Wait CSS Control Node choosed...
[monitor]         2022-05-18 20:26:35: Wait CSS Control Node choosed succeed.showmonitor current time:2022-05-18 20:27:23, n_group:3
=================== group[name = GRP_CSS, seq = 0, type = CSS, Control Node = 0] ========================================[CSS0] global info:
[ASM0] auto restart = FALSE
[DSC0] auto restart = FALSE[CSS1] global info:
[ASM1] auto restart = FALSE
[DSC1] auto restart = FALSEep:     css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts2022-05-18 20:27:23    CSS0          0         9341    Control Node OPEN               WORKING      OK           TRUE         1087142161        10872382572022-05-18 20:27:23    CSS1          1         9343    Normal Node  OPEN               WORKING      OK           TRUE         1097930643        1097992514=================== group[name = GRP_ASM, seq = 1, type = ASM, Control Node = 0] ========================================n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULLcrash process over flag is TRUE
ep:     css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts2022-05-18 20:27:23    ASM0          0         9349    Control Node OPEN               WORKING      OK           TRUE         1087147946        10872440672022-05-18 20:27:23    ASM1          1         9351    Normal Node  OPEN               WORKING      OK           TRUE         1097951457        1098013280=================== group[name = GRP_DSC, seq = 2, type = DB, Control Node = 0] ========================================n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULLcrash process over flag is TRUE
ep:     css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts2022-05-18 20:27:23    DSC0          0         5236    Control Node OPEN               WORKING      OK           TRUE         939640562         9397022732022-05-18 20:27:23    DSC1          1         5237    Normal Node  OPEN               WORKING      OK           TRUE         939632087         939693800==================================================================================================================

达梦数据共享集群(DSC)---搭建过程相关推荐

  1. 达梦数据库集群DSC配置

    达梦数据库集群DSC配置 一.环境准备 1.1 主机信息 主机名 业务网 内连接 DSC1 192.168.1.1 10.1.1.1 DSC2 192.168.1.2 10.1.1.2 1.2 内核参 ...

  2. spark集群详细搭建过程及遇到的问题解决(四)

    在spark集群详细搭建过程及遇到的问题解决(三)中,我们将讲述了hadoop的安装过程,在本文中将主要讲述spark的安装配置过程. spark@master:~/spark$ cd hadoop ...

  3. 达梦数据库集群节点磁盘性能测试

    达梦数据库集群节点磁盘性能测试 1.本次测试磁盘 IP 共享数据盘 非共享挂载盘 192.168.157.100 /dev/pbdx15 /dmarch 192.168.157.101 /dev/pb ...

  4. DM达梦数据库集群之分布式集群(MPP)主备

    文章目录 前言 端口规划 一.在两台MPP主机上初始化两个备库 1.在实例mpp1上初始mpp2的备库 2.在实例mpp2上初始mpp1的备库 3.主库脱机备份 4.备份还原(备库执行) 二.配置参数 ...

  5. 达梦数据库集群主备节点切换

    1.前提条件 (1)集群各节点正常. (2)自动确认监视器集群请确认配置了手动监视器dmmonitor.ini 2.主备集群主节点切换 2.1 打开手动监视器 (1)使用dmdba用户,找到手动监视器 ...

  6. spark集群详细搭建过程及遇到的问题解决(三)

    上篇文章中讲完了如何配置免密码登录的问题,现在讲述下,三个节点的环境配置过程. 所需要的hadoop-2.7.3.tar.gz . jdk-7u79-linux-x64.tar.gz . scala- ...

  7. 达梦数据库集群部署(已实现)

    准备两台ip 主库ip 192.168.1.127 从库ip 192.168.1.122 1.关闭数据库后,使用dmrman工具(主库ip 192.168.1.127) backup database ...

  8. spark集群详细搭建过程及遇到的问题解决(一)

    注:其中也参考了网上的许多教程,但很多网上的教程在配置过程中,会出很多错误,在解决的过程中,做出了总结. 此文是针对小白.如有不对,请大神们指教.... 配置环境系统:Ubuntu16.04 配置版本 ...

  9. ZooKeeper(一)linux上单机与集群的搭建

    环境: Centos 7.zookeeper-3.4.6.tar.gz 一.单机版的搭建过程 1,上传zookeeper安装包并解压 上传安装包到服务器上后使用 tar -zxvf zookeeper ...

最新文章

  1. 2017年6月16号课堂笔记
  2. 时间序列(五)股票分析
  3. 单机部署open-falcon 0.2
  4. ubuntu获取root权限
  5. 芯片巨头们2019年的AI芯片之争会如何?
  6. 图论--最短路--Floyd(含路径输出)
  7. 7-4 是否同一棵二叉搜索树 (25 分)
  8. MFC串口通信串口指示灯的实现
  9. 几款远程工具介绍(Xshell)(SecureCRT)(putty)
  10. AI打《星际》被人类碾压?不,事情并没有这么简单
  11. python画图代码-Python实战小程序利用matplotlib模块画图代码分享
  12. react-router中进行路由控制
  13. python pdf转txt_Python之pdf转txt
  14. 企业工商数据-------大数据时代下的营销利器
  15. 北京大学计算机学硕考研分数线,2020北京大学研究生分数线汇总(含2016-2020历年复试)...
  16. css幸运大转盘,用CSS实现一个抽奖转盘
  17. 计算机网络基础知识之应用层篇
  18. 世界怎样存在---唯物辩证法
  19. java利用单例模式存储参数_java单例模式使用及注意事项
  20. 有谁见过八股文的天花板?阿里P8看了也晒干了沉默

热门文章

  1. 正点原子STM32F103ZET6学习笔记-新建库函数工程模板
  2. android 游戏开发之物理小球的应用
  3. java exec示例_Java COR.exec方法代碼示例
  4. Java-练习题-002-继承
  5. 小学生手写Python程序解魔方 这绝对是高手
  6. Android Loading加载动画
  7. Java初级必做习题2
  8. ArcGIS水网密度——以北京为例
  9. [洛谷1462 ]通往奥格瑞玛的道路---二分答案+spfa
  10. ZW20-12/630-20