6.搭建共享存储集群

前言

DMDSC 集群是一个多实例、单数据库的系统。

  • 多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。
  • 数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件,这些文件保存在共享存储上。
  • 每个节点有自己独立的联机日志和归档日志,联机日志和归档日志都需要保存在共享存储上。
  • 达梦数据库的共享存储集群部署过程中相对复杂,大家最好先进行规划再进行部署

一、集群规划

1 集群架构

简单来说,共享存储集群(DSC)的两个数据库节点共享同一份业务数据,节点之间通过心跳网络进行通信。
架构

2 服务器信息

1.1 演示环境
系统CPU内存磁盘网卡数据库版本服务器数量
redhat 7.91C2G50G千兆DM82台
1.2 本地磁盘规划
-A服务器(sdb1)B服务器(sdb2)备注
数据库安装目录/home/dmdba/dmdbms/home/dmdba/dmdbms数据库安装路径,存放数据库运行日志等信息
数据库备份目录/opt/dm/dmbak//opt/dm/dmbak/用于存放数据库备份文件
数据库 SQL 日志目录/opt/dm/dmsqllog//opt/dm/dmsqllog/用于存放数据库 dmsql 日志
集群配置文件目录/opt/dm/dmconfig/opt/dm/dmconfig用于存放数据库集群配置文件
系统 core 目录/opt/dm/core/opt/dm/core用户存放系统的 core 文件
监控文件 nmon 目录/opt/dm/nmon_output/opt/dm/nmon_output用于存放服务器性能监控 nmon 日志文件
1.3 共享磁盘规划

DMDSC 集群为了实现多实例同时访问和修改数据,需要数据文件、控制文件和日志文件都放到共享存储上。

名称拟定配置分区大小备注
DCR 盘/dev/raw/raw1200MB用于存储、维护集群配置的详细信息,整个集群环境共享 DCR 配置信息
VOTE 磁盘/dev/raw/raw2200MB记录集群成员信息,集群通过 Voting Disk 进行心跳检测,确定集群中节点的状态
Redo 日志盘/dev/raw/raw35GB用于存储数据库集群 Redo log
数据盘/dev/raw/raw514GB用于存放数据
归档盘/dev/raw/raw65.6GB用于存储数据库集群各实例的归档日志
1.4 端口规划

二、集群部署

1 创建共享磁盘

1.1 window 服务器分配存储
cd E:\tools\VM
## window 直接删除文件即可
./vmware-vdiskmanager -c -s 25Gb -a lsilogic -t 2 "D:\system\share\cipan\DCS-share-25G.vmdk"

1.2 磁盘分区

磁盘分区过程中,主分区最多支持四个,所以在第四个的时候需要按为 e 作为扩展逻辑盘,且第一个逻辑盘不能存储数据,在本博文中 /dev/sdb4 不存储数据

fdisk /dev/sdb

  • 裸设备绑定
cat > /etc/udev/rules.d/70-persistent-ipoib.rules << EOF
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"
ACTION=="add",KERNEL=="sdb5",RUN+="/bin/raw /dev/raw/raw5 %N"
ACTION=="add",KERNEL=="sdb6",RUN+="/bin/raw /dev/raw/raw6 %N"
ACTION=="add",KERNEL=="raw[1-6]", OWNER="dmdba", GROUP="dinstall", MODE="660"
EOF
reboot

2 软件安装

环境部署过程

3 集群搭建

3.1 配置 dmdcr_cfg.ini
  • 使用 dmdba 用户进行实例初始化,sdb1 和 sdb2 机器配置相同
cat > /opt/dm/dmconfig/dmdcr_cfg.ini << EOF
DCR_N_GRP         = 3     ##集群环境有多少个 GROUP,范围:1~16
DCR_VTD_PATH      =  /dev/raw/raw2   ##规划为 vote 的磁盘
DCR_OGUID      		= 210715   ## 消息标识,一个组里面只有一个。

