注册
DMDSC安装部署流程
专栏/技术分享/ 文章详情 /

DMDSC安装部署流程

Coisini. 2025/09/26 79 0 0
摘要

本文不涉及数据库软件安装和单机部署的细节,部署DSC前应当已经有单机系统的部署经验。

本文的物理部署环境是在同一台windows机器下配置的两台linux虚拟机。

一、部署前准备工作

1. 确认软硬件环境

类似于在linux环境下进行单机部署前的检查:检查操作系统版本、CPU类型是否与达梦数据库安装包保持一致。若不一致,将会导致数据库安装失败。

2. 网络配置

与在数据守护集群中介绍的心跳网络和MAL通讯系统一致,需要配置业务IP、内部数据交换网络IP、CSS端口、ASM端口、数据库实例端口、ASM通信的MAL端口、DCR通信的MAL端口。

网络配置表占位

配置虚拟机网络流程如下:

在VMware Workstation中,选择编辑–虚拟网络编辑器,选择VMnet8名称。

![](D:\Xi Ling\笔记\源图片\屏幕截图 2025-08-05 150118.png)

勾选NAT模式;

【使用本地DHCP服务将IP地址分配给虚拟机】这个选项是用于动态分配IP的,不勾选;

点击右侧的【NAT设置】。

![](D:\Xi Ling\笔记\源图片\屏幕截图 2025-08-05 150635.png)

这里有三个重要信息:

子网IP:192.168.152.0;

子网掩码:255.255.255.0;

网关IP:192.168.152.2;

网关用于windows真实物理机与虚拟机间通信,如果我们要添加机器,机器IP只能是192.168.152.0~192.168.152.255这个范围内的。

192.168.152.255是广播IP无法使用,192.168.152.0是网段IP无法使用。也就是说,除了0、2、255这三个地址,其他在0到255内的数值可以随便设置。

点击左下方的【DNS设置】。

![](D:\Xi Ling\笔记\源图片\屏幕截图 2025-08-05 151235.png)

8.8.8.8是谷歌的全球通用DNS,114.114.114.114是国内三大运营商通用的DNS,可设置可不设置,最后可以通过验证ping www.baidu.com来观察能否访问外部网络。再退一步说,本次实验也并不需要外部网络,能保证两台虚拟机之间可以互相访问即可。

完成上述设置后,打开windows机器上的控制面板–网络和Internet–网络连接–VMnet8,选择【属性】,选择【Internet协议版本4(TCP/IPv4)】,配置如下图:

![](D:\Xi Ling\笔记\源图片\屏幕截图 2025-08-05 151916.png)

IP地址最后8位选择除了0、2、255的数字即可,在这里选择100,剩余和虚拟机查询出的结果保持一致。

回到虚拟机,打开终端,以root用户登录,执行vim /etc/sysconfig/network-scripts/ifcfg-ens33

对于A虚拟机,修改内容如下:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO="static"  # BOOTPROTO=none改为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=ens33
UUID=eb86e49a-d6e8-47c7-8ad1-db29a223f2f1
DEVICE=ens33
ONBOOT=yes     # no改成yes

GATEWAY=192.168.152.2
NETMASK=255.255.255.0
IPADDR=192.168.152.101    # 自己选择的A虚拟机的IP
DNS1=8.8.8.8
DNS2=114.114.114.114

对于B虚拟机,修改内容如下:

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=ens33
UUID=eb86e49a-d6e8-47c7-8ad1-db29a223f2f1
DEVICE=ens33
ONBOOT=yes

GATEWAY=192.168.152.2
NETMASK=255.255.255.0
IPADDR=192.168.152.102    # 自己选择的B虚拟机的IP
DNS1=8.8.8.8
DNS2=114.114.114.114

在保存退出后,执行service network restart,重启网卡,使得配置生效。

如果重启失败,执行 ↓ 后再重启:

systemctl stop NetworkManager
systemctl disable NetworkManager    # 停止并禁用虚拟机 NetworkManager 服务

验证过程如下:

ping 192.168.152.102 # A机器pingB机器
ping 192.168.152.101 # B机器pingA机器
ping www.baidu.com # 验证虚拟机能否连接外网

如果这三步都能ping通,网络配置就顺利完成了。

如果显示unknown host,问题应该出现在网关(GATEWAY)、DNS设置、网线未接好,排错步骤如下:

