注册

达梦共享存储集群DMDSC搭建

zf 2025/09/22 152 0

达梦共享存储集群DSC搭建与验证

准备工作

  • 虚拟机2台:使用VMWare和搭建两台centos7虚拟机 搭建完成后两台虚拟机都需要关闭防火墙和selinux,分别执行:
sudo systemctl disable firewalld
sudo vi /etc/selinux/config
#修改如下内容
SELINUX=disabled

两台机器均执行以下内容,默认使用root用户:

  1. 创建用户和组
#创建组
groupadd dinstall

#执行以下命令,新建用户 dmdba:
useradd  -g dinstall -m -d /home/dmdba -s /bin/bash  dmdba

#执行以下命令,修改 dmdba 用户密码:
passwd dmdba
#输入密码并确认。
  1. 用户资源限制
#执行以下命令,修改 dmdba 用户资源限制:
vim /etc/security/limits.conf

#文件末尾添加如下内容:
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc  65536
dmdba hard nproc  65536
dmdba soft stack  65536
dmdba hard stack  65536
  1. 设置用户环境变量
#执行以下命令,修改 dmdba 用户环境变量:
vi /home/dmdba/.bash_profile

#文件末尾添加如下内容:
export DM_HOME=/home/dmdba/dmdbms
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
  1. 使用dmdba用户安装DM8数据库软件,软件目录为/home/dmdba/dmdbms(安装完成后不要初始化实例数据库
    1.png
    接着往下点下一步,key文件目前不需要直接点下一步,安装包目录/home/dmdba/dmdbms
    2.png
    这里点击取消,不要初始化实例数据库
    3.png
  2. 使用dmdba用户创建需要的目录
mkdir /home/dmdba/dmdbms/data
  • 共享磁盘搭建:可以使用VMWare工具直接新建四块物理磁盘用于共享(参考https://blog.csdn.net/January01/article/details/119008348),也可以先新建一大块物理磁盘再用linux系统进行分区(本文选用方法)
  1. 使用 VMware 的工具在指定目录创建虚拟硬盘
    4.png
  2. 在虚拟机的目录下编辑 虚拟机名称.vmx 文件,两台虚拟机都需要编辑,例如本次试验中两台虚拟机分别位于 D:\workfile\vm\new_grid1 和 D:\workfile\vm\new_grid2 目录下,那么去到这两个目录下找到 ngrid1.vmx 和 ngrid2.vmx 文件添加以下两行
disk.locking="FALSE"
disk.EnableUUID="TRUE"
  1. 虚拟机添加共享硬盘 两台虚拟机选择编辑虚拟机设置 -> 添加硬盘 -> 使用现有虚拟磁盘,选定刚创建的虚拟硬盘目录进行添加。
    5.png
    登录任意一台虚拟机,对磁盘划分存储,因为是共享磁盘,完成后另一台虚拟机也会自动完成对该硬盘的划分存储。执行以下命令划分存储:
lsblk
fdisk /dev/sdb

然后输入n、p、1、回车、+1G完成第一块分区设置,完成后继续输入n、p、2、回车、+1G完成第二块分区设置,继续输入n、p、3、回车、+10G完成第三块分区设置,最后输入n、p、1、回车、回车完成第四块分区设置。 磁盘划分完毕,使用lsblk命令可以查看磁盘划分完毕;
6.png
这时登陆另一台虚拟机可以发现已划分完毕的磁盘。
4. 两台虚拟机都编辑文件

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"

至此,准备工作执行完毕

DSC配置

  • 配置初始化文件 dmdcr_cfg.ini 两节点均执行以下命令,使用dmdba用户:
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
#按照自己两个节点的ip修改
DCR_EP_HOST = 192.168.253.153 
DCR_EP_PORT = 9341
[GRP_CSS]
DCR_EP_NAME = CSS1
#按照自己两个节点的ip修改
DCR_EP_HOST = 192.168.253.154
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
#按照自己两个节点的ip修改
DCR_EP_HOST = 192.168.253.153
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
#按照自己两个节点的ip修改
DCR_EP_HOST = 192.168.253.154
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用户执行以下操作:
cd /home/dmdba/dmdbms/bin
./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 'DMdba123456'
ASM>init votedisk '/dev/raw/raw2' from '/home/dmdba/dmdbms/data/dmdcr_cfg.ini'

  • 配置文件 dmasvrmal.ini 节点一二使用dmdba用户进行以下配置:
vi /home/dmdba/dmdbms/data/dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME     = ASM0
#按照自己两个节点的ip修改
MAL_HOST          = 192.168.253.153
MAL_PORT          = 7236
[MAL_INST2]
MAL_INST_NAME     = ASM1
#按照自己两个节点的ip修改
MAL_HOST          = 192.168.253.154
MAL_PORT          = 7237
  • 配置文件 dmdcr.ini DMASM 的两个节点分别配置 dmdcr.ini,dmdcr_path 相同,dmasvrmal.ini 文件内容也相同,dmdcr_seqno 分别为 0 和 1;两节点使用dmdba用户执行以下操作:
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

至此,DSC配置完毕。

启动集群

  • 启动 dmcss 和 dmasm 两个节点使用dmdba用户分别在 $DM_HOME/bin 目录下先后启动 dmcss、dmasm 程序,其中dmasm在配置文件中设置了自动拉起,不需要单独开启,执行以下命令:
./dmcss DCR_INI=/home/dmdba/dmdbms/data/dmdcr.ini

注意观察两节点css、asm程序是否均正常启动,若未正常启动,则后续实例化数据库无法执行成功,未正常启动很有可能是配置文件中网络ip或其他地方设置错误,或者两节点未关闭防火墙或者selinux服务,或者两节点网络通信不正常,可逐一排查。

  • 创建 dmasm 磁盘组 使用 dmasmtool 工具创建 DMASM 磁盘组,在节点一(其中一个节点执行即可)的 $DM_HOME/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
#以下两个密码可以自己调整
SYSDBA_PWD=DMdba123456
SYSAUDITOR_PWD=DMdba123456
[DSC0]
config_path = /home/dmdba/dmdbms/data/dsc0_config
port_num = 5238
#按照自己两个节点的ip修改
mal_host = 192.168.253.153
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
#按照自己两个节点的ip修改
mal_host = 192.168.253.154
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

以下截图为初始化成功,若报ASM连接错误,则排查集群CSS服务和ASM服务是否启动成功。
7.png
初始化后 data 目录下会生成 dsc0_config 和 dsc1_config 两个文件,将 dsc1_config 文件复制到节点二的 data 目录下 使用dmdba用户分别进入 $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 集群情况:

  1. 直接通过 CSS 窗口输入 show 命令进行查看
  2. 配置监视器,在监视器中输入 show 命令进行查看 节点一 CSS 窗口 show 命令查看 inst_status 字段为 OPEN,vtd_status 字段为 WORKING,active 字段为 TRUE 说明 db 服务正常
    8.png

注册服务

  1. 以上启动方式为前台启动,仅用于搭建过程中验证集群配置是否正常。在确认配置正常后需要注册为系统服务,方便启动和关闭集群以及实现开机自动启动。

两个节点都需要操作,使用 root 用户执行,到数据库安装目录的 script/root 目录下:

#节点 1 执行以下命令
./dm_service_installer.sh -t dmcss -p css1 -dcr_ini /home/dmdba/dmdbms/data/dmdcr.ini

#节点 2 执行以下命令
./dm_service_installer.sh -t dmcss -p css2 -dcr_ini /home/dmdba/dmdbms/data/dmdcr.ini
  1. 关闭前台启动的 css,以服务方式启动 css。
#节点 1 执行以下命令
systemctl start DmCSSServicecss1

#节点 2 执行以下命令
systemctl start DmCSSServicecss2

3.相关命令
关闭数据库:监视器中执行 ep stop dsc
关闭 asm:监视器中执行 ep stop asm
关闭css:各节点关闭各自的 css 服务 systemctl stop DmCSSServicecss1/DmCSSServicecss2
启动 css: 各节点启动各自的 css 服务 systemctl start DmCSSServicecss1/DmCSSServicecss2
启动 asm:配置了自动拉起,等待 asm 自动启动
启动数据库:配置了自动拉起,等待数据库自动启动

验证集群状态

  1. 配置监视器查看 任意节点新建监视器配置文件,执行以下命令:
vim /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.253.153:9341
CSSM_CSS_IP = 192.168.253.154:9343
CSSM_LOG_PATH =/home/dmdba/dmdbms/log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大 32 MB
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间

启动监视器,dmdba 用户执行,到数据库软件安装目录 bin 下执行以下命令:

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

然后输入show查看状态,确认集群状态正常

  1. 实际测试共享集群数据库是否正常工作 开启集群后两节点均使用disql登录数据库,一个节点创建表并插入数据,检查另一节点是否能获取该表数据,另一节点同理:
    9.png
    10.png
    均能查看对方插入的数据,集群正常工作。
回答 0
暂无回答
扫一扫
联系客服