1.集群规划
三机器的规划如下表:
| 配置项 | A机器 | B机器 | C机器 |
|---|---|---|---|
| 业务IP | * | * | * |
| 内部数据交换网络IP | * | * | * |
| dmdcr_cfg — CSS — DCR_EP_NAME | CSS0 | CSS1 | CSS2 |
| dmdcr_cfg — CSS — DCR_EP_HOST | * | * | * |
| dmdcr_cfg — CSS — DCR_EP_PORT | 11286 | 11286 | 11286 |
| dmdcr_cfg — ASM — DCR_EP_NAME | ASM0 | ASM1 | ASM2 |
| dmdcr_cfg — ASM — DCR_EP_HOST | * | * | * |
| dmdcr_cfg — ASM — DCR_EP_PORT | 11276 | 11276 | 11276 |
| dmdcr_cfg — DB — DCR_EP_NAME | DSC0 | DSC1 | DSC2 |
| dmdcr_cfg — DB — DCR_EP_PORT | 5234 | 5234 | 5234 |
| dmasvrmal — MAL_INST_NAME | ASM0 | ASM1 | ASM2 |
| dmasvrmal — MAL_HOST | * | * | * |
| dmasvrmal — MAL_PORT | 11266 | 11266 | 11266 |
| dminit — 实例名 | DSC0 | DSC1 | DSC2 |
| dminit — PORT_NUM | 5234 | 5234 | 5234 |
| dminit — MAL_HOST | * | * | * |
| dminit — MAL_PORT | 11246 | 11246 | 11246 |
| OGUID | 210715 | 210715 | 210715 |
| 监视器IP | * | — | — |
| 监视器的ip为* |
2.准备共享存储
本次使用虚拟机软件创建共享虚拟磁盘,首先创建共享虚拟磁盘文件,在C:\Program Files (x86)\VMware\目录下执行如下命令:
创建一个20GB的数据磁盘
vmware-vdiskmanager.exe-c-s20Gb-alsilogic-t2"C:\DSC_SharedDisk\dmdata.vmdk"创建DCR磁盘
vmware-vdiskmanager.exe-c-s2Gb-alsilogic-t2"C:\DSC_SharedDisk\dmdcr.vmdk"创建Vote磁盘
vmware-vdiskmanager.exe-c-s2Gb-alsilogic-t2"C:\DSC_SharedDisk\dmvote.vmdk"创建LOG盘
vmware-vdiskmanager.exe-c-s20Gb-alsilogic-t2"C:\DSC_SharedDisk\dmlog.vmdk"创建ARCH盘
vmware-vdiskmanager.exe-c-s20Gb-alsilogic-t2"C:\DSC_SharedDisk\dmarch.vmdk"
然后为每台虚拟机添加共享磁盘:
修改每台虚拟机的 .vmx 配置文件,加入以下内容,确保多个虚拟机可以同时访问到磁盘:
scsi0.sharedBus="virtual"diskLib.dataCacheMaxSize="0"diskLib.dataCacheMaxReadAheadSize="0"diskLib.DataCacheMinReadAheadSize="0"diskLib.dataCachePageSize="4096"diskLib.maxUnsyncedWrites="0"
重启虚拟机,执行fdisk -l,三台机器均可以显示五个磁盘,说明共享存储配置成功:
3.块设备UUID绑定(UUID方式)
在三台机器上/etc/udev/rules.d目录下分别先创建uuid.sh文件,内容如下,赋权执行该脚本,生成绑定配置文件88-dm-asmdevices.rules,修改别名SYMLINK与五块磁盘对应:
curr=$(cd"$(dirname"$0")";pwd)rm-f$curr/88-dm-asmdevices.rulesforiinb c d e f;# 从b开始,跳过系统盘sdadoecho"KERNEL==\"sd?\",SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\",RESULT==\"`/usr/lib/udev/scsi_id--whitelisted--replace-whitespace--device=/dev/sd$i`\", SYMLINK+=\"dm/asm-disk$i\",OWNER=\"dmdba\", GROUP=\"dinstall\",MODE=\"0660\"">>$curr/88-dm-asmdevices.rulesdoneudevadm trigger--type=devices--action=change udevadm control --reload-rules让刷新规则文件,使其生效,执行
chowndmdba:dinstall /dev/dm/asm-*-R授权,然后执行命令
blockdev--getsize64/dev/dm/asm-dmdcr(dmvote/dmdata/dmlog/dmarch)验证显示设备UUID绑定成功:
4.集群搭建
三台服务器上分别在数据库安装目录下(/dm/dmdba/dmdbms)配置dsc_config/dmdcr_cfg.ini内容如下:
DCR_N_GRP=3##集群环境有多少个 GROUP,范围:1~16DCR_VTD_PATH=/dev/dm/asm-dmvote##规划为 vote 的磁盘DCR_OGUID=210715## 消息标识,一个组里面只有一个。[GRP]#新建一个 GROUPDCR_GRP_TYPE=CSS##组类型(CSS/ASM/DB)DCR_GRP_NAME=GRP_CSS##组名DCR_GRP_N_EP=3##组内节点个数DCR_GRP_DSKCHK_CNT=65##磁盘心跳容错时间,单位:秒[GRP_CSS]DCR_EP_NAME=CSS0##CSS 节点名DCR_EP_HOST=*##心跳地址DCR_EP_PORT=11286##CSS 端口[GRP_CSS]DCR_EP_NAME=CSS1 DCR_EP_HOST=* DCR_EP_PORT=11286[GRP_CSS]DCR_EP_NAME=CSS2##CSS 节点名DCR_EP_HOST=*##心跳地址DCR_EP_PORT=11286##CSS 端口[GRP]DCR_GRP_TYPE=ASM DCR_GRP_NAME=GRP_ASM DCR_GRP_N_EP=3DCR_GRP_DSKCHK_CNT=61[GRP_ASM]DCR_EP_NAME=ASM0##ASM 节点名,和 dmasvrmal 的 MAL_INST_NAME 一致DCR_EP_SHM_KEY=42424##共享内存标识DCR_EP_SHM_SIZE=1024##共享内存大小DCR_EP_HOST=*##心跳地址DCR_EP_PORT=11276##ASM 端口DCR_EP_ASM_LOAD_PATH=/dev/dm[GRP_ASM]DCR_EP_NAME=ASM1 DCR_EP_SHM_KEY=42425DCR_EP_SHM_SIZE=1024DCR_EP_HOST=* DCR_EP_PORT=11276DCR_EP_ASM_LOAD_PATH=/dev/dm[GRP_ASM]DCR_EP_NAME=ASM2 DCR_EP_SHM_KEY=42426DCR_EP_SHM_SIZE=1024DCR_EP_HOST=* DCR_EP_PORT=11276DCR_EP_ASM_LOAD_PATH=/dev/dm[GRP]DCR_GRP_TYPE=DB DCR_GRP_NAME=GRP_DSC DCR_GRP_N_EP=3DCR_GRP_DSKCHK_CNT=57[GRP_DSC]DCR_EP_NAME=DSC0##实例名,和 dm.ini 的 INSTANCE_NAME 一致DCR_EP_SEQNO=0##组内序号,不能重复DCR_EP_PORT=5234##实例端口,和 dm.ini 的 PORT_NUM 一致[GRP_DSC]DCR_EP_NAME=DSC1 DCR_EP_SEQNO=1DCR_EP_PORT=5234[GRP_DSC]DCR_EP_NAME=DSC2 DCR_EP_SEQNO=2DCR_EP_PORT=5234初始化磁盘,在机器A的bin目录下执行./dmasmcmd进入ASM终端,执行下述命令进行初始化:
create dcrdisk'/dev/dm/asm-dmdcr''dcr'create votedisk'/dev/dm/asm-dmvote''vote'init dcrdisk'/dev/dm/asm-dmdcr'from'/dm/dmdba/dmdbms/dsc_config/dmdcr_cfg.ini'identified by'Zh010922'init votedisk'/dev/dm/asm-dmvote'from'/dm/dmdba/dmdbms/dsc_config/dmdcr_cfg.ini'create asmdisk'/dev/dm/asm-dmdata''DATA0'create asmdisk'/dev/dm/asm-dmlog''LOG0'create asmdisk'/dev/dm/asm-dmarch''ARCH0'在机器A的dsc_config下创建dmasvrmal.ini,内容如下,并cp到三台机器的dsc_config/DSC0(DSC1/DSC2)目录下
[MAL_INST0]MAL_INST_NAME=ASM0 MAL_HOST=*#心跳地址MAL_PORT=11266#MAL 监听端口[MAL_INST1]MAL_INST_NAME=ASM1 MAL_HOST=* MAL_PORT=11266[MAL_INST2]MAL_INST_NAME=ASM2 MAL_HOST=* MAL_PORT=11266在三台机器的dsc_config目录下分别创建dmdcr.ini文件,内容如下(以机器a为例):
DMDCR_PATH=/dev/dm/asm-dmdcr DMDCR_MAL_PATH=/dm/dmdba/dmdbms/dsc_config/DSC0/dmasvrmal.ini DMDCR_SEQNO=0#机器b,c分别为1,2DMDCR_AUTO_OPEN_CHECK=111DMDCR_ASM_TRACE_LEVEL=2在三个节点启动DMCSS、DMASM服务,分别执行命令
/dm/dmdba/dmdbms/bin/dmcssDCR_INI=/dm/dmdba/dmdbms/dsc_config/dmdcr.ini启动dmcss服务,执行命令
/dm/dmdba/dmdbms/bin/dmasmsvrDCR_INI=/dm/dmdba/dmdbms/dsc_config/dmdcr.ini启动dmasmsvr服务:
在机器A的bin目录下启动dmasmtool工具,执行命令
/dm/dmdba/dmdbms/bin/dmasmtoolDCR_INI=/dm/dmdba/dmdbms/dsc_config/dmdcr.ini创建DMASM磁盘组,执行命令
create diskgroup'DMLOG'asmdisk'/dev/dm/asm-dmlog'创建日志磁盘组,执行命令
create diskgroup'DMDATA'asmdisk'/dev/dm/asm-dmdata'创建数据磁盘组,执行命令
create diskgroup'DMARCH'asmdisk'/dev/dm/asm-dmarch'创建归档磁盘组:
分别在三台机器的dsc_config目录下创建dminit.ini文件,以机器A为例,内容如下:
DB_NAME=DSC SYSDBA_PWD=* SYSAUDITOR_PWD=* SYSTEM_PATH=+DMDATA/data SYSTEM=+DMDATA/data/SYSTEM.dbf SYSTEM_SIZE=1024ROLL=+DMDATA/data/ROLL.dbf ROLL_SIZE=10000MAIN=+DMDATA/data/MAIN.dbf MAIN_SIZE=1024CTL_PATH=+DMDATA/data/dm.ctl CTL_SIZE=8LOG_SIZE=2048DCR_PATH=/dev/dm/asm-dmdcr DCR_SEQNO=0AUTO_OVERWRITE=1PAGE_SIZE=32EXTENT_SIZE=16BLANK_PAD_MODE=1[DSC0]CONFIG_PATH=/dm/dmdba/dmdbms/dsc_config/DSC0 PORT_NUM=5234MAL_HOST=* MAL_PORT=11246LOG_PATH=+DMLOG/DSC0_LOG01.log LOG_PATH=+DMLOG/DSC0_LOG02.log[DSC1]CONFIG_PATH=/dm/dmdba/dmdbms/dsc_config/DSC1 PORT_NUM=5234MAL_HOST=* MAL_PORT=11246LOG_PATH=+DMLOG/DSC1_LOG01.log LOG_PATH=+DMLOG/DSC1_LOG02.log[DSC2]CONFIG_PATH=/dm/dmdba/dmdbms/dsc_config/DSC2 PORT_NUM=5234MAL_HOST=* MAL_PORT=11246LOG_PATH=+DMLOG/DSC2_LOG01.log LOG_PATH=+DMLOG/DSC2_LOG02.log在机器A上初始化,执行命令
/dm/dmdba/dmdbms/bin/dminitcontrol=/dm/dmdba/dmdbms/dsc_config/dminit.ini在dsc_config/DSC0目录下生成了实例对应的dm.ini等文件,同时还生成了机器B和C对应的配置文件DSC1和DSC2,利用共享文件夹分别cp到对应机器。
三节点修改各自dm.ini的ARCH_INI为1开启数据库归档功能,然后创建各自的归档配置文件dmarch.ini,以机器A为例,内容如下:
ARCH_WAIT_APPLY=0[ARCHIVE_LOCAL1]ARCH_TYPE=LOCAL ARCH_DEST=+DMARCH/ARCH/DSC2/arch ARCH_FILE_SIZE=2048ARCH_SPACE_LIMIT=102400[ARCHIVE_REMOTE1]ARCH_TYPE=REMOTE ARCH_DEST=DSC0 ARCH_INCOMING_PATH=+DMARCH/ARCH/DSC0/arch ARCH_FILE_SIZE=2048ARCH_SPACE_LIMIT=102400[ARCHIVE_REMOTE2]ARCH_TYPE=REMOTE ARCH_DEST=DSC1 ARCH_INCOMING_PATH=+DMARCH/ARCH/DSC1/arch ARCH_FILE_SIZE=2048ARCH_SPACE_LIMIT=102400启动DMSERVER服务,由DMCSS没有配置自动拉起dmserver的功能,需要手动启动三个节点的实例服务,以机器A为例,在bin目录下执行命令
./dmserver /dm/dmdba/dmdbms/dsc_config/DSC0/dm.inidcr_ini=/dm/dmdba/dmdbms/dsc_config/dmdcr.ini在机器A的 dmcss 终端执行show命令,显示CSS组全部open,DMCSS集群正常,CSS0为控制节点,ASM组也全部open,DMASM集群正常,ASM0为控制节点,DB组也全补open,DMDSC集群正常,DSC0为控制节点:
为了方便管理,分别在三台机器上注册CSS、ASM、DMSERVER后台服务,以机器A为例,在root下执行命令:
/dm/dmdba/dmdbms/script/root/dm_service_installer.sh-tdmcss-dcr_ini/dm/dmdba/dmdbms/dsc_config/dmdcr.ini-pCSS /dm/dmdba/dmdbms/script/root/dm_service_installer.sh-tdmasmsvr-dcr_ini/dm/dmdba/dmdbms/dsc_config/dmdcr.ini-yDmCSSServiceCSS.service-pASM /dm/dmdba/dmdbms/script/root/dm_service_installer.sh-tdmserver-dm_ini/dm/dmdba/dmdbms/dsc_config/DSC0/dm.ini-dcr_ini/dm/dmdba/dmdbms/dsc_config/dmdcr.ini-yDmASMSvrServiceASM.service-pDSC5.配置监视器
在另外一台机器192.168.138.131的bin目录下创建DSC监视器配置文件dmcssm.ini,内容如下:
CSSM_OGUID=210715CSSM_CSS_IP=* CSSM_CSS_IP=* CSSM_CSS_IP=* CSSM_LOG_PATH=/dm/dmdba/dmdbms/log CSSM_LOG_FILE_SIZE=512CSSM_LOG_SPACE_LIMIT=2048为了优化集群在操作系统假死时对节点状态的判断机制,给集群设置setcap权限,在每台机器的root下分别执行命令:
setcap cap_net_raw,cap_net_admin=eip /dm/dmdba/dmdbms/bin/dmserver setcap cap_net_raw,cap_net_admin=eip /dm/dmdba/dmdbms/bin/dmasmsvr验证授权成功:
getcap /dm/dmdba/dmdbms/bin/dmserver getcap /dm/dmdba/dmdbms/bin/dmasmsvr
bin目录下执行
./dmcssmINI_PATH=./dmcssm.ini以前台方式启动监视器,执行show,显示DSC集群状态正常:
https://eco.dameng.com