注册
达梦dcs集群搭建
技术分享/ 文章详情 /

达梦dcs集群搭建

DM_336625 2026/07/02 35 0 0

一. 环境规划

1.1 端口规划

配置项 A机器 B机器
业务IP 192.168.163.137 192.168.163.139
心跳IP 192.168.163.138 192.168.163.140
dmdcr_cfg
CSS
- DCR_EP_NAME DSC0 DSC1
- DCR_EP_HOST 192.168.163.138 192.168.163.140
- DCR_EP_PORT 5336 5336
ASM
- DCR_EP_NAME ASM0 ASM1
- DCR_EP_HOST 192.168.163.138 192.168.163.140
- DCR_EP_PORT 5436 5436
DB
- DCR_EP_NAME DSC0 DSC1
- DCR_EP_PORT 5236 5236
- DCR_CHECK_PORT 5536 5536
dmasvrmal
- MAL_INST_NAME ASM0 ASM1
- MAL_HOST 192.168.163.138 192.168.163.140
- MAL_PORT 5636 5636
dminit
- PORT_NUM 5236 5236
- MAL_HOST 192.168.163.138 192.168.163.140
- MAL_PORT 5736 5736
归档上限 10240 10240
OGUID 250715 250715

1.2 磁盘设置

结合提供的磁盘列表(sdc-sdg,共 5 块磁盘),优化后的 uuid.sh 脚本如下,专门针对这些磁盘生成 udev 规则,确保适配达梦共享存储需求: #!/bin/bash # 功能:自动生成指定名称的 udev 规则,替换原有软链接 # 对应关系:sdc->dmdcr, sdd->dmvote, sde->dmredo, sdf->dmdata, sdg->dmdata_bak # 脚本所在目录 curr=$(cd "$(dirname "$0")"; pwd) # 规则文件名 rules_file="$curr/99-dm-asmdevices.rules" # 清理旧规则 rm -f "$rules_file" # 定义磁盘与目标名称的对应关系(数组顺序:sdc, sdd, sde, sdf, sdg) disk_suffixes=("c" "d" "e" "f" "g") target_names=("dmdcr" "dmvote" "dmredo" "dmdata1" "dmdata2") # 遍历生成规则 for i in "${!disk_suffixes[@]}"; do suffix=${disk_suffixes[$i]} name=${target_names[$i]} disk="/dev/sd$suffix" # 检查磁盘是否存在 if [ ! -b "$disk" ]; then echo "警告:磁盘 $disk 不存在,已跳过" continue fi # 获取 scsi_id scsi_id=$(/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device="$disk" 2>/dev/null) if [ -z "$scsi_id" ]; then echo "错误:无法获取 $disk 的 scsi_id,已跳过" continue fi # 写入规则(指定目标名称) cat <<EOF >> "$rules_file" KERNEL=="sd$suffix", SUBSYSTEM=="block", \ PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name", \ RESULT=="$scsi_id", \ SYMLINK+="ASMDISK/$name", \ OWNER="dmdba", GROUP="dinstall", MODE="0660" EOF done # 提示后续操作 echo "已生成新规则文件:$rules_file" echo "执行以下命令生效:" echo "sudo cp $rules_file /etc/udev/rules.d/" echo "sudo rm -f /dev/ASMDISK/*" # 清理旧链接 echo "sudo udevadm control --reload-rules && sudo udevadm trigger" ls -l /dev/ASMDISK/ 2. 检查磁盘权限与属主 执行命令查看磁盘的属主和权限: ls -l /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf cat /etc/udev/rules.d/99-dm-asmdevices.rules 确保每个磁盘的 KERNEL、RESULT(scsi_id)、SYMLINK 等参数正确,无语法错误(如引号、逗号是否缺失)。 #如果涉及到多路径,则使用多路径绑定 [root@RS1824 ~]# cat mpath.sh curr=$(cd "$(dirname "$0")";pwd) rm -f $curr/88-dm-asmdevices.rules for i in mpatha mpathb mpathc mpathd mpathe; do str1="$i:`udevadm info --query=all --name=/dev/mapper/$i | grep DM_UUID`" str2=${str1#*=} echo "KERNEL==\"dm-*\",ENV{DM_UUID}==\"${str2}\",SYMLINK+=\"asm-${i}\",OWNER=\"dmdba\",GROUP=\"dinstall\",MODE=\"0660\"" '' done ##执行上述脚本 [root@RS1824 ~]# ./mpath.sh ##脚本执行成功后,会生成绑定配置文件,可以根据需求进行修改别名 SYMLINK,例如: [root@RS1824 ~]# cat 88-dm-asmdevices.rules KERNEL=="dm-*",ENV{DM_UUID}=="mpath-3600b342697bdcefdae7fd52cfd1b00db",SYMLINK+="dm/asm-dmdcr",OWNER="dmdba",GROUP="dinstall",MODE="0660" KERNEL=="dm-*",ENV{DM_UUID}=="mpath-3600b342449774d0d2c16d990fd6300db",SYMLINK+="dm/asm-dmvote",OWNER="dmdba",GROUP="dinstall",MODE="0660" KERNEL=="dm-*",ENV{DM_UUID}=="mpath-3600b342a2b1bd08d28e0d58c5db300db",SYMLINK+="dm/asm-dmlog",OWNER="dmdba",GROUP="dinstall",MODE="0660" KERNEL=="dm-*",ENV{DM_UUID}=="mpath-3600b34208f0b5c5d515dd41dfde300db",SYMLINK+="dm/asm-dmdata",OWNER="dmdba",GROUP="dinstall",MODE="0660" KERNEL=="dm-*",ENV{DM_UUID}=="mpath-3600b342dfa7bea6dc4c4dec06da300db",SYMLINK+="dm/asm-dmarch",OWNER="dmdba",GROUP="dinstall",MODE="0660"

