达梦共享存储集群是一个多实例、单数据库的系统。把数据库放置在共享磁盘上,在各个节点上单独创建数据库实例,每个数据库实例都能访问这个共享磁盘上的数据库。数据库的数据文件、控制文件在集群系统中只有一份,保存在共享磁盘上,每个节点有自己独立的联机日志和归档日志,其中联机日志保存在共享存储上,归档日志可以保存在本地存储上也可以保存在共享存储上。

本文主要介绍使用虚拟机搭建两个节点的达梦共享存储集群。

硬件:两台虚拟机,磁盘20G以上,内存2G以上

系统:centos7

共享存储:磁盘

数据库软件:DM8

端口规划如下:

mysql SAN共享存储实现 数据库共享存储_CSS


共享磁盘的目录规划:

存放 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

mysql SAN共享存储实现 数据库共享存储_数据库_02


临时关闭selinux

mysql SAN共享存储实现 数据库共享存储_vim_03


修改配置文件/etc/selinux/config

添加SELINUX=disabled

重启后永久生效。

mysql SAN共享存储实现 数据库共享存储_数据库_04


安装达梦数据库软件

先仅安装达梦数据库软件,不创建数据库实例,Linux安装达梦数据库可参照官网linux安装达梦数据库 安装中若使用图形化界面打不开

mysql SAN共享存储实现 数据库共享存储_数据库_05


在root用户下执行xhost +

mysql SAN共享存储实现 数据库共享存储_CSS_06


echo mysql SAN共享存储实现 数据库共享存储_服务器_07DISPLAY值和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"

mysql SAN共享存储实现 数据库共享存储_服务器_08


关闭两个虚拟机增加新建的共享磁盘

mysql SAN共享存储实现 数据库共享存储_数据库_09


mysql SAN共享存储实现 数据库共享存储_服务器_10


mysql SAN共享存储实现 数据库共享存储_数据库_11


mysql SAN共享存储实现 数据库共享存储_数据库_12


编辑.vmx文件

mysql SAN共享存储实现 数据库共享存储_vim_13


该文件可在末尾添加如下内容,可以用记事本或其他编辑器打开。

disk.locking="FALSE"
disk.EnableUUID = "TRUE"

mysql SAN共享存储实现 数据库共享存储_数据库_14


最后另一台虚拟机做同样的操作。

两台均配置好共享磁盘后,在其中一台上进行磁盘分区

在centos7上查看磁盘

mysql SAN共享存储实现 数据库共享存储_vim_15


分区

使用fdisk对磁盘分区,交互式命令设置磁盘分区

n → p → 1 → “回车” →+1G           # dcr
n → p → 2 → “回车” → +1G           # vote
n → p → 3 → “回车” → +8G          # log0
n → p → 4 → “回车” → 回车          # data0
w     #保存

mysql SAN共享存储实现 数据库共享存储_数据库_16


mysql SAN共享存储实现 数据库共享存储_mysql SAN共享存储实现_17


在另一台虚拟机查看磁盘,已分区

mysql SAN共享存储实现 数据库共享存储_vim_18


绑定裸设备,两个虚拟机均需要操作

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"

mysql SAN共享存储实现 数据库共享存储_mysql SAN共享存储实现_19


使裸设备生效,两个设备都要操作

partprobe /dev/sdb
udevadm control --reload-rules
udevadm trigger --type=devices --action=change

查看

mysql SAN共享存储实现 数据库共享存储_vim_20

配置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'

mysql SAN共享存储实现 数据库共享存储_数据库_21

配置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

mysql SAN共享存储实现 数据库共享存储_服务器_22


DSC2

mysql SAN共享存储实现 数据库共享存储_vim_23

启动ASM

两台都要启动

cd /dm8/bin

./dmasmsvr DCR_INI=/dm8/config/dmdcr.ini

DSC1

mysql SAN共享存储实现 数据库共享存储_vim_24


DSC2

mysql SAN共享存储实现 数据库共享存储_数据库_25


前面若没有关闭防火墙,这里的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'

mysql SAN共享存储实现 数据库共享存储_CSS_26

使用 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 工具初始化数据库

mysql SAN共享存储实现 数据库共享存储_数据库_27


初始化完成后会在 init 控制文件配置的目录下生成 2 个实例的配置文件 dsc1和dsc2.

mysql SAN共享存储实现 数据库共享存储_数据库_28


把dsc2复制到DSC2节点的机器上

scp -r dsc2 192.168.232.139:/dm8/config/

mysql SAN共享存储实现 数据库共享存储_vim_29

启动dmserver数据库服务(两台都要)

./dmserver /dm8/config/dsc1/dm.ini dcr_ini=/dm8/config/dmdcr.ini

DSC1

mysql SAN共享存储实现 数据库共享存储_数据库_30

./dmserver /dm8/config/dsc2/dm.ini dcr_ini=/dm8/config/dmdcr.ini

DSC2

mysql SAN共享存储实现 数据库共享存储_mysql SAN共享存储实现_31


DSC1 CSS窗口 show命令查看

查看vtd_status 字段为 WORKING,active 字段为 TRUE 说明 db 服务正常

mysql SAN共享存储实现 数据库共享存储_数据库_32

注册服务(两台都要)

在数据库软件安装目录下的/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

mysql SAN共享存储实现 数据库共享存储_服务器_33


启动

./DmCSSServiceDMCSS start
./DmASMSvrServiceDMASM start
./DmServiceDMSERVER start

设置自动拉起功能
vim /dm8/config/dmdcr.ini

DMDCR_ASM_RESTART_INTERVAL = 1  #自动拉起ASM
DMDCR_DB_RESTART_INTERVAL = 1   #自动拉起数据库实例

mysql SAN共享存储实现 数据库共享存储_vim_34

配置监视器(可选择其中一台)

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

mysql SAN共享存储实现 数据库共享存储_服务器_35


bin目录下启动监视器

./dmcssm ini_path=/dm8/config/dmcssm.ini

关闭集群

关闭数据库:监视器中执行 ep stop dsc

关闭 asm:监视器中执行 ep stop asm

mysql SAN共享存储实现 数据库共享存储_mysql SAN共享存储实现_36