本文档记录了基于达梦数据库 DM8 的 DMDSC两节点数据共享集群的完整部署过程。本次部署采用基于 DMASM 的 DMDSC 架构,使用块设备作为共享存储,通过 DMASM 管理共享磁盘,实现了两节点间的数据共享与高可用。
数据库版本: dm8_20250930_x86_kylin10_sp1_64.iso
操作系统版本:Kylin-Server-10-SP2-x86-Release-Build09-20210524
| 项目 | 配置 |
|---|---|
| 服务器数量 | 2 台(虚拟机) |
| CPU | 4 核 |
| 内存 | 8 GB |
| 系统盘 | 30 GB |
| 共享数据盘 | 4 块(DCR 1G + VOTE 1G + DMDATA 20G + DMLOG 10G) |
| 网卡 | 2 块 |
| 角色 | 实例名称 | IP 地址 | 说明 |
|---|---|---|---|
| 节点 0 | DSC01 | 192.168.52.131(下面简称为131机器) | 控制节点(Control Node) |
| 节点 1 | DSC02 | 192.168.52.135(下面简称为135机器) | 普通节点(Normal Node) |
| 服务 | 节点 | 端口 |
|---|---|---|
| CSS | DSC01(CSS0) | 9836 |
| CSS | DSC02(CSS1) | 9837 |
| ASM | DSC01(ASM0) | 5836 |
| ASM | DSC02(ASM1) | 5837 |
| DSC | DSC01 | 6636 |
| DSC | DSC02 | 6637 |
| MAL(ASM) | DSC01 | 4836 |
| MAL(ASM) | DSC02 | 4837 |
| MAL(DB) | DSC01 | 6536 |
| MAL(DB) | DSC02 | 6537 |
| 磁盘用途 | 设备名 | 大小 | SCSI ID | 说明 |
|---|---|---|---|---|
| DCR 盘 | /dev/sdb | 1 GB | 36000c290f42831688ccdde5bfc8ebe22 | 存储集群注册信息 |
| VOTE 盘 | /dev/sdc | 1 GB | 36000c29777e550b0a0015e0f8938e209 | 表决磁盘,用于集群仲裁 |
| DMDATA 盘 | /dev/sdd | 20 GB | 36000c2918edb917c5260302f26a3d16b | 存储业务数据 |
| DMLOG 盘 | /dev/sde | 10 GB | 36000c29efd9efcb4c123c7a051e69b8a | 存储重做日志 |
两台机器均需执行(以 root 用户操作):
# 创建用户组
groupadd dmdba
# 创建用户并加入组
useradd -g dmdba dmdba
# 设置密码
passwd dmdba
两台机器均需执行(以 root 用户操作):
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭 SELinux
vi /etc/selinux/config
# 把SELINUX=enforcing 修改为 SELINUX=disabled
两台机器均需执行(以 dmdba 用户操作):
| 目录 | 用途 |
|---|---|
| /home/dmdba/dmdsc | DMDSC 环境主目录 |
| /home/dmdba/dmdsc/bin | DM 执行码和工具存放目录 |
| /home/dmdba/dmdsc/data/DSC01 | 节点0 配置文件目录(131机器) |
| /home/dmdba/dmdsc/data/DSC02 | 节点1 配置文件目录(135机器) |
# 在 131 机器上执行
mkdir -p /home/dmdba/dmdsc/bin
mkdir -p /home/dmdba/dmdsc/data/DSC01
# 在 135 机器上执行
mkdir -p /home/dmdba/dmdsc/bin
mkdir -p /home/dmdba/dmdsc/data/DSC02
任意一台机器执行。
步骤一:获取磁盘 SCSI ID
/usr/lib/udev/scsi_id -g -u /dev/sdb
# 输出DCR磁盘序列号
/usr/lib/udev/scsi_id -g -u /dev/sdc
# 输出VOTE磁盘序列号
/usr/lib/udev/scsi_id -g -u /dev/sdd
# 输出DMDATA磁盘序列号
/usr/lib/udev/scsi_id -g -u /dev/sde
# 输出DDMLOG磁盘序列号
输出:
步骤二:创建 UDEV 规则文件
编辑 /etc/udev/rules.d/66-dmdevices.rules
vi /etc/udev/rules.d/66-dmdevices.rules
两台机器内容完全相同:
## DCR 磁盘
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="此处填写你的序列号", 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=="此处填写你的序列号", 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=="此处填写你的序列号", 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 磁盘
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="此处填写你的序列号", 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'"
步骤三:重新加载规则并验证
udevadm control --reload-rules && udevadm trigger && udevadm settle
# 验证软链接
ls -lth /dev_DSC2/
验证输出:
仅在 DSC01 机器(131机器)执行(以 dmdba 用户操作):
vi /home/dmdba/dmdsc/data/DSC01/DMDCR_CFG.INI
文件内容:
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.52.131
DCR_EP_PORT = 9836
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.52.135
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.52.131
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.52.135
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
仅在 131机器执行(以 dmdba 用户操作):
cd /home/dmdba/dmdsc/bin
./dmasmcmd
在 DMASMCMD 交互界面中执行:
ASM> create dcrdisk '/dev_DSC2/DCR' 'DCR'
ASM> create votedisk '/dev_DSC2/VOTE' 'VOTE'
ASM> create asmdisk '/dev_DSC2/DMDATA' 'DMDATA'
ASM> create asmdisk '/dev_DSC2/DMLOG' 'DMLOG'
ASM> init dcrdisk '/dev_DSC2/DCR' from '/home/dmdba/dmdsc/data/DSC01/DMDCR_CFG.INI' identified by 'DCRpsd_123'
ASM> init votedisk '/dev_DSC2/VOTE' from '/home/dmdba/dmdsc/data/DSC01/DMDCR_CFG.INI'
输出:
两台机器内容完全相同(以 dmdba 用户操作):
131 机器:
vi /home/dmdba/dmdsc/data/DSC01/dmasvrmal.ini
135 机器:
vi /home/dmdba/dmdsc/data/DSC02/dmasvrmal.ini
文件内容:
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.52.131
MAL_PORT = 4836
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.52.135
MAL_PORT = 4837
DSC01 机器(131):
vi /home/dmdba/dmdsc/data/DSC01/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.52.131
须为 131机器的 DMSERVER、DMASMSVR、DMCSS 赋予 ping 权限:
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
sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdsc/bin/dmcss
DSC02 机器(135):
vi /home/dmdba/dmdsc/data/DSC02/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.1.88
须为 135机器的 DMSERVER、DMASMSVR、DMCSS 赋予 ping 权限:
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
sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdsc/bin/dmcss
DSC01 机器(131):
cd /home/dmdba/dmdsc/bin
./dmcss dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini
输出:
DSC02 机器(135):
cd /home/dmdba/dmdsc/bin
./dmcss dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini
输出:
DSC01 机器(131):
./dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini
输出:
DSC02 机器(135):
./dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini
输出:
仅在 DSC01 机器(131)执行(以 dmdba 用户操作):
./dmasmtool dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini
在交互界面中执行:
ASM> CREATE DISKGROUP DMDATA asmdisk '/dev_DSC2/DMDATA'
ASM> CREATE DISKGROUP DMLOG asmdisk '/dev_DSC2/DMLOG'
输出:
步骤一:创建 dminit.ini 配置文件
仅在 131 机器执行(以 dmdba 用户操作):
vi /home/dmdba/dmdsc/data/DSC01/dminit.ini
文件内容:
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
SYSDBA_PWD=DMdba_123
SYSAUDITOR_PWD=DMauditor_123
[DSC01]
CONFIG_PATH= /home/dmdba/dmdsc/data/DSC01/DSC01_conf
PORT_NUM = 6636
MAL_HOST= 192.168.52.131
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.52.135
MAL_PORT= 6537
LOG_PATH= +DMLOG/log/DSC02_log1.log
LOG_PATH= +DMLOG/log/DSC02_log2.log
步骤二:执行初始化
./dminit control=/home/dmdba/dmdsc/data/DSC01/dminit.ini
输出:
步骤三:复制配置文件到 135 机器
scp -r /home/dmdba/dmdsc/data/DSC02/* dmdba@192.168.52.135:/home/dmdba/dmdsc/data/DSC02/
DSC01 机器(131):
cd /home/dmdba/dmdsc/bin
./dmserver dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini /home/dmdba/dmdsc/data/DSC01/DSC01_conf/dm.ini
输出关键信息:
DSC02 机器(135):
cd /home/dmdba/dmdsc/bin
./dmserver dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini /home/dmdba/dmdsc/data/DSC02/DSC02_conf/dm.ini
输出关键信息:
在 DSC01 机器(131)执行(以 dmdba 用户操作):
创建 DMCSSM.INI 配置文件:
vi /home/dmdba/dmdsc/data/dmcssm.ini
CSSM_OGUID = 1071107589 CSSM_CSS_IP = 192.168.52.131:9836 CSSM_CSS_IP = 192.168.52.135:9837 CSSM_LOG_PATH = /home/dmdba/dmdsc/data/cssm_log CSSM_LOG_FILE_SIZE = 32 CSSM_LOG_SPACE_LIMIT = 0
创建日志目录并启动监视器:
mkdir -p /home/dmdba/dmdsc/data/cssm_log ./dmcssm /home/dmdba/dmdsc/data/dmcssm.ini
输出:
在 DMCSSM 监视器提示符下输入 show,验证集群状态:
所有三个组(GRP_CSS、GRP_ASM、GRP_DSC)的全部节点状态均为 OPEN 和 WORKING,集群部署成功。
/dev_DSC2/),避免 DMDSC 启动时扫描到无关磁盘导致启动失败。dmasvrmal.ini 内容必须完全相同;dmdcr.ini 中 DMDCR_SEQNO 不同。文章
阅读量
获赞
