目录
一、前言
本篇博客仅为个人在学习搭建DSC的过程记录,大部分操作均参考的官方文档,并结合自己实际的测试环境来进行搭建。官网指路:共享存储集群安装部署 | 达梦技术文档
二、部署规划
以2节点DSC集群为例
数据库以及操作系统规划:
数据库版本 | DM 8 |
操作系统 | Redhat 7 |
IP规划:
主机名 | 服务ip | 心跳ip | 数据库名 | 实例名 |
dmdsc01 | 192.168.11.100 | 10.0.1.100 | DSC | DSC1 |
dmdsc02 | 192.168.11.101 | 10.0.1.101 | DSC | DSC2 |
端口规划:
实例名 | 实例端口 | MAL系统端口 | CSS端口 | ASM端口 | ASM的MAL端口 | DCR检查实例端口 |
DSC1 | 5236 | 9236 | 9341 | 9351 | 7236 | 9741 |
DSC2 | 5236 | 9236 | 9341 | 9351 | 7236 | 9741 |
共享存储规划:
磁盘 | 裸设备名/用途 |
/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(归档日志磁盘) |
目录规划:(在对应服务器上创建目录owner为dmdba组为dinstall)
数据库软件安装目录 | /home/dmdba/dmdbms |
DSC配置文件目录 | /home/dmdba/config |
DSC1本地归档目录 | +DMARCH/dsc1 |
DSC1远程归档目录 | +DMARCH/dsc2 |
DSC2本地归档目录 | +DMARCH/dsc2 |
DSC2远程归档目录 | +DMARCH/dsc1 |
三、虚拟机准备
2.1 添加第二张网卡
主要是用作集群的心跳ip,
第二张网卡配置 (IP请根据实际的环境进行调整)
cd /etc/sysconfig/network-scripts
vi ifcfg-ens34
修改参数
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.0.1.100
重启网络服务
systemctl restart network
用相同的方式给集群的另一个节点配置第二张网卡
2.2 添加共享磁盘
命令行创建共享磁盘(如果指定的共享磁盘的存放目录如果不存在需要提前创建)
d:
cd VMware\VMware Workstation
.\vmware-vdiskmanager.exe -c -s 10g -a lsilogic -t 2 "D:\DM-DSC1\sharedisk\share-data0.vmdk"
.\vmware-vdiskmanager.exe -c -s 5g -a lsilogic -t 2 "D:\DM-DSC1\sharedisk\share-dcr.vmdk"
.\vmware-vdiskmanager.exe -c -s 5g -a lsilogic -t 2 "D:\DM-DSC1\sharedisk\share-vote.vmdk"
.\vmware-vdiskmanager.exe -c -s 10GB -a lsilogic -t 2 "D:\DM-DSC1\sharedisk\share-log0.vmdk"
.\vmware-vdiskmanager.exe -c -s 10GB -a lsilogic -t 2 "D:\DM-DSC1\sharedisk\share-arch0.vmdk"
执行结果如下图所示
编辑两台虚拟机的vmx文件
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 = "D:\DM-DSC1\sharedisk\share-data0.vmdk"
scsi1:0.redo = ""
scsi1:1.mode = "independent-persistent"
scsi1:1.deviceType = "disk"
scsi1:1.present = "TRUE"
scsi1:1.fileName = "D:\DM-DSC1\sharedisk\share-dcr.vmdk"
scsi1:1.redo = ""
scsi1:2.mode = "independent-persistent"
scsi1:2.deviceType = "disk"
scsi1:2.present = "TRUE"
scsi1:2.fileName = "D:\DM-DSC1\sharedisk\share-vote.vmdk"
scsi1:2.redo = ""
scsi1:3.mode = "independent-persistent"
scsi1:3.deviceType = "disk"
scsi1:3.present = "TRUE"
scsi1:3.fileName = "D:\DM-DSC1\sharedisk\share-log0.vmdk"
scsi1:3.redo = ""
scsi1:4.mode = "independent-persistent"
scsi1:4.deviceType = "disk"
scsi1:4.present = "TRUE"
scsi1:4.fileName = "D:\DM-DSC1\sharedisk\share-arch0.vmdk"
scsi1:4.redo = ""
查看虚拟机的配置是否已经新增了5块磁盘
查看全部的磁盘
fdisk -l | grep dev/sd*
四、数据库软件安装
这一节不再过多赘述,参考官方文档,创建数据库用户并安装软件即可(注意是集群的每个节点都需要安装数据库软件)
五、DSC集群部署配置
5.1 使用udev绑定裸设备 (2个节点)
两台主机上都需要配置。
sdb-sdf 是需要配置的共享磁盘。
执行以下命令,新建 udev 规则文件。
for disk in `ls /dev/sd*`
do
echo $disk
/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=$disk
done
写入配置文件
vi /etc/udev/rules.d/99-dm-asmdevices.rules
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c29e63a7fce61d48295b05215e48", SYMLINK+="asmdata0", OWNER="dmdba", GROUP="dinstall", MODE="0660"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c29b3b883583e9284b1cf0ae7586", SYMLINK+="asmdcr", OWNER="dmdba", GROUP="dinstall", MODE="0660"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c29e5f88d0d89238a604ac759f82", SYMLINK+="asmlog0", OWNER="dmdba", GROUP="dinstall", MODE="0660"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c29962e698a82288995af20810a1", SYMLINK+="asmvote", OWNER="dmdba", GROUP="dinstall", MODE="0660"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c29438db2c3fa4106131104ac187", SYMLINK+="asmarch0", OWNER="dmdba", GROUP="dinstall", MODE="0660"
执行以下命令,使 udev 生效。
/sbin/udevadm trigger --type=devices --action=change
/sbin/udevadm control --reload-rules
检查是否配置成功
ll /dev/asm*
blockdev --getsize64 /dev/asmarch0
5.2 配置 DCR 初始化配置文件 (2个节点)
创建配置文件存放目录,2 个节点都要执行
使用 dmdba 用户,执行以下命令:
su - dmdba
mkdir -p /home/dmdba/config
新建 dmdcr_cfg.ini 文件,节点 1 使用 dmdba 用户,执行以下命令:
vi /home/dmdba/config/dmdcr_cfg.ini
添加以下内容:
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/asmvote
DCR_OGUID = 63635
[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = CSS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[CSS]
DCR_EP_NAME = CSS0
DCR_EP_HOST = 10.0.1.100
DCR_EP_PORT = 9341
[CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 10.0.1.101
DCR_EP_PORT = 9341
[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[ASM]
DCR_EP_NAME = ASM0
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 500
DCR_EP_HOST = 10.0.1.100
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/
[ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 500
DCR_EP_HOST = 10.0.1.101
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[DSC]
DCR_EP_NAME = DSC0
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
[DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
5.3 初始化磁盘组 (1个节点)
使用 dmdba 用户,执行以下命令(只需在一个节点执行)。
dmasmcmd
进入 ASM 提示符后执行以下命令:
create dcrdisk '/dev/asmdcr' 'dcr'
create votedisk '/dev/asmvote' 'vote'
create asmdisk '/dev/asmlog0' 'LOG0'
create asmdisk '/dev/asmdata0' 'DATA0'
create asmdisk '/dev/asmarch0' 'ARCH0'
init dcrdisk '/dev/asmdcr' from '/home/dmdba/config/dmdcr_cfg.ini' identified by '123456'
init votedisk '/dev/asmvote' from '/home/dmdba/config/dmdcr_cfg.ini'
5.4 配置ASM的MAL系统配置文件 (2个节点)
2 个节点都需要配置,且文件内容相同,执行以下命令:
vi /home/dmdba/config/dmasvrmal.ini
添加以下内容:
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 10.0.1.100
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 10.0.1.101
MAL_PORT = 7236
5.5 配置 DCR 启动配置文件
vi /home/dmdba/config/dmdcr.ini
节点一配置dmdcr.ini文件,dmdcr_seqno 为 0
DMDCR_PATH = /dev/asmdcr
DMDCR_MAL_PATH = /home/dmdba/config/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_AUTO_OPEN_CHECK = 111
DMDCR_ASM_TRACE_LEVEL = 2
节点 2(DSC2) 添加以下内容:
DMDCR_PATH = /dev/asmdcr
DMDCR_MAL_PATH = /home/dmdba/config/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_AUTO_OPEN_CHECK = 111
DMDCR_ASM_TRACE_LEVEL = 2
5.6 启动DMCSS、DMASM服务
在 2 个节点分别启动 dmcss 命令:
/home/dmdba/dmdbms/bin/dmcss DCR_INI=/home/dmdba/config/dmdcr.ini
/home/dmdba/dmdbms/bin/dmcss DCR_INI=/home/dmdba/config/dmdcr.ini
show命令查看状态
节点一
节点二
在 2 个节点分别启动 dmasmsvr 命令:
/home/dmdba/dmdbms/bin/dmasmsvr DCR_INI=/home/dmdba/config/dmdcr.ini
/home/dmdba/dmdbms/bin/dmasmsvr DCR_INI=/home/dmdba/config/dmdcr.ini
节点一
节点二
5.7 创建 ASM 磁盘组 (1个节点)
asm 启动成功后,节点 1 (DSC1,只需在一个节点执行即可)使用 dmdba 用户启动 dmasmtool 工具。
/home/dmdba/dmdbms/bin/dmasmtool DCR_INI=/home/dmdba/config/dmdcr.ini
##输入下列语句创建 DMASM 磁盘组
##创建redo日志磁盘组
create diskgroup 'DMLOG' asmdisk '/dev/asmlog0'
##创建数据磁盘组
create diskgroup 'DMDATA' asmdisk '/dev/asmdata0'
##创建归档磁盘组
create diskgroup 'DMARCH' asmdisk '/dev/asmarch0'
5.8 初始化DSC集群数据库实例
节点一和节点二配置相同
配置 dminit 控制文件,节点 1 使用 dmdba 用户执行以下命令:
vi /home/dmdba/config/dminit.ini
添加以下内容:
DB_NAME = DSC
SYSDBA_PWD = SYSDBA_PWD
SYSTEM_PATH = +DMDATA/data
SYSTEM = +DMDATA/data/SYSTEM.dbf
SYSTEM_SIZE = 1024
ROLL = +DMDATA/data/ROLL.dbf
ROLL_SIZE = 10000
MAIN = +DMDATA/data/MAIN.dbf
MAIN_SIZE = 1024
CTL_PATH = +DMDATA/data/dm.ctl
CTL_SIZE = 8
LOG_SIZE = 2048
DCR_PATH = /dev/asmdcr
DCR_SEQNO = 0
AUTO_OVERWRITE = 1
PAGE_SIZE = 32
EXTENT_SIZE = 16
BLANK_PAD_MODE = 1
[DSC0]
CONFIG_PATH = /home/dmdba/config/dsc0
PORT_NUM = 5236
MAL_HOST = 10.0.1.100
MAL_PORT = 11246
LOG_PATH = +DMLOG/DSC0_LOG01.log
LOG_PATH = +DMLOG/DSC0_LOG02.log
[DSC1]
CONFIG_PATH = /home/dmdba/config/dsc1
PORT_NUM = 5236
MAL_HOST = 10.0.1.101
MAL_PORT = 11246
LOG_PATH = +DMLOG/DSC1_LOG01.log
LOG_PATH = +DMLOG/DSC1_LOG02.log
初始化实例,节点 1 使用 dmdba 用户执行以下命令:
/home/dmdba/dmdbms/bin/dminit control=/home/dmdba/config/dminit.ini
初始化完成后会在 init 控制文件配置的目录(config_path参数配置的目录)下生成 2 个实例的配置文件
需要手动将节点2的配置文件,从节点1复制到节点2对应目录
cd /home/dmdba/config
scp -r dsc1 10.0.1.101:/home/dmdba/config/
5.9 配置 dmarch.ini 文件
编辑dm.ini的ARCH_INI参数
vi /home/dmdba/config/dsc0/dm.ini
ARCH_INI = 1
创建 dmarch.ini
vi /home/dmdba/config/dsc0/dmarch.ini
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/dsc0
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 2048
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMARCH/dsc1
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 2048
节点二
vi /home/dmdba/config/dsc0/dm.ini
ARCH_INI = 1
创建 dmarch.ini
vi /home/dmdba/config/dsc0/dmarch.ini
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/dsc1
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 2048
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = +DMARCH/dsc0
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 2048
5.10 注册服务
2 个节点都需要注册,使用 root 用户执行,到数据库安装目录的 script/root 目录。
su - root
cd /home/dmdba/dmdbms/script/root
节点 一执行以下命令:
./dm_service_installer.sh -t dmcss -dcr_ini /home/dmdba/config/dmdcr.ini -p DSC
./dm_service_installer.sh -t dmasmsvr -dcr_ini /home/dmdba/config/dmdcr.ini -p DSC -y DmCSSServiceDSC.service
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/config/dsc0/dm.ini -dcr_ini /home/dmdba/config/dmdcr.ini -p DSC -y DmASMSvrServiceDSC.service
节点二执行以下命令:
./dm_service_installer.sh -t dmcss -dcr_ini /home/dmdba/config/dmdcr.ini -p DSC
./dm_service_installer.sh -t dmasmsvr -dcr_ini /home/dmdba/config/dmdcr.ini -p DSC -y DmCSSServiceDSC.service
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/config/dsc1/dm.ini -dcr_ini /home/dmdba/config/dmdcr.ini -p DSC -y DmASMSvrServiceDSC.service
5.11 配置集群监视器
任意节点新建监视器配置文件,执行以下命令:
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 = 10.0.1.100:9341
CSSM_CSS_IP = 10.0.1.101:9341
CSSM_LOG_PATH = /home/dmdba/dmdbms/log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大 32 MB
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
启动监视器,dmdba 用户执行,
dmcssm ini_path=/home/dmdba/config/dmcssm.ini
在监视器中查看集群状态
5.12 重启集群
停止: A/B 机器 DMSERVER→A/B 机器 ASM→A/B 机器 CSS
/home/dmdba/dmdbms/bin/DmServiceDSC stop
/home/dmdba/dmdbms/bin/DmASMSvrServiceDSC stop
/home/dmdba/dmdbms/bin/DmCSSServiceDSC stop
启动:A/B 机器 CSS (CSS 启动后 30 秒自动拉起 ASM,60 秒自动拉起 DMSERVER。)
/home/dmdba/dmdbms/bin/DmCSSServiceDSC start
附:达梦数据库官网
达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台