2020-09-16

DM数据库DSC集群搭建

DMDSC 概述
DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件。各个节点有自己独立的联机日志和归档日志。这些文件就保存在共享存储上。 DMDSC 集群得以实现的重要基础就是共享存储。DM 支持的共享存储有两种:裸设备和DMASM。这两种存储的区别在于后者在前者的基础上,部署并使用了 DMASM 文件系统。为了方便对裸设备上的磁盘或文件进行管理,推荐用户使用后者。DMDSC 集群主要由数据库和数据库实例、共享存储、本地存储、通信网络、以及集群控制软件 DMCSS 组成。下面以部署了 DMASM 的 DMDSC 集群为例,展示 DMDSC 集群系统结构
在这里插入图片描述

系统特性
DMDSC 的主要特点包括:
 高可用性 只要集群中有一个活动节点,就能正常提供数据库服务。
 高吞吐量 多个节点同时提供数据库服务,有效提升集群的整体事务处理能力。

 负载均衡 用户的连接请求被平均分配到集群中的各个节点,确保各个节点的负
载大致平衡。

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 集群。单节点应用时,可以不配置 CSS。

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 必须存储在集群中所有节点都可以访问到的共享存储中,并且只支持裸设备。在一个集群环境中只能配置一个表决磁盘
HeartBeat(心跳机制)
DMCSS的心跳机制是通过Voting Disk的Disk Heartbeat。这 种机制有最大时延,
只有超过最大时延,才认为监测对象故障。
MAL 链路
MAL 系统是达梦数据库基于 TCP 协议实现的一种内部通信机制,具有可靠、灵活、高
效的特性。使用 DMASM 文件系统的 DMDSC 集群中存在两套 MAL 系统,DMASM 服务器之间
配置一套 MAL 系统,dmserver 服务器之间配置一套 MAL 系统。一旦 MAL 链路出现异常,
DMCSS 会进行裁定,并从集群中踢出一个节点,保证集群环境正常运行
搭建 2 节点 DMDSC(DMASM)
在共享磁盘上裸设备划分
1)输入 fdisk /dev/sdb
2)依次输入 n  p  1 回车 +100M 回车,完成第一块磁盘划分
3) 依次输入 n  p  2 回车 +100M 回车,完成第二块磁盘划分
4) 依次输入 n  p  3 回车 +2048M 回车,完成第三块磁盘划分
5) 依次输入 n  p  4 回车回车回车,完成第四块磁盘划分
6) 编辑/etc/udev/rules.d/60-raw.rules 文件,增加以下语句:
ACTION==“add”, KERNEL==“sdb1”, RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION==“add”, KERNEL==“sdb2”, RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION==“add”, KERNEL==“sdb3”, RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION==“add”, KERNEL==“sdb4”, RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION==“add”, KERNEL==“raw[1-4]”, OWNER=“root”, GROUP=“root”, MODE=“660”
在这里插入图片描述
在这里插入图片描述
**两节点分别执行partprobe /dev/sdb,通知系统分区表的变化
最后执行 start_udev,完成裸设备绑定
在这里插入图片描述
安装数据库管理系统
在这里插入图片描述
准备dmdcr_cfg.ini配置文件,保存到/home/data/目录下面。
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 63635

[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = GRP_CSS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_CSS]
DCR_EP_NAME = CSS0
DCR_EP_HOST = 192.168.3.30
DCR_EP_PORT = 9341
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.3.31
DCR_EP_PORT = 9343
[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_ASM]
DCR_EP_NAME = ASM0
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.3.30
DCR_EP_PORT = 9349
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.3.31
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_DSC]
DCR_EP_NAME = DSC0
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9742
在这里插入图片描述
使用 DMASMCMD 工具初始化
用root用户执行不然会报权限不足错误
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 '/data/dmdbms/dmdcr_cfg.ini’identified by ‘abcd’
init votedisk ‘/dev/raw/raw2’ from ‘/data/dmdbms/dmdcr_cfg.ini’
在这里插入图片描述
dmasmcmd 工具在数据库安装目录下的bin目录下
准备 DMASM 的 MAL 配置文件(命名为 dmasvrmal.ini),使用 DMASM 的所有节点都
要配置,内容完全一样,保存到/home/data 目录
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.3.30
MAL_PORT = 7236

