DMDSC 共享存储集群搭建

DMDSC 共享存储集群搭建

DM 共享存储数据库集群的英文全称 DM Data Shared Cluster,简称 (DMDSC)。DMDSC 允许多个数据库实例同时访问、操作同一数据库,具有高可用、高性能、负载均衡等特性。并支持故障自动切换和故障自动重加入,某一个数据库实例故障后,不会导致数据库服务无法提供

环境

服务器IP
节点1192.168.93.162
节点2192.168.93.163
VMware 虚拟机创建双网卡

这里记录一下配置双网卡的流程,本试验不需要双网卡

VMware 虚拟机关闭情况下点击该虚拟机的编辑虚拟机设置选项进入该界面,点击下方添加,选择网络适配器

在这里插入图片描述

进入到虚拟机,执行以下命令查看网络配置并修改网络配置文件

ifconfig

在这里插入图片描述

这里有两个 ens 前缀的网卡配置,ens 33 为第一个网卡,ens 37 为刚才添加的第二个网卡

cd /etc/sysconfig/network-scripts/
ls | grep ifcfg

在这里插入图片描述

这里将配置文件 ifcfg-ens33 复制一份,命名为 ifcfg-ens37 ,和上面 ifconfig 查询得到的前缀对应,并且修改 ifcfg-ens37 配置文件,修改 name 和 device 为 ens37,固定 IP 并将 IP 修改为期望值,修改完成后重启网络服务使其生效

cp ifcfg-ens33 ifcfg-ens37
vi ifcfg-ens37

~~~
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37
UUID=3ce6d31b-c654-4045-b745-b6a72c78a2bb
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.xxx.xxx
DNS1=192.168.xxx.xxx
GATEWAY=192.168.xxx.xxx
~~~

service network restart

至此双网卡创建完毕

VMware 虚拟机创建共享磁盘

使用 VMware 的工具在指定目录创建虚拟硬盘

.\vdiskmanager-windows-7.0.1.exe -c -s 20G -a lsilogic -t 2 "G:\CentDM\share.vmdk"

在这里插入图片描述

在虚拟机的目录下编辑 虚拟机名称.vmx 文件,两台虚拟机都需要编辑,例如本次试验中两台虚拟机分别位于 F:\DM\DM01F:\DM\DM02 目录下,那么去到这两个目录下找到 DM01.vmxDM02.vmx 文件添加以下两行

disk.locking="FALSE"
disk.EnableUUID="TRUE"

两台虚拟机选择添加硬盘 -> 使用现有虚拟磁盘,选定刚创建的虚拟硬盘目录进行添加

在这里插入图片描述

登陆任意一台虚拟机,对磁盘划分存储,因为是共享磁盘,完成后另一台虚拟机也会自动完成对该硬盘的划分存储

执行以下命令划分存储

lsblk

在这里插入图片描述

fdisk /dev/sdb

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

磁盘划分完毕,如下所示,sdb 分为四个区,分别为 sdb1,sdb2,sdb3 和 sdb4

在这里插入图片描述

这时登陆另一台虚拟机可以发现已经划分完毕

在这里插入图片描述

两台虚拟机都编辑文件

vim /etc/udev/rules.d/80-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="dmdba", GROUP="dinstall", MODE="660"
~~~

两台虚拟机都执行以下命令进行设备绑定

partprobe /dev/sdb
udevadm control --reload-rules
udevadm trigger --type=devices --action=change

两台虚拟机查看绑定情况

