DM共享存储数据库集群的英文全称DM Data Shared Cluster,简称DMDSC。
DM共享存储数据库集群,允许多个数据库实例同时访问、操作同一数据库,具有高可用、高性能、负载均衡等特性。DMDSC支持故障自动切换和故障自动重加入,某一个数据库实例故障后,不会导致数据库服务无法提供。
本文主要记录本人搭建两节点DSC时的过程。
1 搭建前准备
准备两台虚拟机,配置好静态IP地址、关闭防火墙及selinux,同时两台虚拟机都安装好DM8,无需初始化实例
Systemctl stop firewalld #临时关闭防火墙
Systemctl disable firewalld #永久关闭防火墙
setenforce 0 #临时关闭selinux
vi /etc/selinux/config #永久关闭selinux
# 进入文件后修改 SELINUX = disabled
2 创建共享磁盘
在实体机VMware安装目录输入cmd进入命令行,而后执行
.\vmware-vdiskmanager.exe -c -s 20G -a lsilogic -t 2 "E:\DMDSCtemp\DSC\share.vmdk"
在两台虚拟机上添加共享磁盘,先关闭两台虚拟机,然后如下图指示操作
编辑DSC1、DSC2虚拟机的.vmx文件(使用文本工具打开)
末尾添加如下代码:
disk.locking="FALSE"
disk.EnableUUID = "TRUE"
3 使用其中一台虚拟机进行磁盘分区(DSC1):
输入lsblk查看当前磁盘
可以看到sdb为新加的磁盘,但尚未分区
开始分区:
fdisk /dev/sdb
再次查看分区,可以看到已经分区完成,再另一台虚拟机查看也已经分区
4 绑定裸设备(两台虚拟机都要):
执行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
查看结果:
ll /dev/raw/
5 配置初始化配置文件(两台虚拟机都要):
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.237.164
DCR_EP_PORT = 9341
[CSS]
DCR_EP_NAME = CSS2
DCR_EP_HOST = 192.168.237.165
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.237.164
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.237.165
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
6 创建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'
Exit
7 配置ASM的MAL文件(两台虚拟机都要):
vim /dm8/config/dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.237.164
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM2
MAL_HOST = 192.168.237.165
MAL_PORT = 7237
8 配置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
9 启动DMCSS(两台虚拟机都启动,先启动的为控制节点,这里先启动DSC1):
在dm8/bin目录下执行
./dmcss dcr_ini=/dm8/config/dmdcr.ini
DSC1:
DSC2:
10 启动ASM(两台都要启动)
新开窗口,到dm8/bin目录下执行:
./dmasmsvr DCR_INI=/dm8/config/dmdcr.ini
DSC1:
DSC2:
11 创建 ASM 磁盘组(使用主控虚拟机创建,这里用DSC1)
新开窗口,到dm8/bin目录下执行
./dmasmtool dcr_ini=/dm8/config/dmdcr.ini
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
12 初始化实例(主控端,这里为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.237.164
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.237.165
mal_port = 9266
log_path = +DMLOG/log/DSC2_log01.log
log_path = +DMLOG/log/DSC2_log02.log
./dminit control=/dm8/config/dminit.ini
初始化完成后会在 init 控制文件配置的目录下,即dm8/comfig目录下生成 2 个实例的配置文件 dsc1和dsc2,将dsc2拷贝到DSC2虚拟机上对应的位置
scp -r /dm8/config/dsc2 dmdba@192.168.237.165:/dm8/config/
13 启动dmserver数据库服务(两台虚拟机都要)
分别到dm8/bin目录下执行
./dmserver /dm8/config/dsc1/dm.ini dcr_ini=/dm8/config/dmdcr.ini
./dmserver /dm8/config/dsc2/dm.ini dcr_ini=/dm8/config/dmdcr.ini
14 查看DSC集群状态:
在DSC1虚拟机CSS运行窗口执行show命令查看
若nst_status 字段为 OPEN,vtd_status 字段为 WORKING,active 字段为 TRUE 说明 db 服务正常,至此DSC数据共享集群搭建完成。
15 测试验证
在DSC1虚拟机使用DM的manger工具连接端口5700数据库,创建TEST模式并创建T1表,到DSC2虚拟机上连接相同的数据库,若发现存在TEST模式并有T1表即验证完成
16 开启关闭DSC共享分布集群
开启顺序即如上,依次分别启动CSS、ASM、DMserver
关闭顺序在DSC1上关闭DMserver,此时DSC2上的DMserver也会跟着关闭
然后在DSC1关闭ASM,此时DSC2上的ASM也会跟着关闭
最后再逐个关闭CSS服务
请上达梦社区了解 https://eco.dameng.com