[GRP]  #新建一个 GROUP
  DCR_GRP_TYPE             = CSS  ##组类型(CSS/ASM/DB)
  DCR_GRP_NAME           = GRP_CSS  ##组名
  DCR_GRP_N_EP            = 2  ##组内节点个数
  DCR_GRP_DSKCHK_CNT     = 65  ##磁盘心跳容错时间,单位:秒
[GRP_CSS]
  DCR_EP_NAME             = CSS0   ##CSS 节点名
  DCR_EP_HOST              = 192.168.30.176   ##心跳地址
  DCR_EP_PORT              = 11286   ##CSS 端口
[GRP_CSS]
  DCR_EP_NAME            = CSS1
  DCR_EP_HOST             = 192.168.30.177
  DCR_EP_PORT             = 11286

[GRP]
  DCR_GRP_TYPE              = ASM
  DCR_GRP_NAME           = GRP_ASM
  DCR_GRP_N_EP             = 2
  DCR_GRP_DSKCHK_CNT     = 61
[GRP_ASM]
  DCR_EP_NAME   = ASM0  ##ASM 节点名,和 dmasvrmal 的 MAL_INST_NAME 一致
  DCR_EP_SHM_KEY         = 42424  ##共享内存标识
  DCR_EP_SHM_SIZE        = 1024  ##共享内存大小
  DCR_EP_HOST               = 192.168.30.176  ##心跳地址
  DCR_EP_PORT               = 11276  ##ASM 端口
  DCR_EP_ASM_LOAD_PATH   = /dev/raw
[GRP_ASM]
  DCR_EP_NAME              = ASM1
  DCR_EP_SHM_KEY         = 42425
  DCR_EP_SHM_SIZE        = 1024
  DCR_EP_HOST               = 192.168.30.177
  DCR_EP_PORT               = 11276
  DCR_EP_ASM_LOAD_PATH   = /dev/raw
[GRP]
  DCR_GRP_TYPE              = DB
  DCR_GRP_NAME           = GRP_DSC
  DCR_GRP_N_EP             = 2
  DCR_GRP_DSKCHK_CNT     = 57
[GRP_DSC]
  DCR_EP_NAME             = DSC0  ##实例名,和 dm.ini 的 INSTANCE_NAME 一致
  DCR_EP_SEQNO           = 0  ##组内序号,不能重复
  DCR_EP_PORT              = 5236  ##实例端口,和 dm.ini 的 PORT_NUM 一致
  DCR_CHECK_PORT       = 11256   ##DCR 检查端口
[GRP_DSC]
  DCR_EP_NAME             = DSC1
  DCR_EP_SEQNO           = 1
  DCR_EP_PORT             = 5236
  DCR_CHECK_PORT         = 11256
EOF
3.2 初始化磁盘

在 sdb1 服务上进行如下操作

$DM_HOME/bin/dmasmcmd
-- asm script file
create dcrdisk '/dev/raw/raw1' 'dcr'
create votedisk '/dev/raw/raw2' 'vote'
create asmdisk '/dev/raw/raw3' 'LOG0'
create asmdisk '/dev/raw/raw5' 'DATA0'
create asmdisk '/dev/raw/raw6' 'ARCH0'
-- 检查
listdisks '/dev/raw/'

init dcrdisk '/dev/raw/raw1' from '/opt/dm/dmconfig/dmdcr_cfg.ini' identified by '123456'
init votedisk '/dev/raw/raw2' from '/opt/dm/dmconfig/dmdcr_cfg.ini'

3.3 配置 dmasvrmal.ini
  • 两台服务器相同配置
