本文不涉及数据库软件安装和单机部署的细节,部署DSC前应当已经有单机系统的部署经验。
本文的物理部署环境是在同一台windows机器下配置的两台linux虚拟机。
类似于在linux环境下进行单机部署前的检查:检查操作系统版本、CPU类型是否与达梦数据库安装包保持一致。若不一致,将会导致数据库安装失败。
与在数据守护集群中介绍的心跳网络和MAL通讯系统一致,需要配置业务IP、内部数据交换网络IP、CSS端口、ASM端口、数据库实例端口、ASM通信的MAL端口、DCR通信的MAL端口。
网络配置表占位
配置虚拟机网络流程如下:
在VMware Workstation中,选择编辑–虚拟网络编辑器,选择VMnet8名称。

勾选NAT模式;
【使用本地DHCP服务将IP地址分配给虚拟机】这个选项是用于动态分配IP的,不勾选;
点击右侧的【NAT设置】。

这里有三个重要信息:
子网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设置】。

8.8.8.8是谷歌的全球通用DNS,114.114.114.114是国内三大运营商通用的DNS,可设置可不设置,最后可以通过验证ping www.baidu.com
来观察能否访问外部网络。再退一步说,本次实验也并不需要外部网络,能保证两台虚拟机之间可以互相访问即可。
完成上述设置后,打开windows机器上的控制面板–网络和Internet–网络连接–VMnet8,选择【属性】,选择【Internet协议版本4(TCP/IPv4)】,配置如下图:

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机器必须要互相连接才能进行下一步,外网实在连不上就算了。
裸设备名 | 容量 | 用途 |
---|---|---|
/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(归档日志磁盘) |
在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"

编辑两台虚拟机的vmx文件,在虚拟机存储的目录下。
需要在关闭虚拟机的情况下进行,否则会导致虚拟机报错损坏。

在最后面添加:
#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 = ""
在虚拟机设置里可以直接查看,新增了5块永久硬盘。

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

防火墙的开启会影响到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
安装数据库软件,在每个节点中都需要安装。
安装即可,不需要初始化实例。
本节内容在AB机器上都要执行。
使用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

两台虚拟机查询出的scsi_id应该一一对应,而且scsi_id后面还会用到,可以在这里保存下来。
编写/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将启动失败。
执行systemctl restart systemd-udev-trigger
,
执行ls -lth /dev_DSC
查询磁盘权限信息。

如果独立目录的路径不一致,一定要记住你自己设置的路径。
本节内容在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
在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'

本节内容在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
本节内容在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
在AB机器的bin目录下分别启动dmcss命令:
./dmcss DCR_INI=/opt/dameng/DSC/dmdcr.ini
在AB机器的bin目录下分别启动dmasmsvr命令:
./dmasmsvr DCR_INI=/opt/dameng/DSC/dmdcr.ini
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'
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机器对应目录。
分别在bin目录下启动两台机器的服务器。
./dmserver dcr_ini=/home/dmdba/config/dmdcr.ini /home/dmdba/config/DSC01_conf/dm.ini
创建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
文章
阅读量
获赞