一、安装数据库软件
在集群的2个节点上分别部署数据库软件,安装路径为/home/dmdba/dmdsc
二、磁盘准备
进入虚拟机的安装路径,创建共享存储的磁盘文件:
E:\>cd program files
E:\program files>vmware-vdiskmanager.exe -c -s 1GB -a lsilogic -t 2 "E:\vm\hadoop3_slaves01\DCS-share-dcr.vmdk"
VixDiskLib: Invalid configuration file parameter. Failed to read configuration file.
Creating disk 'E:\vm\hadoop3_slaves01\DCS-share-dcr.vmdk'
Create: 100% done.
Virtual disk creation successful.
E:\program files>vmware-vdiskmanager.exe -c -s 1GB -a lsilogic -t 2 "E:\vm\hadoop3_slaves01\DCS-share-vote.vmdk"
VixDiskLib: Invalid configuration file parameter. Failed to read configuration file.
Creating disk 'E:\vm\hadoop3_slaves01\DCS-share-vote.vmdk'
Create: 100% done.
Virtual disk creation successful.
E:\program files>vmware-vdiskmanager.exe -c -s 10GB -a lsilogic -t 2 "E:\vm\hadoop3_slaves01\DCS-share-dmdata.vmdk"
VixDiskLib: Invalid configuration file parameter. Failed to read configuration file.
Creating disk 'E:\vm\hadoop3_slaves01\DCS-share-dmdata.vmdk'
Create: 100% done.
Virtual disk creation successful.
E:\program files>vmware-vdiskmanager.exe -c -s 5GB -a lsilogic -t 2 "E:\vm\hadoop3_slaves01\DCS-share-dmlog.vmdk"
VixDiskLib: Invalid configuration file parameter. Failed to read configuration file.
Creating disk 'E:\vm\hadoop3_slaves01\DCS-share-dmlog.vmdk'
Create: 100% done.
Virtual disk creation successful.
E:\program files>
两台虚拟机加载这4个共享存储磁盘,然后再vmx文件中加入下面内容
sata0:1.mode="independent-persistent"
sata0:1.SharedBus="Virtual"
sata0:2.mode="independent-persistent"
sata0:2.SharedBus="Virtual"
sata0:3.mode="independent-persistent"
sata0:3.SharedBus="Virtual"
sata0:4.mode="independent-persistent"
sata0:4.SharedBus="Virtual"
disk.locking="FALSE"
disk.EnableUUID="TRUE"
注意:这些选项不用和现有的重复,否则虚拟机起不来!
使用UDEV工具来固定磁盘,先查看磁盘的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
编写/etc/udev/rules.d/66-dmdevices.rules,创建磁盘软链接
## DCR磁盘配置,且在软链接之前创建文件夹 /dev_DSC2
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c297ca1068db021f490c45ba9f79",SYMLINK+="DCR", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name;mkdir -p /dev_DSC2; ln -s /dev/DCR /dev_DSC2/DCR'"
## VOTE 磁盘配置
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c297202c319858a45ba146e43e2e",SYMLINK+="VOTE", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name; ln -s /dev/VOTE /dev_DSC2/VOTE'"
## DMDATA 磁盘配置
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29b07aeb6aa0a0c66983f4fb4f0",SYMLINK+="DMDATA", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name; ln -s /dev/DMDATA /dev_DSC2/DMDATA'"
## DMLOG 磁盘配置,且在搭建完成之后,将权限直接赋予 dmdba组的dmdba用户
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c2997efe53e631e6301a6a6ce411",SYMLINK+="DMLOG", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name; ln -s /dev/DMLOG /dev_DSC2/DMLOG ; chown -R dmdba:dmdba /dev_DSC2'"
重启 systemd-udev-trigger 服务:
systemctl restart systemd-udev-trigger
搭建之前磁盘权限信息查看:
ls -lth /dev_DSC2/
三、搭建两节点DMDSC
搭建的配置文件分别存放于 90 机器的/home/dmdba/dmdsc/data/DSC01 和 91 机器的/home/dmdba/dmdsc/data/DSC02 下
1、DMDCR_CFG.INI 文件配置
准备配置文件 DMDCR_CFG.INI 文件,保存到 90 机器的/home/dmdba/dmdsc/data/DSC01 下,在dsc1上操作。
DCR_N_GRP= 3
DCR_VTD_PATH=/dev_DSC2/VOTE
DCR_OGUID= 1071107589
[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.92.97
DCR_EP_PORT = 9836
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.92.98
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
DCR_EP_SHM_KEY= 64735
DCR_EP_SHM_SIZE= 512
DCR_EP_HOST= 192.168.92.97
DCR_EP_PORT= 5836
DCR_EP_ASM_LOAD_PATH= /dev_DSC2
[GRP_ASM]
DCR_EP_NAME= ASM1
DCR_EP_SHM_KEY= 54736
DCR_EP_SHM_SIZE= 512
DCR_EP_HOST= 192.168.92.98
DCR_EP_PORT= 5837
DCR_EP_ASM_LOAD_PATH= /dev_DSC2
[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
DCR_EP_SEQNO= 0
DCR_EP_PORT= 6636
[GRP_DSC]
DCR_EP_NAME= DSC02
DCR_EP_SEQNO= 1
DCR_EP_PORT= 6637
2、初始化所有磁盘
在 90 机器使用 DMASMCMD 工具初始化所有磁盘。
create dcrdisk '/dev_DSC2/DCR' 'DCR'
create votedisk '/dev_DSC2/VOTE' 'VOTE'
create asmdisk '/dev_DSC2/DMDATA' 'DMDATA'
create asmdisk '/dev_DSC2/DMLOG' 'DMLOG'
init dcrdisk '/dev_DSC2/DCR' from '/home/dmdba/dmdsc/data/DSC01/DMDCR_CFG.INI' identified by 'SYSDBA'
init votedisk '/dev_DSC2/VOTE' from '/home/dmdba/dmdsc/data/DSC01/DMDCR_CFG.INI'
3、dmasvrmal.ini文件配置(DSC1,DSC2)
准备 DMASM 的 MAL 配置文件 DMASVRMAL.INI,保存到 90 的/home/dmdba/dmdsc/data/DSC01 下。
vim DMASVRMAL.INI
[MAL_INST1]
MAL_INST_NAME= ASM0
MAL_HOST= 192.168.92.97
MAL_PORT= 4836
[MAL_INST2]
MAL_INST_NAME= ASM1
MAL_HOST= 192.168.92.98
MAL_PORT= 4837
为 DSC02 配置 dmasvrmal.ini,和 DSC01 的 dmasvrmal.ini 内容完全一样。保存到 91 的/home/dmdba/dmdsc/data/DSC02 下。
4、dmdcr.ini文件配置(DSC1,DSC2)
DMDCR.INI 是 DMCSS、DMASMSVR、DMASMTOOL 等工具的输入参数。
准备 dmdcr.ini 文件,保存到 90 的/home/dmdba/dmdsc/data/DSC01 下。DM1和DM2的配置仅DMDCR_SEQNO有区别
vim dmdcr.ini
DMDCR_PATH = /dev_DSC2/DCR
DMDCR_MAL_PATH = /home/dmdba/dmdsc/data/DSC01/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdsc/bin/dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdsc/bin/dmserver path=/home/dmdba/dmdsc/data/DSC01/DSC01_conf/dm.ini dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini
DMDCR_LINK_CHECK_IP=192.168.92.92
设置了 DMDCR_LINK_CHECK_IP,须为 90 节点的 DMSERVER 和 DMASMSVR 赋予 ping 权限。
先chmod 755 /etc/sudoers
在/etc/sudoers文件中增加:dmdba ALL=(ALL:ALL) ALL,然后执行下面语句,否则报错:
sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdsc/bin/dmserver
sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdsc/bin/dmasmsvr
为 DSC02 配置 vim dmdcr.ini,保存到 91 的/home/dmdba/dmdsc/data/DSC02 下
vim dmdcr.ini
DMDCR_PATH = /dev_DSC2/DCR
DMDCR_MAL_PATH = /home/dmdba/dmdsc/data/DSC02/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdsc/bin/dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdsc/bin/dmserver path=/home/dmdba/dmdsc/data/DSC02/DSC02_conf/dm.ini dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini
DMDCR_LINK_CHECK_IP=192.168.92.92
先chmod 755 /etc/sudoers
在/etc/sudoers文件中增加:dmdba ALL=(ALL:ALL) ALL,然后执行下面语句,否则报错:
sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdsc/bin/dmserver
sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdsc/bin/dmasmsvr
5、启动DMCSS和DMASM服务
主节点 90 启动 DMCSS:
./dmcss dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini
另一节点 91 启动 DMCSS:
./dmcss dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini
主节点 90 启动 DMASMSVR:
./dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini
另一节点 91 启动 DMASMSVR:
./dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini
6、创建DMASM磁盘组
在 90 上登录创建:
./dmasmtool dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini
创建一个 DATA 磁盘组和一个 LOG 磁盘组:
#创建DATA磁盘组
CREATE DISKGROUP DMDATA asmdisk '/dev_DSC2/DMDATA'
#创建LOG磁盘组
CREATE DISKGROUP DMLOG asmdisk '/dev_DSC2/DMLOG'
7、dminit.ini文件配置
在 90 机器上准备 dminit.ini 配置文件,保存到/home/dmdba/dmdsc/data/DSC01 目录下。
DB_NAME= dsc2
SYSTEM_PATH= +DMDATA/data
SYSTEM= +DMDATA/data/dsc2/system.dbf
SYSTEM_SIZE= 128
ROLL= +DMDATA/data/dsc2/roll.dbf
ROLL_SIZE= 128
MAIN= +DMDATA/data/dsc2/main.dbf
MAIN_SIZE= 128
CTL_PATH= +DMDATA/data/dsc2/dm.ctl
LOG_SIZE= 2048
DCR_PATH= /dev_DSC2/DCR
DCR_SEQNO= 0
AUTO_OVERWRITE= 2
PAGE_SIZE = 16
EXTENT_SIZE = 16
[DSC01]
CONFIG_PATH= /home/dmdba/dmdsc/data/DSC01/DSC01_conf
PORT_NUM = 6636
MAL_HOST= 192.168.92.97
MAL_PORT= 6536
LOG_PATH= +DMLOG/log/DSC01_log1.log
LOG_PATH= +DMLOG/log/DSC01_log2.log
[DSC02]
CONFIG_PATH= /home/dmdba/dmdsc/data/DSC02/DSC02_conf
PORT_NUM = 6637
MAL_HOST= 192.168.92.98
MAL_PORT= 6537
LOG_PATH= +DMLOG/log/DSC02_log1.log
LOG_PATH= +DMLOG/log/DSC02_log2.log
8、初始化数据库和实例
在一个节点使用 DMINIT 命令初始化数据库环境。
选择一个节点,启动 DMINIT 命令初始化数据库,这里以 90 为例。
DMINIT 执行完成后,会在 config_path 目录(/home/dmdba/dmdsc/data/DSC01/DSC01_conf 和/home/dmdba/dmdsc/data/DSC02/DSC02_conf)下生成配置文件 DM.INI 和 DMMAL.INI。
./dminit control=/home/dmdba/dmdsc/data/DSC01/dminit.ini
使用拷贝的方式配置另外一个节点的数据库环境:
将 90 上初始化库时产生的 DSC02 节点的配置文件(整个/home/dmdba/dmdsc/data/DSC02 文件夹)复制到 91 机器的/home/dmdba/dmdsc/data/DSC02/目录下。之后就可以启动数据库服务器了。
scp -r /home/dmdba/dmdsc/data/DSC02/* dmdba@192.168.92.91:/home/dmdba/dmdsc/data/DSC02/
9、启动数据库服务器
分别启动两个节点的服务器:
90节点服务器启动:
cd /home/dmdba/dmdsc/bin
./dmserver dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini /home/dmdba/dmdsc/data/DSC01/DSC01_conf/dm.ini
91节点服务器启动:
cd /home/dmdba/dmdsc/bin
./dmserver dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini /home/dmdba/dmdsc/data/DSC02/DSC02_conf/dm.ini
10、配置并启动 DMCSSM 监视器
现在我们搭建监视器,配置 dmcssm.ini 文件。
DMCSSM 在任何机器上均可以启动,只要该台机器和 DMDSC 的真实机器网络是相通的,就可以监控 DMDSC 集群信息。
这里我们选择在 90 机器上搭建监视器。/home/dmdba/dmdsc/data 目录中 DMCSSM.INI 详细内容如下:
#和DMDCR_CFG.INI中的DCR_OGUID保持一致
CSSM_OGUID = 1071107589
#配置所有CSS的连接信息,
#与DMDCR_CFG.INI中CSS配置项的DCR_EP_HOST和DCR_EP_PORT保持一致
CSSM_CSS_IP = 192.168.92.97:9836
CSSM_CSS_IP = 192.168.92.98:9837
CSSM_LOG_PATH = /home/dmdba/dmdsc/data/cssm_log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大32M
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
创建 DMCSSM 的日志存放路径。
mkdir /home/dmdba/dmdsc/data/cssm_log
启动 DMCSSM 集群监视器。
输入show
至此,基于 DMASM 的 DMDSC 已经搭建完成。
11、验证数据库集群
在DSC1节点登录,并创建一张表tab01 ,插入数据:
数据是同步的。
12、验证DSC1节点故障
将DSC1节点的前台服务停掉:
查看监视器:
集群可以正常以DSC2实例提供服务。
再次启动DSC1实例服务:
Show监视器,DSC1恢复正常!
再次登录DSC1,输入数据:
在DSC2实例上查看:
集群恢复正常。
社区地址: https://eco.dameng.com