ping 127.0.0.1     # ping的通说明tcp协议栈没有问题
ping 本机地址       # ping的通说明网卡没有问题
ping 默认网关       # ping的通说明包可以到达路由器
ping DNS服务器地址  

重新检查网关配置是否一致,前三段IP地址是否一致,虚拟机的防火墙是否关闭。

A、B机器必须要互相连接才能进行下一步,外网实在连不上就算了。

3. 共享硬盘配置

1). 共享存储规划

裸设备名 容量 用途
/dev/sdb 10G /dev/asmdata0(数据磁盘)
/dev/sdc 5G /dev/asmdcr(DCR磁盘)
/dev/sdd 5G /dev/asmvote(vote磁盘)
/dev/sde 10G /dev/asmlog0(redo日志磁盘)
/dev/sdf 10G /dev/asmarch0(归档日志磁盘)

2). 创建共享磁盘

在windows机器上使用cmd命令行创建共享磁盘。如果指定的共享磁盘的存放目录如果不存在需要提前创建。

在VMware的安装目录下执行:

.\vmware-vdiskmanager.exe -c -s 10GB -a lsilogic -t 2 "D:\VMwareData\share-data0.vmdk"
.\vmware-vdiskmanager.exe -c -s 5GB -a lsilogic -t 2 "D:\VMwareData\share-dcr.vmdk" 
.\vmware-vdiskmanager.exe -c -s 5GB -a lsilogic -t 2 "D:\VMwareData\share-vote.vmdk" 
.\vmware-vdiskmanager.exe -c -s 10GB -a lsilogic -t 2 "D:\VMwareData\share-log0.vmdk"
.\vmware-vdiskmanager.exe -c -s 10GB -a lsilogic -t 2 "D:\VMwareData\share-arch0.vmdk"

![](D:\Xi Ling\笔记\源图片\屏幕截图 2025-08-05 091910.png)

3). 编辑vmx文件

编辑两台虚拟机的vmx文件,在虚拟机存储的目录下。

需要在关闭虚拟机的情况下进行,否则会导致虚拟机报错损坏。

![](D:\Xi Ling\笔记\源图片\屏幕截图 2025-08-05 161826.png)

在最后面添加:

#shared disks configure
diskLib.dataCacheMaxSize=0        
diskLib.dataCacheMaxReadAheadSize=0
diskLib.dataCacheMinReadAheadSize=0
diskLib.dataCachePageSize=4096    
diskLib.maxUnsyncedWrites = "0"
 
disk.locking = "FALSE"
scsi1.sharedBus = "virtual"
scsi1.present = "TRUE"
scsi1.virtualDev = "lsilogic"
 
scsi1:0.mode = "independent-persistent"
scsi1:0.deviceType = "disk"
scsi1:0.present = "TRUE"
scsi1:0.fileName = "P:\VMtools\dsc1\sharedisk\share-data0.vmdk" 
scsi1:0.redo = ""
 
scsi1:1.mode = "independent-persistent"
scsi1:1.deviceType = "disk"
scsi1:1.present = "TRUE"
scsi1:1.fileName = "P:\VMtools\dsc1\sharedisk\share-dcr.vmdk" 
scsi1:1.redo = ""
 
scsi1:2.mode = "independent-persistent"
scsi1:2.deviceType = "disk"
scsi1:2.present = "TRUE"
scsi1:2.fileName = "P:\VMtools\dsc1\sharedisk\share-vote.vmdk" 
scsi1:2.redo = ""
 
scsi1:3.mode = "independent-persistent"
scsi1:3.deviceType = "disk"
scsi1:3.present = "TRUE"
scsi1:3.fileName = "P:\VMtools\dsc1\sharedisk\share-log0.vmdk" 
scsi1:3.redo = ""
 
scsi1:4.mode = "independent-persistent"
scsi1:4.deviceType = "disk"
scsi1:4.present = "TRUE"
scsi1:4.fileName = "P:\VMtools\dsc1\sharedisk\share-arch0.vmdk"
scsi1:4.redo = ""

4). 查询虚拟机

在虚拟机设置里可以直接查看,新增了5块永久硬盘。

![](D:\Xi Ling\笔记\源图片\屏幕截图 2025-08-05 165208.png)

在终端内使用root用户输入fdisk -l | grep dev/sd*查询。

![](D:\Xi Ling\笔记\源图片\屏幕截图 2025-08-05 170154.png)

4. 防火墙检查

防火墙的开启会影响到ASM的正常通讯,需要检查防火墙状态并关闭。