二. 集群搭建

2.1 目录设置

#A机器、B机器配置相同,root依次执行 mkdir /home/dmdba/dmdbms/config -p mkdir /home/dmdba/dmdbms/logcommit -p chown dmdba.dinstall /home/dmdba/dmdbms -R

2.2 创建dmdcr_cfg.ini

#A机器、B机器配置相同,dmdba用户依次执行 vim /home/dmdba/dmdbms/config/dmdcr_cfg.ini DCR_N_GRP = 3 #集群环境有多少个GROUP,范围:1~16 DCR_VTD_PATH = /dev/ASMDISK/dmvote DCR_OGUID = 250715 [GRP] #新建一个GROUP DCR_GRP_TYPE = CSS #组类型(CSS/ASM/DB) DCR_GRP_NAME = GRP_CSS #组名 DCR_GRP_N_EP = 2 #组内节点个数 DCR_GRP_DSKCHK_CNT = 30 #磁盘心跳容错时间,单位:秒 [GRP_CSS] DCR_EP_NAME = CSS0 #CSS节点名 DCR_EP_HOST = 192.168.163.138 #心跳地址 DCR_EP_PORT = 5336 #CSS端口 [GRP_CSS] DCR_EP_NAME = CSS1 DCR_EP_HOST = 192.168.163.140 #心跳地址 DCR_EP_PORT = 5336 [GRP] DCR_GRP_TYPE = ASM DCR_GRP_NAME = GRP_ASM DCR_GRP_N_EP = 2 DCR_GRP_DSKCHK_CNT = 30 [GRP_ASM] DCR_EP_NAME = ASM0 #ASM节点名,和dmasvrmal的MAL_INST_NAME一致 DCR_EP_SHM_KEY = 93360 #共享内存标识 DCR_EP_SHM_SIZE = 1024 #共享内存大小 DCR_EP_HOST = 192.168.163.138 #心跳地址 DCR_EP_PORT = 5436 #ASM端口 DCR_EP_ASM_LOAD_PATH = /dev/ASMDISK [GRP_ASM] DCR_EP_NAME = ASM1 DCR_EP_SHM_KEY = 93361 DCR_EP_SHM_SIZE = 1024 DCR_EP_HOST = 192.168.163.140 #心跳地址 DCR_EP_PORT = 5436 DCR_EP_ASM_LOAD_PATH = /dev/ASMDISK [GRP] DCR_GRP_TYPE = DB DCR_GRP_NAME = GRP_DB DCR_GRP_N_EP = 2 DCR_GRP_DSKCHK_CNT = 30 [GRP_DB] DCR_EP_NAME = DSC0 #实例名,和dm.ini的INSTANCE_NAME一致 DCR_EP_SEQNO = 0 #组内序号,不能重复 DCR_EP_PORT = 5236 #实例端口,和dm.ini的PORT_NUM一致 DCR_CHECK_PORT = 5536 #DCR检查端口 [GRP_DB] DCR_EP_NAME = DSC1 DCR_EP_SEQNO = 1 DCR_EP_PORT = 5236 DCR_CHECK_PORT = 5536

3. 创建dmasvrmal.ini

#A机器、B机器配置相同,依次执行dmdba用户执行: vim /home/dmdba/dmdbms/config/dmasvrmal.ini [MAL_INST1] MAL_INST_NAME = ASM0 MAL_HOST = 192.168.163.138 #心跳地址 MAL_PORT = 5636 [MAL_INST2] MAL_INST_NAME = ASM1 MAL_HOST = 192.168.163.140 #心跳地址 MAL_PORT = 5636

4. 创建dmdcr.ini