[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.3.31
MAL_PORT = 7237
在这里插入图片描述
准备 dmdcr.ini 配置文件,保存到/home/data 目录下面
节点 192.168.3.30
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/data/dmdbms/dmasvrmal.ini #dmasmsvr使用的MAL配置文件路径
DMDCR_SEQNO = 0 # DSC1节点为1
DMDCR_ASM_RESTART_INTERVAL = 0 #ASM重启参数,命令行方式启动
DMDCR_ASM_STARTUP_CMD = /data/dmdbms/dmdbms/bin/dmasmsvr dcr_ini=/data/dmdbms/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 0 #DB重启参数,命令行方式启动
DMDCR_DB_STARTUP_CMD = /data/dmdbms/dmdbms/bin/dmserver path=/data/dmdbms/dsc0_config/dm.ini dcr_ini=/data/dmdbms/dmdcr.ini

节点 192.168.3.31 dmdcr_seqo 分别为1节点192.168.3.30为0。
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/data/dmdbms/dmasvrmal.ini #dmasmsvr使用的MAL配置文件路径
DMDCR_SEQNO = 1 # DSC1节点为1
DMDCR_ASM_RESTART_INTERVAL = 0 #ASM重启参数,命令行方式启动
DMDCR_ASM_STARTUP_CMD = /data/dmdbms/dmdbms/bin/dmasmsvr dcr_ini=/data/dmdbms/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 0 #DB重启参数,命令行方式启动
DMDCR_DB_STARTUP_CMD = /data/dmdbms/dmdbms/bin/dmserver path=/data/dmdbms/dsc0_config/dm.ini dcr_ini=/data/dmdbms/dmdcr.ini
在这里插入图片描述

启动 DMCSS、DMASM 服务程序
./dmcss DCR_INI=/data/dmdbms/dmdcr.ini
./dmasmsvr DCR_INI=/data/dmdbms/dmdcr.ini
在这里插入图片描述
在这里插入图片描述

使用 dmasmtool 工具创建 DMASM 磁盘组
选择一个节点(10.0.2.101),启动 dmasmtool 工具
./dmasmtool DCR_INI=/home/data/dmdcr.ini
输入下列语句创建 DMASM 磁盘组:
#创建日志磁盘组
create diskgroup ‘DMLOG’ asmdisk ‘/dev/raw/raw3’
#创建数据磁盘组
create diskgroup ‘DMDATA’ asmdisk ‘/dev/raw/raw4’
在这里插入图片描述

准备 dminit.ini 配置文件,保存到/home/data 目录
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 = /data/dmdbms/dsc0_config
port_num = 5236
mal_host = 192.168.3.31
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 = /data/dmdbms/dsc0_config
port_num = 5236
mal_host = 192.168.3.30
mal_port = 9341
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
在这里插入图片描述
使用 dminit 初始化 DB 环境
选择一个节点(192.168.3.30),启动 dminit 工具初始化数据库。dminit 执行完成
后,会在 config_path 目录(/home/data/dsc0_config 和
/home/data/dsc1_config)下生成配置文件 dm.ini 和 dmmal.ini
在这里插入图片描述

将 192.168.3.30机器/home/data/dsc1_config 目录拷贝到 192.168.3.31 机器相
同目录下,再分别启动 dmserver 即可完成 DMDSC 集群搭建
手动启动dmserver
192.168.3.30
./dmserver /data/dmdbms/dsc0_config/dm.ini dcr_ini=/data/dmdbms/dmdcr.ini
192.168.3.31
./dmserver /data/dmdbms/dsc1_config/dm.ini dcr_ini=/data/dmdbms/dmdcr.ini

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值