systemctl status firewalld  # 检查防火墙状态
防火墙关闭下的状态为Active: inactive (dead)。

在CentOS下是:
# 停止防火墙服务
systemctl stop firewalld
# 禁用开机启动
systemctl disable firewalld
# 检查状态(应显示 inactive)
systemctl status firewalld

在Ubuntu下是:
# 禁用防火墙
sudo ufw disable
# 检查状态(应显示 Status: inactive(dead))
sudo ufw status

二、数据库软件安装

安装数据库软件,在每个节点中都需要安装。

安装即可,不需要初始化实例。

三、DSC集群部署

1. 共享磁盘配置

本节内容在AB机器上都要执行。

1). 通过scsi_id获取磁盘信息

使用root用户登录,通过scsi_id获取磁盘信息。

/usr/lib/udev/scsi_id -g -u /dev/sdb
/usr/lib/udev/scsi_id -g -u /dev/sdc
/usr/lib/udev/scsi_id -g -u /dev/sdd
/usr/lib/udev/scsi_id -g -u /dev/sde
/usr/lib/udev/scsi_id -g -u /dev/sdf

![](D:\Xi Ling\笔记\源图片\屏幕截图 2025-08-06 090951.png)

两台虚拟机查询出的scsi_id应该一一对应,而且scsi_id后面还会用到,可以在这里保存下来。

2). 创建磁盘链接

编写/etc/udev/rules.d/99-dm-asmdevices.rules配置信息,创建磁盘链接。

vim /etc/udev/rules.d/99-dm-asmdevices.rules

添加以下内容:

## DCR磁盘配置,且在软链接之前创建文件夹 /dev_DSC 
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c2963c4b88efddc46dcf8b7b4e1d",SYMLINK+="DCR", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name;mkdir -p /dev_DSC; ln -s /dev/DCR /dev_DSC/DCR'"
## VOTE 磁盘配置 
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29fc4f3593802c686d30c108c37",SYMLINK+="VOTE", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name; ln -s /dev/VOTE /dev_DSC/VOTE'"
## DMDATA 磁盘配置 
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c2947e54731e28afeaae8cbab3f6",SYMLINK+="DMDATA", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name; ln -s /dev/DMDATA /dev_DSC/DMDATA'"
## DMLOG 磁盘配置,且在搭建完成之后,将权限直接赋予 dmdba组的dmdba用户 
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c2957c73650a97775344abc5b10d",SYMLINK+="DMLOG", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name; ln -s /dev/DMLOG /dev_DSC/DMLOG ; chown -R dmdba:dmdba /dev_DSC '"

需要根据上一步中查询到的scsi_id更改每一条中的RESULT,否则会无法执行。而且在这里并没有建立审计目录对应的磁盘链接,因为在这次实验中审计目录用不到,在实际的部署工作中,也需要建立审计目录的链接。

之所以要软链接到独立目录,是因为DMDSC启动时会扫描目录下所有磁盘,如果目录中存在与当前DMDSC系统无关的磁盘,则DMDSC将启动失败。

3). 重启systemd-udev-trigger服务

执行systemctl restart systemd-udev-trigger

执行ls -lth /dev_DSC查询磁盘权限信息。

![](D:\Xi Ling\笔记\源图片\屏幕截图 2025-08-06 092924.png)

如果独立目录的路径不一致,一定要记住你自己设置的路径。

2. 设置DCR初始化配置文件

本节内容在AB机器上都要执行。dmdcr_cfg.ini文件内容一致。

使用dmdba用户,建立配置文件存放目录,并在该文件夹下新建dmdcr_cfg.ini文件。

mkdir -p /home/dmdba/config

vim /home/dmdba/config/dmdcr_cfg.ini

我的配置文件存放目录为/opt/dameng/DSC。

添加以下内容:

DCR_N_GRP               = 3  ##集群环境有多少个GROUP,范围:1~16
DCR_VTD_PATH            = /dev_DSC/VOTE   ##规划为 vote 的磁盘
DCR_OGUID               = 63635   ## 消息标识,一个组里面只有一个。

[GRP]  #新建一个 GROUP
  DCR_GRP_TYPE           = CSS  ##组类型(CSS/ASM/DB)
  DCR_GRP_NAME           = GRP_CSS  ##组名
  DCR_GRP_N_EP           = 2  ##组内节点个数
  DCR_GRP_DSKCHK_CNT     = 60  ##磁盘心跳容错时间,单位:秒