#这里配置加注释是为了不影响使用,后续需取消注释 #A机器 dmdba用户执行: vim /home/dmdba/dmdbms/config/dmdcr.ini DMDCR_PATH = /dev/ASMDISK/dmdcr DMDCR_MAL_PATH = /home/dmdba/dmdbms/config/dmasvrmal.ini DMDCR_SEQNO = 0 DMDCR_ASM_TRACE_LEVEL = 2 DMDCR_AUTO_OPEN_CHECK = 111 #DMDCR_ASM_RESTART_INTERVAL = 60 #DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmASMSvrServiceASM start #DMDCR_DB_RESTART_INTERVAL = 60 #DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmServiceDMS start #B机器 dmdba用户执行: vim /home/dmdba/dmdbms/config/dmdcr.ini DMDCR_PATH = /dev/ASMDISK/dmdcr DMDCR_MAL_PATH = /home/dmdba/dmdbms/config/dmasvrmal.ini DMDCR_SEQNO = 1 DMDCR_ASM_TRACE_LEVEL = 2 DMDCR_AUTO_OPEN_CHECK = 111 #DMDCR_ASM_RESTART_INTERVAL = 60 #DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmASMSvrServiceASM start #DMDCR_DB_RESTART_INTERVAL = 60 #DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmServiceDMS start

5. 创建dminit.ini

#在A机器执行 dmdba用户执行: vim /home/dmdba/dmdbms/config/dminit.ini db_name = DSC #初始化数据库名称,必须大写 system_path = +DM_DATA/DATA main = +DM_DATA/DATA/DSC/main.dbf main_size = 1024 roll = +DM_DATA/DATA/DSC/roll.dbf roll_size = 10240 system = +DM_DATA/DATA/DSC/system.dbf system_size = 1024 ctl_path = +DM_DATA/DATA/DSC/dm.ctl ctl_size = 8 log_size = 2048 dcr_path = /dev/ASMDISK/dmdcr dcr_seqno = 0 auto_overwrite = 1 PAGE_SIZE = 32 EXTENT_SIZE = 32 CASE_SENSITIVE = Y CHARSET = 0 BLANK_PAD_MODE = 1 SYSDBA_PWD = Sysdba@123 SYSAUDITOR_PWD = Sysauditor@123 [DSC0] config_path = /home/dmdba/dmdbms/config/DSC0_config port_num = 5236 mal_host = 192.168.163.138 #心跳地址 mal_port = 5736 log_path = +DM_REDO/log/DSC0_log01.log log_path = +DM_REDO/log/DSC0_log02.log log_path = +DM_REDO/log/DSC0_log03.log log_path = +DM_REDO/log/DSC0_log04.log [DSC1] config_path = /home/dmdba/dmdbms/config/DSC1_config port_num = 5236 mal_host = 192.168.163.140 #心跳地址 mal_port = 5736 log_path = +DM_REDO/log/DSC1_log01.log log_path = +DM_REDO/log/DSC1_log02.log log_path = +DM_REDO/log/DSC1_log03.log log_path = +DM_REDO/log/DSC1_log04.log

6. 初始化磁盘组

#A机器执行 vim /home/dmdba/dmdbms/config/asminit.txt # asm script file(修正后) # 对应 sdc(5G,DCR 盘) create dcrdisk '/dev/ASMDISK/dmdcr' 'DMDCR' # 对应 sdd(5G,VOTE 盘) create votedisk '/dev/ASMDISK/dmvote' 'DMVOTE' # 对应 sde(8G,REDO 日志盘) create asmdisk '/dev/ASMDISK/dmredo' 'DMREDO' # 对应 sdf(10G,数据盘1) create asmdisk '/dev/ASMDISK/dmdata' 'DMDATA1' # 对应 sdg(10G,数据盘2) create asmdisk '/dev/ASMDISK/dmarch' 'DMDATA2' # 初始化 DCR 盘 init dcrdisk '/dev/ASMDISK/dmdcr' from '/home/dmdba/dmdbms/config/dmdcr_cfg.ini' identified by 'Dameng123' # 初始化 VOTE 盘 init votedisk '/dev/ASMDISK/dmvote' from '/home/dmdba/dmdbms/config/dmdcr_cfg.ini' #执行初始化 /home/dmdba/dmdbms/bin/dmasmcmd SCRIPT_FILE=/home/dmdba/dmdbms/config/asminit.txt

7. 注册并启动CSS、ASM服务

root用户执行: [root@dameng mnt]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -p CSS [root@dameng mnt]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM dmdba用户执行: A机器: [dmdba@localhost bin]$ /home/dmdba/dmdbms/bin/DmCSSServiceCSS start B机器: [dmdba@localhost bin]$ /home/dmdba/dmdbms/bin/DmCSSServiceCSS start A机器: [dmdba@localhost bin]$ /home/dmdba/dmdbms/bin/DmASMSvrServiceASM start B机器: [dmdba@localhost bin]$ /home/dmdba/dmdbms/bin/DmASMSvrServiceASM start

