达梦共享存储集群是一个多实例、单数据库的系统。把数据库放置在共享磁盘上,在各个节点上单独创建数据库实例,每个数据库实例都能访问这个共享磁盘上的数据库。数据库的数据文件、控制文件在集群系统中只有一份,保存在共享磁盘上,每个节点有自己独立的联机日志和归档日志,其中联机日志保存在共享存储上,归档日志可以保存在本地存储上也可以保存在共享存储上。
本文主要介绍使用虚拟机搭建两个节点的达梦共享存储集群。
硬件:两台虚拟机,磁盘20G以上,内存2G以上
系统:centos7
共享存储:磁盘
数据库软件:DM8
端口规划如下:
共享磁盘的目录规划:
存放 dcr 信息 /dev/sdb1 1 GB /DCR
存放 vote 信息 /dev/sdb2 1 GB /VOTE
存放 redo 日志 /dev/sdb3 8 GB /LOG0
存放数据文件 /dev/sdb4 10 GB /DATA0
文章目录
- 准备
- 创建共享磁盘
- 配置dmdcr_cfg.ini(两台都要)
- 创建ASM磁盘
- 配置ASM的MAL文件(两台都要)
- 配置dmdcr.ini文件(两台都要)
- 启动DMCSS
- 启动ASM
- 使用 dmasmtool 工具创建 DMASM 磁盘组
- 使用 dminit 初始化 DB 实例
- 注册服务(两台都要)
- 配置监视器(可选择其中一台)
- 关闭集群
准备
虚拟机先关闭防火墙和selinux
systemctl stop firewalld.service
临时关闭selinux
修改配置文件/etc/selinux/config
添加SELINUX=disabled
重启后永久生效。
安装达梦数据库软件
先仅安装达梦数据库软件,不创建数据库实例,Linux安装达梦数据库可参照官网linux安装达梦数据库 安装中若使用图形化界面打不开
在root用户下执行xhost +
echo DISPLAY值和root用户下的一致。
创建共享磁盘
使用虚拟机vmware软件下的vmware-vdiskmanager.exe工具创建20G的共享磁盘
使用cmd工具
C:\>"C:\Program Files (x86)\VMware\VMware Workstation\vmware-vdiskmanager.exe" -c -s 20GB -a lsilogic -t 2 "E:\vmmachines\DSC_share\DSC-share-20G.vmdk"
关闭两个虚拟机增加新建的共享磁盘
编辑.vmx文件
该文件可在末尾添加如下内容,可以用记事本或其他编辑器打开。
disk.locking="FALSE"
disk.EnableUUID = "TRUE"
最后另一台虚拟机做同样的操作。
两台均配置好共享磁盘后,在其中一台上进行磁盘分区
在centos7上查看磁盘
分区
使用fdisk对磁盘分区,交互式命令设置磁盘分区
n → p → 1 → “回车” →+1G # dcr
n → p → 2 → “回车” → +1G # vote
n → p → 3 → “回车” → +8G # log0
n → p → 4 → “回车” → 回车 # data0
w #保存
在另一台虚拟机查看磁盘,已分区
绑定裸设备,两个虚拟机均需要操作
linux下要使用裸设备,需要先绑定
编辑文件 vim /etc/udev/rules.d/80-raw.rules
ACTION=="add",KERNEL=="sdb1",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add",KERNEL=="sdb2",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add",KERNEL=="sdb3",RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add",KERNEL=="sdb4",RUN+="/bin/raw /dev/raw/raw4 %N"
KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"
使裸设备生效,两个设备都要操作
partprobe /dev/sdb
udevadm control --reload-rules
udevadm trigger --type=devices --action=change
查看
配置dmdcr_cfg.ini(两台都要)
切换到dmdba用户下,创建配置文件文件夹config
su - dmdba
mkdir /dm8/config
vim /dm8/config/dmdcr_cfg.ini
添加如下内容
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw2
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 = CSS1
DCR_EP_HOST = 192.168.232.138
DCR_EP_PORT = 9341
[CSS]
DCR_EP_NAME = CSS2
DCR_EP_HOST = 192.168.232.139
DCR_EP_PORT = 9343
[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.232.138
DCR_EP_PORT = 9349
DCR_EP_ASM_LOAD_PATH = /dev/raw
[ASM]
DCR_EP_NAME = ASM2
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.232.139
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5700
DCR_CHECK_PORT = 9741
[DSC]
DCR_EP_NAME = DSC2
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5700
DCR_CHECK_PORT = 9742
创建ASM磁盘
在其中一台虚拟机dm8的安装目录下的bin目录
./dmasmcmd
create dcrdisk '/dev/raw/raw1' 'dcr'
create votedisk '/dev/raw/raw2' 'vote'
create asmdisk '/dev/raw/raw3' 'LOG'
create asmdisk '/dev/raw/raw4' 'DATA'
init dcrdisk '/dev/raw/raw1' from '/dm8/config/dmdcr_cfg.ini' identified by '123456'
init votedisk '/dev/raw/raw2' from '/dm8/config/dmdcr_cfg.ini'
配置ASM的MAL文件(两台都要)
vim /dm8/config/dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.232.138
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM2
MAL_HOST = 192.168.232.139
MAL_PORT = 7237
配置dmdcr.ini文件(两台都要)
vim /dm8/config/dmdcr.ini
DSC1
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dm8/config/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_ASM_RESTART_INTERVAL =0
DMDCR_ASM_STARTUP_CMD = /dm8/bin/dmasmsvr dcr_ini=/dm8/config/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /dm8/bin/dmserver path=/dm8/config/dsc1/dm.ini dcr_ini=/dm8/config/dmdcr.ini
DSC2
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dm8/config/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_ASM_RESTART_INTERVAL =0
DMDCR_ASM_STARTUP_CMD = /dm8/bin/dmasmsvr dcr_ini=/dm8/config/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /dm8/bin/dmserver path=/dm8/config/dsc2/dm.ini dcr_ini=/dm8/config/dmdcr.ini
启动DMCSS
cd /dm8/bin
./dmcss dcr_ini=/dm8/config/dmdcr.ini
先启动的为控制节点
DSC1
DSC2
启动ASM
两台都要启动
cd /dm8/bin
./dmasmsvr DCR_INI=/dm8/config/dmdcr.ini
DSC1
DSC2
前面若没有关闭防火墙,这里的ASM服务就无法启动。
使用 dmasmtool 工具创建 DMASM 磁盘组
只在一台上操作,DSC1安装文件的bin目录下
./dmasmtool dcr_ini=/dm8/config/dmdcr.ini
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
使用 dminit 初始化 DB 实例
在控制点DSC1
vim /dm8/config/dminit.ini
db_name = DSC
system_path = +DMDATA/data
system = +DMDATA/data/dsc/system.dbf
system_size = 128
roll = +DMDATA/data/dsc/roll.dbf
roll_size = 128
main = +DMDATA/data/dsc/main.dbf
main_size = 128
ctl_path = +DMDATA/data/dsc/dm.ctl
ctl_size = 8
PAGE_SIZE = 32
log_size = 1024
dcr_path = /dev/raw/raw1
dcr_seqno = 0
auto_overwrite = 1
[DSC1]
config_path = /dm8/config/dsc1
port_num = 5700
mal_host = 192.168.232.138
mal_port = 9255
log_path = +DMLOG/log/DSC1_log01.log
log_path = +DMLOG/log/DSC1_log02.log
[DSC2]
config_path = /dm8/config/dsc2
port_num = 5700
mal_host = 192.168.232.139
mal_port = 9266
log_path = +DMLOG/log/DSC2_log01.log
log_path = +DMLOG/log/DSC2_log02.log
.dminit 工具初始化数据库
初始化完成后会在 init 控制文件配置的目录下生成 2 个实例的配置文件 dsc1和dsc2.
把dsc2复制到DSC2节点的机器上
scp -r dsc2 192.168.232.139:/dm8/config/
启动dmserver数据库服务(两台都要)
./dmserver /dm8/config/dsc1/dm.ini dcr_ini=/dm8/config/dmdcr.ini
DSC1
./dmserver /dm8/config/dsc2/dm.ini dcr_ini=/dm8/config/dmdcr.ini
DSC2
DSC1 CSS窗口 show命令查看
查看vtd_status 字段为 WORKING,active 字段为 TRUE 说明 db 服务正常
注册服务(两台都要)
在数据库软件安装目录下的/dm8/script/root目录下
注册DMCSS服务
/dm_service_installer.sh -t dmcss -dcr_ini /dm8/config/dmdcr.ini -p DMCSS
注册ASM服务
./dm_service_installer.sh -t dmasmsvr -dcr_ini /dm8/config/dmdcr.ini -y DmCSSServiceDMCSS -p DMASM
注册DMSERVER服务
./dm_service_installer.sh -t dmserver -dm_ini /dm8/config/dsc1/dm.ini -dcr_ini /dm8/config/dmdcr.ini -y DmASMSvrServiceDMASM -p DMSERVER
启动
./DmCSSServiceDMCSS start
./DmASMSvrServiceDMASM start
./DmServiceDMSERVER start
设置自动拉起功能
vim /dm8/config/dmdcr.ini
DMDCR_ASM_RESTART_INTERVAL = 1 #自动拉起ASM
DMDCR_DB_RESTART_INTERVAL = 1 #自动拉起数据库实例
配置监视器(可选择其中一台)
CSSM_OGUID = 63635
CSSM_CSS_IP = 192.168.232.138:9341
CSSM_CSS_IP = 192.168.232.139:9343
CSSM_LOG_PATH =/dm8/log
CSSM_LOG_FILE_SIZE = 256
CSSM_LOG_SPACE_LIMIT = 2048
bin目录下启动监视器
./dmcssm ini_path=/dm8/config/dmcssm.ini
关闭集群
关闭数据库:监视器中执行 ep stop dsc
关闭 asm:监视器中执行 ep stop asm