ll /dev/raw/*
blockdev --getsize64 /dev/raw/raw1
blockdev --getsize64 /dev/raw/raw2
blockdev --getsize64 /dev/raw/raw3
blockdev --getsize64 /dev/raw/raw4

在这里插入图片描述

chown -R dmdba:dinstall /dev/raw/raw1
chown -R dmdba:dinstall /dev/raw/raw2
chown -R dmdba:dinstall /dev/raw/raw3
chown -R dmdba:dinstall /dev/raw/raw4

至此共享磁盘创建完毕

DSC 配置

配置初始化文件 dmdcr_cfg.ini

节点一二均进行以下配置

vi /home/dmdba/dmdbms/data/dmdcr_cfg.ini

~~~
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.244.162
DCR_EP_PORT = 9341
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.244.163
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.244.162
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.244.163
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_CHECK_PORT = 9741
DCR_EP_PORT = 5238
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_CHECK_PORT = 9742
DCR_EP_PORT = 5238
~~~
DMASMCMD 初始化

节点一执行以下操作

[dmdba@192 data]$ cd /home/dmdba/dmdbms/bin
[dmdba@192 data]$ ./dmasmcmd

ASM>create dcrdisk '/dev/raw/raw1' 'dcr'
ASM>create votedisk '/dev/raw/raw2' 'vote'
ASM>create asmdisk '/dev/raw/raw3' 'LOG0'
ASM>create asmdisk '/dev/raw/raw4' 'DATA0'
ASM>init dcrdisk '/dev/raw/raw1' from '/home/dmdba/dmdbms/data/dmdcr_cfg.ini' identified by '123456'
ASM>init votedisk '/dev/raw/raw2' from '/home/dmdba/dmdbms/data/dmdcr_cfg.ini'

在这里插入图片描述

配置文件 dmasvrmal.ini

节点一二均进行以下配置

vi /home/dmdba/dmdbms/data/dmasvrmal.ini

~~~
[MAL_INST1]
MAL_INST_NAME     = ASM0
MAL_HOST          = 192.168.244.162
MAL_PORT          = 7236
[MAL_INST2]
MAL_INST_NAME     = ASM1
MAL_HOST          = 192.168.244.163
MAL_PORT          = 7237
~~~
配置文件 dmdcr.ini

DMASM 的两个节点分别配置 dmdcr.ini,dmdcr_path 相同,dmasvrmal.ini 文件内容也相同,dmdcr_seqno 分别为 0 和 1

vi /home/dmdba/dmdbms/data/dmdcr.ini       #节点一

~~~
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/dmdba/dmdbms/data/dmasvrmal.ini 

#dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0
 
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 20       #为0时不自动拉起
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/dmdbms/data/dmdcr.ini
 
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 20       #为0时不自动拉起
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/dmdbms/data/dsc0_config/dm.ini dcr_ini=/home/dmdba/dmdbms/data/dmdcr.ini
~~~

vi /home/dmdba/dmdbms/data/dmdcr.ini       #节点二

~~~
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/dmdba/dmdbms/data/dmasvrmal.ini 

#dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 1
 
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 20       #为0时不自动拉起
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/dmdbms/data/dmdcr.ini
 
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 20       #为0时不自动拉起
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/dmdbms/data/dsc1_config/dm.ini dcr_ini=/home/dmdba/dmdbms/data/dmdcr.ini
~~~

启动集群

启动 dmcss 和 dmasm

两个节点分别在 $DM_HOME/bin 目录下先后启动 dmcss、dmasm 程序,如果启动失败尝试关闭 firewalld 和SELinux

./dmcss DCR_INI=/home/dmdba/dmdbms/data/dmdcr.ini
./dmasmsvr DCR_INI=/home/dmdba/dmdbms/data/dmdcr.ini

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

创建 dmasm 磁盘组

使用 dmasmtool 工具创建 DMASM 磁盘组,在节点一(其中一个节点执行即可)的 $DM_HOME/bin 目录下执行以下命令

[dmdba@localhost bin]$ ./dmasmtool DCR_INI=/home/dmdba/dmdbms/data/dmdcr.ini
ASM>create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
ASM>create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
初始化库

在节点一上配置 dminit.ini 文件

vi /home/dmdba/dmdbms/data/dminit.ini

~~~
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_seqno = 0
auto_overwrite = 1
page_size = 16
[DSC0]
config_path = /home/dmdba/dmdbms/data/dsc0_config
port_num = 5238
mal_host = 192.168.244.162
mal_port = 9340
log_path = +DMLOG/log/dsc0_log01.log
log_path = +DMLOG/log/dsc0_log02.log
[DSC1]
config_path = /home/dmdba/dmdbms/data/dsc1_config
port_num = 5238
mal_host = 192.168.244.163
mal_port = 9341
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
~~~

通过 dminit 初始化库

./dminit control=/home/dmdba/dmdbms/data/dminit.ini

在这里插入图片描述

初始化后 data 目录下会生成 dsc0_configdsc1_config 两个文件,将 dsc1_config 文件复制到节点二的 data 目录下

分别进入 $DM_HOME/bin 目录下前台启动节点一和节点二

./dmserver /home/dmdba/dmdbms/data/dsc0_config/dm.ini dcr_ini=/home/dmdba/dmdbms/data/dmdcr.ini       #节点一启动
./dmserver /home/dmdba/dmdbms/data/dsc1_config/dm.ini dcr_ini=/home/dmdba/dmdbms/data/dmdcr.ini       #节点二启动

以下有两种方式查看 DSC 集群情况

  • 直接通过 CSS 窗口输入 show 命令进行查看
  • 配置监视器,在监视器中输入 show 命令进行查看

以下介绍窗口查看的情况,监视器的配置在备注章节进行介绍

节点一 CSS 窗口 show 命令查看 sys_status 字段为 OPEN,vtd_status 字段为 WORKING,active 字段为 TRUE 说明 db 服务正常

在这里插入图片描述

如需在任一节点上登陆 DSC 集群,需要修改 dm_svc.conf 文件,文件路径一般为 /etc/dm_svc.conf,在该文件中添加 DSC=(192.168.244.162:5238,192.168.244.163:5238),修改后重启客户端程序生效

在这里插入图片描述

至此 DSC 数据共享集群搭建完成

备注

总结一下 DMDSC 的启动关闭流程

启动

DMDSC 集群中的每个节点均按以下流程启动

./dmcss dcr_ini=/path_to_dmdcr.ini/dmdcr.ini  #启动css
./dmasmsvr dcr_ini=/path_to_dmdcr.ini/dmdcr.ini  #启动asmvr
./dmserver /path_to_dm.ini/dm.ini dcr_ini=/path_to_dmdcr.ini/dmdcr.ini  #启动实例
配置监视器

前文有提到过除了直接在 CSS 窗口进行输入查看集群状态,还可以通过配置监视器的方式进行,这里简单介绍一下监视器的配置和使用流程

在集群中任意节点上创建 dmcssm.ini 文件

vi /home/dmdba/dmdbms/data/dmcssm.ini 

~~~
#和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致
CSSM_OGUID = 63635
#配置所有 CSS 的连接信息,
#和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致
CSSM_CSS_IP = 192.168.244.162:9341
CSSM_CSS_IP = 192.168.244.163:9343

CSSM_LOG_PATH = /home/dmdba/dmdbms/data/cssm/log #监视器日志文件存放路径

CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
~~~

在该节点上启动监视器

./dmcssm ini_path=/home/dmdba/dmdbms/data/dmcssm.ini

在这里插入图片描述

在这里插入图片描述

关闭

如果 DMCSS 配置了 DMASMSVR/dmserver 自动拉起命令,可以先仅启动 DMCSS,然后启动 DMCSSM,在 DMCSSM 控制台执行命令 “ep startup GRP_ASM” 启动 DMASMSVR 集群, 执行 “ep startup GRP_DSC” 启动 dmserver 集群(其中 GRP_ASM/GRP_DSC 为 dmasmsvr/dmserver 集群的组名)。类似地执行 “ep stop GRP_ASM/GRP_DSC” 可以关闭 dmasmsvr/dmserver 集群环境

关闭 DMDSC 集群环境时,应先关闭 dmserver,再依次关闭 DMASMSVR 和 DMCSS

关闭数据库与 asm:监视器中执行

ep stop GRP_DSC       #关闭数据库
ep stop GRP_ASM       #关闭asm

达梦在线服务平台:https://eco.dameng.com

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值