8. 创建DMASM磁盘组

#在A机器dmdba用户执行 /home/dmdba/dmdbms/bin/dmasmtool DCR_INI=/home/dmdba/dmdbms/config/dmdcr.ini -- 创建 REDO 日志磁盘组(使用 dmredo 磁盘) ASM> create diskgroup 'DM_REDO' asmdisk '/dev/ASMDISK/dmredo' -- 创建 DATA 数据磁盘组(使用 dmdata1 磁盘) ASM> create diskgroup 'DM_DATA' asmdisk '/dev/ASMDISK/dmdata' -- 创建 ARCH 归档磁盘组(使用 dmarch 磁盘) ASM> create diskgroup 'DM_ARCH' asmdisk '/dev/ASMDISK/dmarch'

初始化实例

#A机器 dmdba用户执行: [dmdba@rdmDSC03] /home/dmdba/dmdbms/bin/dminit control=/home/dmdba/dmdbms/ config/dminit.ini ... create dm database success. --拷贝文件 scp -r /home/dmdba/dmdbms/config/DSC1_config/ 192.168.163.140:/home/dmdba/dmdbms/config/

9. 创建dmarch.ini

#A机器修改ARCH_INI的值为1 vim /home/dmdba/dmdbms/config/DSC0_config/dm.ini ARCH_INI = 1 vim /home/dmdba/dmdbms/config/DSC0_config/dmarch.ini [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = +DM_ARCH/DSC0/arch ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 10240 [ARCHIVE_REMOTE1] ARCH_TYPE = REMOTE ARCH_DEST = DSC1 ARCH_INCOMING_PATH = +DM_ARCH/DSC1/arch ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 10240 #B机器修改ARCH_INI的值为1 vim /home/dmdba/dmdbms/config/DSC0_config/dm.ini ARCH_INI = 1 vim /home/dmdba/dmdbms/config/DSC0_config/dmarch.ini [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = +DM_ARCH/DSC1/arch ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 10240 [ARCHIVE_REMOTE1] ARCH_TYPE = REMOTE ARCH_DEST = DSC0 ARCH_INCOMING_PATH = +DM_ARCH/DSC0/arch ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 10240

10. 修改sql日志

两个节点都需要修改 vi /home/dmdba/dmdbms/config/DSC0_config/sqllog.ini vi /home/dmdba/dmdbms/config/DSC1_config/sqllog.ini #确认并修改以下参数 BUF_TOTAL_SIZE = 10240 BUF_SIZE = 1024 BUF_KEEP_CNT = 20 FILE_PATH = /dmbak/dmlogcommit SWITCH_LIMIT = 128 --单个日志128M FILE_NUM = 100 --保留日志数量,100个 ASYNC_FLUSH = 1 --异步写入日志

11. 注册DMSERVER后台服务,修改服务

#A /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdbms/config/DSC0_config/dm.ini -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -y DmASMSvrServiceASM.service -p DMS #B /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdbms/config/DSC1_config/dm.ini -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -y DmASMSvrServiceASM.service -p DMS 修改服务脚本 A、B 机器都要执行 vi /home/dmdba/dmdbms/bin/DmServiceDMS 修改为: export MALLOC_ARENA_MAX=1

修改dmdcr.ini,反注释之前注释的4行配置

vim /home/dmdba/dmdbms/config/dmdcr.ini #取消注释 A B都执行 DMDCR_ASM_RESTART_INTERVAL = 60 DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmASMSvrServiceASM start DMDCR_DB_RESTART_INTERVAL = 60 DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmServiceDMS start

12. 重启服务器,查看服务是否正常

reboot

13. 配置监视器

## A 机器、B 机器配置相同 [dmdba@~]# vi /dm/dmdbms/bin/dmcssm.ini CSSM_OGUID = 210715 CSSM_CSS_IP = 192.168.163.138:5336 CSSM_CSS_IP = 192.168.163.140:5336 CSSM_LOG_PATH = ../log CSSM_LOG_FILE_SIZE = 512 CSSM_LOG_SPACE_LIMIT = 2048 #注册服务 [root@~]# /dm/dmdbms/script/root/dm_service_installer.sh -t dmcssm -cssm_ini /dm/dmdbms/bin/dmcssm.ini -p Monitor ##备注:删除自启 [root@~]# /dm/dmdbms/script/root/dm_service_uninstaller.sh -n DmCSSMonitorServiceMonitor #手动启动 dmcssm INI_PATH=/home/dmdba/dmdbms/bin/dmcssm.ini show 查看集群状态

达梦社区技术 https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服