简介:
DM 共享存储数据库集群的英文全称 DM Data Shared Cluster,简称 DMDSC。
熟悉Oracle的朋友会知道目前国产数据库只有达梦数据库有共享存储集群架构,Oracle通过私网进行不同节点之间的缓存融合,而达梦通过自己的MAL系统,这里不做过多介绍,大家想了解详情,请下载达梦介质安装后再DOC目录下有各产品架构的手册。架构图如下:
名词解释:
集群控制软件 DMCSS(对标Oracle的grid):负责监控集群中各个节点的运行状态,主要功能包括集群环境中节点的启动、故障处理、节点重加入等操作。DMCSS 的心跳机制(Heartbeat)是通过 VOTE 磁盘(非镜像环境下)或 DCRV 磁盘(镜像环境下)的 Disk Heartbeat 实现。
DMASM (对标Oracle的ASM存储管理系统):负责数据库底层磁盘的管理,裸设备或块设备。
DM 集群监视器: DMCSSM 与 DMCSS 相互通信,从 DMCSS 处获取整个集群系统的状态信息。DMCSSM 提供一系列管理维护集群的命令。
环境介绍:
2节点集群:
节点1:dmdsc1
业务地址:192.168.1.110
MAL地址:10.0.0.1
操作系统:Redhat7.6
节点2:dmdsc2
业务地址:192.168.1.111
MAL地址:10.0.0.2
操作系统:Redhat7.6、
部署步骤
1.两个数据库节点分别安装数据库软件,无需初始化实例,安装步骤请参考数据库安装手册,这里不做介绍;
2.两个节点分别配置共享存储:sdb sdc sdd sde
无多路径软件执行如下命令:
for i in b c d e;
do
echo "KERNEL==\"sd?\",SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\",RESULT==\"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", SYMLINK+=\"asmdisk/asmsd$i\",OWNER=\"dmdba\", GROUP=\"dinstall\",MODE=\"0660\""
done
vi /etc/udev/rules.d/66-dmasmdevices.rules
以上操作在两个节点操作完毕后,建议能重启就重启操作系统,如果不能执行如下操作命令:
/sbin/udevadm control --reload
/sbin/udevadm trigger
两个节点执行完毕后检查磁盘权限如下结果:
brw-rw---- 1 dmdba dinstall 8, 48 2月 18 23:12 /dev/sdd
brw-rw---- 1 dmdba dinstall 8, 64 2月 18 23:12 /dev/sde
brw-rw---- 1 dmdba dinstall 8, 16 2月 19 00:16 /dev/sdb
brw-rw---- 1 dmdba dinstall 8, 32 2月 19 00:16 /dev/sdc
3.配置集群文件:(以下均是dmdba用户操作:在数据库软件目录创建dsc_config目录,用于存放DSC使用的配置文件)
(两个节点均操作)DSC配置文件:
cat > dmdcr_cfg.ini <<EOF
DCR_N_GRP = 3 ##集群环境有多少个 GROUP,范围:1~16
DCR_VTD_PATH = /dev/asmdisk/asmsdc ##规划为 vote 的磁盘
DCR_OGUID = 210715 ## 消息标识,一个组里面只有一个。
[GRP] #新建一个 GROUP
DCR_GRP_TYPE = CSS ##组类型(CSS/ASM/DB)
DCR_GRP_NAME = GRP_CSS ##组名
DCR_GRP_N_EP = 2 ##组内节点个数
DCR_GRP_DSKCHK_CNT = 65 ##磁盘心跳容错时间,单位:秒
[GRP_CSS]
DCR_EP_NAME = CSS1 ##CSS 节点名
DCR_EP_HOST = 10.0.0.1 ##心跳地址
DCR_EP_PORT = 11286 ##CSS 端口
[GRP_CSS]
DCR_EP_NAME = CSS2
DCR_EP_HOST = 10.0.0.2
DCR_EP_PORT = 11286
[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 = ASM1 ##ASM 节点名,和 dmasvrmal 的 MAL_INST_NAME 一致
DCR_EP_SHM_KEY = 42424 ##共享内存标识
DCR_EP_SHM_SIZE = 1024 ##共享内存大小
DCR_EP_HOST = 10.0.0.1 ##心跳地址
DCR_EP_PORT = 11276 ##ASM 端口
DCR_EP_ASM_LOAD_PATH = /dev/asmdisk
[GRP_ASM]
DCR_EP_NAME = ASM2
DCR_EP_SHM_KEY = 42425
DCR_EP_SHM_SIZE = 1024
DCR_EP_HOST = 10.0.0.2
DCR_EP_PORT = 11276
DCR_EP_ASM_LOAD_PATH = /dev/asmdisk
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 57
[GRP_DSC]
DCR_EP_NAME = DSC1 ##实例名,和 dm.ini 的 INSTANCE_NAME 一致
DCR_EP_SEQNO = 0 ##组内序号,不能重复
DCR_EP_PORT = 5236 ##实例端口,和 dm.ini 的 PORT_NUM 一致
DCR_CHECK_PORT = 11256 ##DCR 检查端口
[GRP_DSC]
DCR_EP_NAME = DSC2
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 11256
EOF
(单节点操作bin目录下执行如下命令)
./dmasmcmd
create dcrdisk '/dev/asmdisk/asmsdd' 'DCR'
create votedisk '/dev/asmdisk/asmsdc' 'VOTE'
create asmdisk '/dev/asmdisk/asmsde' 'LOG'
create asmdisk '/dev/asmdisk/asmsdb' 'DATA'
init dcrdisk '/dev/asmdisk/asmsdd' from '/home/dmdba/dmdbms/dsc_config/dmdcr_cfg.ini' identified by '123456'
init votedisk '/dev/asmdisk/asmsdc' from '/home/dmdba/dmdbms/dsc_config/dmdcr_cfg.ini'
(两个节点均操作)
cat > dmasvrmal.ini << EOF
[MAL_INST1]
MAL_INST_NAME = ASM1
MAL_HOST = 10.0.0.1
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM2
MAL_HOST = 10.0.0.2
MAL_PORT = 7236
EOF
(两个节点均操作)
cat > dmdcr.ini << EOF
DMDCR_PATH = /dev/asmdisk/asmsdd
DMDCR_MAL_PATH =/home/dmdba/dmdbms/dsc_config/dmasvrmal.ini #dmasmsvr 使用的 ASM的MAL 配置文件路径
DMDCR_SEQNO = 0 #两台机器配置不同值,另一台1
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/dmdbms/dsc_config/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL =0
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdbms/dmdata/dsc01/dm.ini dcr_ini=/home/dmdba/dmdbms/dsc_config/dmdcr.ini
EOF
(两个节点均操作,先启动为主控节点)
./dmcss DCR_INI=/home/dmdba/dmdbms/dsc_config/dmdcr.ini
(主控节点操作,创建ASM磁盘组)
./dmasmtool dcr_ini=/home/dmdba/dmdbms/dsc_config/dmdcr.ini
create diskgroup 'DMDATA' asmdisk '/dev/asmdisk/asmsdb'
create diskgroup 'DMASMLOG' asmdisk '/dev/asmdisk/asmsde'
(单节点,主控节点操作)
cat > 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 = 2048
page_size = 32
dcr_path = /dev/asmdisk/asmsdd #dcr 磁盘路径,目前不支持 asm,只能是裸设备
dcr_seqno = 0
auto_overwrite = 1
[DSC1] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /home/dmdba/dmdbms/dmdata/dsc01
port_num = 5236
mal_host = 10.0.0.1
mal_port = 9340
log_path = +DMDATA/log/dsc1_log01.log
log_path = +DMDATA/log/dsc1_log02.log
[DSC2] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /home/dmdba/dmdbms/dmdata/dsc02
port_num = 5236
mal_host = 10.0.0.2
mal_port = 9340
log_path = +DMDATA/log/dsc2_log01.log
log_path = +DMDATA/log/dsc2_log02.log
EOF
--初始化数据库(慎重操作!)
./dminit control=/home/dmdba/dmdbms/dsc_config/dminit.ini
生成两个文件夹拷贝dsc02目录所有文件到另一个节点相同路径即可
(任意一台配置监视器)
DSC监控:
cat > dmcssm.ini <<EOF
#保证dmdcr_cfg.ini 中的 DCR_OGUID 保持一致
CSSM_OGUID = 210715
#配置所有 CSS 的连接信息,
#和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致
CSSM_CSS_IP = 10.0.0.1:11286
CSSM_CSS_IP = 10.0.0.2:11286
CSSM_LOG_PATH =/home/dmdba/dmdbms/log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
EOF
监视器启动:./dmcssm ini_path=/home/dmdba/dmdbms/dsc_config/dmcssm.ini
(两个节点root用户注册启动服务:如果不需要开机自启可以禁用服务)
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmcss -p css01 -dcr_ini /home/dmdba/dmdbms/dsc_config/dmdcr.ini
./dm_service_installer.sh -t dmasmsvr -p asm01 -dcr_ini /home/dmdba/dmdbms/dsc_config/dmdcr.ini -y DmCSSServicecss01
./dm_service_installer.sh -t dmserver -p DSC1 -dm_ini /opt/sy/dsc/dsc1_config/dm.ini -dcr_ini /opt/sy/dsc/dmdcr.ini -y DmASMSvrServiceDSC1
DSC集群开启数据库归档:(两个节点均需要操作,disql登录数据库执行如下命令即可。)
SQL> alter database mount;
SQL> alter database add archivelog 'type=local,dest=+DMDATA/archlog,file_size=128,space_limit=4096';
SQL> alter database archivelog;
SQL> alter database open;
至此手工搭建集群操作完毕。如果遇到ASM无法登录等问题,大多都是因为两节点MAL系统不通或者两端服务没有启动,请仔细按照搭建步骤操作即可。
目前ASM操作命令支持还比较少,以后会慢慢丰富起来,相比Oracle RAC的搭建流程简单许多,而且搭建时间也不用很久,现在让我们体验下DSC的服务吧。
在线服务平台地址:
https://eco.dameng.com