cat > /opt/dm/dmconfig/dmasvrmal.ini << EOF
[MAL_INST0]
MAL_INST_NAME            = ASM0
MAL_HOST                  = 192.168.30.176  #心跳地址
MAL_PORT                  = 11266  #MAL 监听端口
[MAL_INST1]
MAL_INST_NAME            = ASM1
MAL_HOST                  = 192.168.30.177
MAL_PORT                  = 11266
EOF
## sdb1
cp /opt/dm/dmconfig/dmasvrmal.ini  /opt/dm/dmconfig/DSC0/
## sdb2
cp /opt/dm/dmconfig/dmasvrmal.ini  /opt/dm/dmconfig/DSC1/
3.4 配置 dmdcr.ini 文件
  • sdb1 机器配置 dmdcr.ini, dmdcr_seqno 为 0
cat > /opt/dm/dmconfig/dmdcr.ini << EOF
DMDCR_PATH                   = /dev/raw/raw1
DMDCR_MAL_PATH           = /opt/dm/dmconfig/DSC0/dmasvrmal.ini
DMDCR_SEQNO                  = 0
DMDCR_AUTO_OPEN_CHECK        = 111
DMDCR_ASM_TRACE_LEVEL        = 2

##DMDCR_ASM_RESTART_INTERVAL   = 60  #CSS 认定 ASM 故障重启的时间
##DMDCR_ASM_STARTUP_CMD     = /dm/dmdbms/dsc_config/DmAsmService_DSC0 start
##DMDCR_DB_RESTART_INTERVAL    = 60   ##CSS 认定 DSC 故障重启的时间,设置为 0 不自动拉起
##DMDCR_DB_STARTUP_CMD      = /dm/dmdbms/dsc_config/DmService_DSC0 start
EOF
  • sdb2 机器配置 dmdcr.ini, dmdcr_seqno 为 1
cat > /opt/dm/dmconfig/dmdcr.ini << EOF
DMDCR_PATH                   = /dev/raw/raw1
DMDCR_MAL_PATH               = /opt/dm/dmconfig/DSC1/dmasvrmal.ini
DMDCR_SEQNO                  = 1
DMDCR_AUTO_OPEN_CHECK        = 111
DMDCR_ASM_TRACE_LEVEL        = 2

##DMDCR_ASM_RESTART_INTERVAL   = 60
##DMDCR_ASM_STARTUP_CMD        = /dm/dmdbms/dsc_config/DmAsmServiceDSC1 start
##DMDCR_DB_RESTART_INTERVAL    = 60   
##DMDCR_DB_STARTUP_CMD         = /dm/dmdbms/dsc_config/DmServiceDSC1 star
EOF