[GRP_CSS]
  DCR_EP_NAME            = CSS0   ##CSS 节点名
  DCR_EP_HOST            = 192.168.152.101   ##心跳地址
  DCR_EP_PORT            = 9836   ##CSS 端口

[GRP_CSS]
  DCR_EP_NAME            = CSS1
  DCR_EP_HOST            = 192.168.152.102
  DCR_EP_PORT            = 9837

[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  ##ASM节点名,和dmasvrmal的 MAL_INST_NAME一致
  DCR_EP_SHM_KEY         = 93360  ##共享内存标识
  DCR_EP_SHM_SIZE        = 512  ##共享内存大小
  DCR_EP_HOST            = 192.168.152.101  ##心跳地址
  DCR_EP_PORT            = 5836  ##ASM 端口
  DCR_EP_ASM_LOAD_PATH   = /dev_DSC

[GRP_ASM]
  DCR_EP_NAME            = ASM1
  DCR_EP_SHM_KEY         = 93361
  DCR_EP_SHM_SIZE        = 512
  DCR_EP_HOST            = 192.168.152.102
  DCR_EP_PORT            = 5837
  DCR_EP_ASM_LOAD_PATH   = /dev_DSC

[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            = DSC01  ##实例名,和 dm.ini 的 INSTANCE_NAME 一致
  DCR_EP_SEQNO           = 0  ##组内序号,不能重复
  DCR_EP_PORT            = 5236  ##实例端口,和 dm.ini 的 PORT_NUM 一致
  DCR_CHECK_PORT         = 16001   ##DCR 检查端口

[GRP_DSC]
  DCR_EP_NAME            = DSC02
  DCR_EP_SEQNO           = 1
  DCR_EP_PORT            = 5236
  DCR_CHECK_PORT         = 16002

3. 初始化磁盘组

在A机器上,使用dmdba用户,在数据库安装的bin目录下执行./dmasmcmd仅需A机器执行。

进入ASM后执行:

create dcrdisk '/dev_DSC/DCR' 'DCR' 
create votedisk '/dev_DSC/VOTE' 'VOTE' 
create asmdisk '/dev_DSC/DMDATA' 'DMDATA' 
create asmdisk '/dev_DSC/DMLOG' 'DMLOG' 
init dcrdisk '/dev_DSC/DCR' from '/opt/dm/DSC/dmdcr_cfg.ini' identified by '123456Aa' 
init votedisk '/dev_DSC/VOTE' from '/opt/dm/DSC/dmdcr_cfg.ini'

![](D:\Xi Ling\笔记\源图片\屏幕截图 2025-08-05 111725.png)

4. 设置ASM的MAL系统配置文件

本节内容在AB机器上都要执行。dmasvrmal.ini文件内容一致。

vim /opt/dameng/DSC/dmasvrmal.ini

[MAL_INST1]

 MAL_INST_NAME = ASM0   #数据库实例名,与 dm.ini 的 INSTANCE_NAME 配置项保持一致,MAL 系统中数据库实例名要保持唯一。
 
 MAL_HOST = 192.168.152.101      #MAL IP地址,使用 MAL_HOST + MAL_PORT 创建 MAL 链路
 
 MAL_PORT = 4836        #MAL监听端口,用于数据守护、DSC、MPP等环境中各节点实例之间MAL链路配置,监听端端口配置此参数,范围1024~65534,发起连接端的端口在 1024~65535之间随机分配。

[MAL_INST2]

 MAL_INST_NAME = ASM1
 
 MAL_HOST = 192.168.152.102
 
 MAL_PORT = 4837

5. 设置DCR启动配置文件

本节内容在AB机器上都要执行。dmdcr.ini文件内容不一致。

A机器内容如下:

vim /opt/dameng/DSC/dmdcr.ini

DMDCR_PATH = /dev_DSC/DCR

DMDCR_MAL_PATH =/opt/dameng/DSC/dmasvrmal.ini      #dmasmsvr 使用的 MAL 配置文件路径

DMDCR_SEQNO = 0

#ASM 重启参数,命令行方式启动

DMDCR_ASM_RESTART_INTERVAL = 0

DMDCR_ASM_STARTUP_CMD = /opt/dm/bin/dmasmsvr dcr_ini=/opt/dameng/DSC/dmdcr.ini

#DB 重启参数,命令行方式启动

DMDCR_DB_RESTART_INTERVAL = 0

DMDCR_DB_STARTUP_CMD = /opt/dm/bin/dmserver path=/opt/dameng/DSC/DSC01_conf/dm.ini dcr_ini=/opt/dameng/DSC/dmdcr.ini

B机器内容如下:

vim /opt/dameng/DSC/dmdcr.ini

DMDCR_PATH = /dev_DSC/DCR

DMDCR_MAL_PATH =/opt/dameng/DSC/dmasvrmal.ini      #dmasmsvr 使用的 MAL 配置文件路径

DMDCR_SEQNO = 1

#ASM 重启参数,命令行方式启动

DMDCR_ASM_RESTART_INTERVAL = 0

DMDCR_ASM_STARTUP_CMD = /opt/dm/bin/dmasmsvr dcr_ini=/opt/dameng/DSC/dmdcr.ini

#DB 重启参数,命令行方式启动

DMDCR_DB_RESTART_INTERVAL = 0

DMDCR_DB_STARTUP_CMD = /opt/dm/bin/dmserver path=/opt/dameng/DSC/DSC01_conf/dm.ini dcr_ini=/opt/dameng/DSC/dmdcr.ini

6. 启动DMCSS、DMASM服务

在AB机器的bin目录下分别启动dmcss命令:

./dmcss DCR_INI=/opt/dameng/DSC/dmdcr.ini

在AB机器的bin目录下分别启动dmasmsvr命令:

./dmasmsvr DCR_INI=/opt/dameng/DSC/dmdcr.ini

7. 创建ASM磁盘组

asm启动成功后,A机器使用dmdba用户在bin目录下启动dmasmtool工具:

./dmasmtool DCR_INI=/opt/dameng/DSC/dmdcr.ini

创建一个DATA磁盘组和一个LOG磁盘组:

CREATE DISKGROUP DMDATA asmdisk '/dev_DSC/DMDATA'
CREATE DISKGROUP DMLOG asmdisk '/dev_DSC/DMLOG'

8. 初始化DSC集群数据库实例

A机器使用dmdba用户执行以下命令:

vim /opt/dameng/DSC/dminit.ini

DB_NAME= dsc2
SYSTEM_PATH= +DMDATA/data
SYSTEM= +DMDATA/data/system.dbf
SYSTEM_SIZE= 128
ROLL= +DMDATA/data/roll.dbf
ROLL_SIZE= 128
MAIN= +DMDATA/data/main.dbf
MAIN_SIZE= 128
CTL_PATH= +DMDATA/data/dm.ctl
LOG_SIZE= 2048
DCR_PATH= /dev_DSC/DCR
DCR_SEQNO= 0
AUTO_OVERWRITE= 2
PAGE_SIZE = 16
EXTENT_SIZE = 16
SYSDBA_PWD=DMdba_123
SYSAUDITOR_PWD=DMauditor_123

[DSC01]
CONFIG_PATH= /home/dmdba/config/DSC01_conf
PORT_NUM = 5236
MAL_HOST= 192.168.160.155
MAL_PORT= 6536
LOG_PATH= +DMLOG/log/DSC01_log1.log
LOG_PATH= +DMLOG/log/DSC01_log2.log
[DSC02]
CONFIG_PATH= /home/dmdba/config/DSC02_conf
PORT_NUM = 5237
MAL_HOST= 192.168.160.156
MAL_PORT= 6537
LOG_PATH= +DMLOG/log/DSC02_log1.log
LOG_PATH= +DMLOG/log/DSC02_log2.log

在bin目录下执行:

./dminit control=/home/dmdba/config/dminit.ini

执行完成后,会在config_path目录下生成配置文件 DM.INI 和 DMMAL.INI;将配置文件,从A机器复制到B机器对应目录。

9. 启动数据库服务

分别在bin目录下启动两台机器的服务器。

./dmserver dcr_ini=/home/dmdba/config/dmdcr.ini /home/dmdba/config/DSC01_conf/dm.ini

10. 配置并启动DMCSS监视器

创建DMCSSM 的日志存放路径:

mkdir /home/dmdba/dm/cssmlog

在任意节点上新建监视器配置文件,执行以下命令:

vi /home/dmdba/config/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.160.155:9836  

CSSM_CSS_IP = 192.168.160.155:9837  

CSSM_LOG_PATH = /home/dmdba/dm/cssmlog #监视器日志文件存放路径  

CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大 32 MB  

CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间

最后,在bin目录下启动监视器:

./dmcssm /home/dmdba/config/dmcssm.ini

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服