当前为手动拉起 db0 机器和 db1 机器的 ASM 和 DMSERVER 服务。待集群配置完成后,再修改为自动拉起(删除 dmdcr.ini 中的“##”号即可)

3.6 启动 DMCSS、DMASM 服务
  • 在 2 个节点分别启动 dmcss 命令 、 dmasmsvr 命令
cd $DM_HOME/bin/
## 需要两个一起启动
nohup $DM_HOME/bin/dmcss dcr_ini=/opt/dm/dmconfig/DSC0/dmdcr.ini &
nohup $DM_HOME/bin/dmcss dcr_ini=/opt/dm/dmconfig/DSC1/dmdcr.ini &
## dmasmsvr https://blog.csdn.net/canyueduyi/article/details/125250968
nohup ./dmasmsvr  DCR_INI=/opt/dm/dmconfig/DSC0/dmdcr.ini &
nohup ./dmasmsvr  DCR_INI=/opt/dm/dmconfig/DSC1/dmdcr.ini &

3.7 查看磁盘组
##在 sdb1 节点启动 dmasmtool 工具
$DM_HOME/bin/dmasmtool DCR_INI=/opt/dm/dmconfig/dmdcr.ini

create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw5'
create diskgroup 'DMARCH' asmdisk '/dev/raw/raw6'
## 查看磁盘
ls

3.8 初始化实例
  • 两台服务器的配置一致
## 添加配置
cat > /opt/dm/dmconfig/dminit.ini << EOF
DB_NAME                  = DSC
SYSDBA_PWD               = SYSDBA_PWD
SYSTEM_PATH              = +DMDATA/data
SYSTEM                   = +DMDATA/data/SYSTEM.dbf
SYSTEM_SIZE              = 128
ROLL                     = +DMDATA/data/ROLL.dbf
ROLL_SIZE                = 128
MAIN                     = +DMDATA/data/MAIN.dbf
MAIN_SIZE                = 128
CTL_PATH                 = +DMDATA/data/dm.ctl
CTL_SIZE                 = 8
LOG_SIZE                 = 256
DCR_PATH                 = /dev/raw/raw1 #dcr 磁盘路径
DCR_SEQNO                = 0
AUTO_OVERWRITE           = 1
PAGE_SIZE                = 32
EXTENT_SIZE              = 16
BLANK_PAD_MODE           = 1

[DSC0] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
CONFIG_PATH              = /opt/dm/dmconfig/DSC0
PORT_NUM                 = 5236
MAL_HOST                 = 192.168.30.176
MAL_PORT                 = 11246
LOG_PATH                 = +DMLOG/DSC0_LOG01.log
LOG_PATH                 = +DMLOG/DSC0_LOG02.log
[DSC1]
CONFIG_PATH              = /opt/dm/dmconfig/DSC1
PORT_NUM                 = 5236
MAL_HOST                 = 192.168.30.177
MAL_PORT                 = 11246
LOG_PATH                 = +DMLOG/DSC1_LOG01.log
LOG_PATH                 = +DMLOG/DSC1_LOG02.log
EOF

## 初始化实例
$DM_HOME/bin/dminit control=/opt/dm/dmconfig/dminit.ini

  • 拷贝文件到 DSC02 节点
scp -r /opt/dm/dmconfig/DSC1 dmdba@192.168.30.177:/opt/dm/dmconfig/
3.9 配置 dmarch.ini 文件
## 修改 dm.ini , ARCH_INI 设为 1 , sdb1
vi /opt/dm/dmconfig/DSC0/dm.ini

## 创建 dmarch.ini , sdb1
cat > /opt/dm/dmconfig/DSC0/dmarch.ini << EOF
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/ARCH/DSC0/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMARCH/ARCH/DSC1/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
EOF

## 修改 dm.ini , ARCH_INI 设为 1 , sdb2
vi /opt/dm/dmconfig/DSC1/dm.ini

## 创建 dmarch.ini , sdb2
cat > /opt/dm/dmconfig/DSC1/dmarch.ini << EOF
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/ARCH/DSC1/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = +DMARCH/ARCH/DSC0/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
EOF
3.10 启动 DMSERVER 服务
## sdb1
$DM_HOME/bin/dmserver /opt/dm/dmconfig/DSC0/dm.ini dcr_ini=/opt/dm/dmconfig/DSC0/dmdcr.ini

## sdb2
$DM_HOME/bin/dmserver /opt/dm/dmconfig/DSC1/dm.ini dcr_ini=/opt/dm/dmconfig/DSC1/dmdcr.ini

3.11 注册 CSS、ASM、DMSERVER 后台服务
##sdb1\2 机器
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /opt/dm/dmconfig/dmdcr.ini -p CSS
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /opt/dm/dmconfig/dmdcr.ini -y DmCSSServiceCSS.service -p ASM

##sdb1 机器
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /opt/dm/dmconfig/DSC0/dm.ini -dcr_ini /opt/dm/dmconfig/dmdcr.ini -y DmASMSvrServiceASM.service  -p DSC

##sdb2 机器
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /opt/dm/dmconfig/DSC1/dm.ini -dcr_ini /opt/dm/dmconfig/dmdcr.ini -y DmASMSvrServiceASM.service  -p DSC

3.12 配置监控器
  • 创建 dmcssm.ini
## A 机器、B 机器配置相同
cat > $DM_HOME/bin/dmcssm.ini << EOF
CSSM_OGUID                 = 210715
CSSM_CSS_IP                = 192.168.30.176:11286
CSSM_CSS_IP                = 192.168.30.177:11286
CSSM_LOG_PATH              = ../log
CSSM_LOG_FILE_SIZE         = 512
CSSM_LOG_SPACE_LIMIT       = 2048
EOF

## 注册服务
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmcssm -cssm_ini /home/dmdba/dmdbms/bin/dmcssm.ini -p Monitor
3.13 授权 setcap
  • 为了优化集群在操作系统假死时对节点状态的判断机制,设置 setcap 权限
##root 用户执行:
setcap cap_net_raw,cap_net_admin=eip  /home/dmdba/dmdbms/bin/dmserver
setcap cap_net_raw,cap_net_admin=eip  /home/dmdba/dmdbms/bin/dmasmsvr
##验证 setcap,有输出则授权成功:
getcap /home/dmdba/dmdbms/bin/dmserver
getcap /home/dmdba/dmdbms/bin/dmasmsvr
##每节点依次通过“kill -11 dmserver进程号”验证core文件可正常生成。

3.14 启动服务
  • 启动监视器
## 前台启动
$DM_HOME/bin/dmcssm INI_PATH=$DM_HOME/bin/dmcssm.ini
## 后台启动
$DM_HOME/bin/DmCSSMonitorServiceMonitor start
  • 启动集群
##启动:A/B 机器 CSS
A/B 机器:
$DM_HOME/bin/DmCSSServiceCSS start
$DM_HOME/bin/DmASMSvrServiceASM start
$DM_HOME/bin/DmServiceDSC start
##说明:CSS 启动后 30 秒自动拉起 ASM,60 秒自动拉起 DMSERVER。

##停止: A/B 机器 DMSERVER→A/B 机器 ASM→A/B 机器 CSS
A/B 机器:$DM_HOME/bin/DmServiceDSC stop
A/B 机器:$DM_HOME/bin/DmASMSvrServiceASM stop
A/B 机器:$DM_HOME/bin/DmCSSServiceCSS stop

3.15 验证服务
## 链接数据库
$DM_HOME/bin/disql SYSDBA/SYSDBA_PWD@192.168.30.177:5236

至此对达梦数据库的共享存储集群已经部署测试完成。

参考内容

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
搭建达梦共享存储集群可以按照以下步骤进行: 1. 硬件准备: - 确保每个节点都配备高速网络连接和足够的存储空间。 - 选择适当的共享存储设备,如SAN(存储区域网络)或NAS(网络附加存储)。 2. 操作系统安装: - 在每个节点上安装适当的操作系统,如Linux或Windows Server。确保所有节点的操作系统版本和配置相同。 3. 数据库安装: - 按照达梦数据库的安装指南,在每个节点上分别安装达梦数据库软件。确保使用相同的版本和配置参数。 4. 共享存储设置: - 配置共享存储设备,确保所有节点都可以访问共享存储。 - 在共享存储上创建一个共享目录,用于存放数据库文件和日志文件。 5. 集群配置: - 在每个节点上编辑达梦数据库的配置文件,指定共享存储目录作为数据库文件和日志文件的存储路径。 - 配置集群管理工具,如达梦数据库提供的集群管理工具,以管理和监控集群的状态。 6. 启动集群: - 在每个节点上启动达梦数据库实例,并确保所有节点都成功启动。 - 使用集群管理工具,监控集群的状态,确保各个节点之间的通信正常。 7. 测试和验证: - 运行一些测试任务,验证集群的可用性和性能。 - 测试故障转移功能,确保在节点故障时集群可以自动切换到其他可用节点。 以上是达梦共享存储集群搭建的一般步骤。具体的操作步骤和配置可能会根据具体环境和需求有所不同。建议在搭建过程中参考达梦数据库的官方文档或咨询达梦数据库的技术支持团队。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值