在上一篇博客里面我们对达梦数据库的达梦DMDSC共享存储数据库集群进行了理论学习。本篇技术分享文章是基于Linux下达梦DM共享存储数据库集群的动手实践部署过程。
一、集群规划
1.1基础环境介绍
硬件:两台相同配置虚拟机,2G 内存,5G本地磁盘,2块网卡,另有一块共享磁盘 8G。
操作系统:CentOS 8 Linux 64位。
DM 各种工具位于目录:/dm8/dmdbms/bin。 配置文件位于目录:/dm8/config。
已经部署DM8企业版数据库软件。数据库软件部署及环境配置操作可以参考之前的单机部署博客。
1.2本地目录规划
用途 |
目录路径 |
备注 |
数据库软件安装目录 |
/dm8/dmdbms |
可用空间>5 GB |
本地归档日志存放目录 |
/dmarch |
单独挂载磁盘 |
远程归档日志存放目录 |
/remote_arch |
单独挂载磁盘 |
备份文件存放目录 |
/dmbak |
单独挂载磁盘 |
1.3共享存储规划(实验环境配置)
用途 |
磁盘/分区 |
备注 |
存放vote信息 |
/dev/sdb |
100 MB 左右 |
存放数据文件 |
/dev/sdc |
2 GB 左右 |
存放redo |
/dev/sdd |
5 GB 左右 |
存放dcr信息 |
/dev/sde |
100MB根据实际数据大小分配 |
1.4网络和端口规划
搭建 2 节点共享存储集群,端口规划如下:(实际中可以按需要修改端口号)
主机名 |
public ip |
private ip |
实例名 |
端口 |
用途 |
dsc1 |
192.168.1.9 |
192.168.10.9 |
DSC1 |
5236 |
数据库实例 DSC1监听端口 |
9741 |
DCR 检查数据库实例监听端口 |
||||
9341 |
CSS 进程 TCP 连接端口 |
||||
9351 |
ASM 进程 TCP 连接的端口 |
||||
7236 |
ASM 的 MAL 系统 TCP 连接的端口 |
||||
9236 |
数据库实例的 MAL 系统 TCP 连接的端口 |
||||
dsc2 |
192.168.1.10 |
192.168.10.10 |
DSC2 |
5236 |
数据库实例DSC2监听端口 |
9741 |
DCR 检查数据库实例监听端口 |
||||
9341 |
CSS 进程 TCP 连接端口 |
||||
9351 |
ASM 进程 TCP 连接的端口 |
||||
7236 |
ASM 的 MAL 系统 TCP 连接的端口 |
||||
9236 |
数据库实例的 MAL 系统 TCP 连接的端口 |
二、集群环境部署操作实践
达梦DSC集群搭建涵盖:(1)2节点DMDSC(DMASM);(2)2节点DMDSC(裸设备);(3)单节点搭建。集群的节点数和搭建方式可根据实际情况做出选择。本次实践以2节点DSC(DMASM)为示例。
DMDSC集群的整个安装部署过程大致分为以下 5个大的步骤:
步骤1、共享磁盘的准备划分与访问路径绑定
在实际生产环境中,对于多FCSAN环境下的路径映射特别要注意路径绑定问题。
yum install udev #安装udev
systemctl restart systemd-udev-trigger.service
新建 udev 规则文件 vi /etc/udev/rules.d/90-raw.rules
ACTION=="add",KERNEL=="sdb",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add",KERNEL=="sdc",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add",KERNEL=="sdd",RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add",KERNEL=="sde",RUN+="/bin/raw /dev/raw/raw4 %N"
KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"
让配置生效:
/sbin/udevadm trigger --type=devices --action=change
执行start_udev,完成裸设备绑定。
注意:如果查看不到配置的裸设备,请重启服务器再验证。
可以通过blockdev –getsize64 /dev/raw/raw1命令查看裸设备大小。
步骤2、对共享磁盘进行创建和初始化
首先,编写dmdcr_cfg.ini配置文件,保存到/dm8/config/目录下面。后续DMASMCMD工具执行init语句会使用到。
节点 1 使用 dmdba 用户,配置 DCR 初始化配置文件:vi /dm8/config/dmdcr_cfg.ini
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw1
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 = 191.168.10.9
DCR_EP_PORT = 9341
[CSS]
DCR_EP_NAME = CSS2
DCR_EP_HOST = 192.168.10.10
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 = ASM1
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.10.9
DCR_EP_PORT = 9351
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.10.10
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 = 5236
DCR_CHECK_PORT = 9741
[DSC]
DCR_EP_NAME = DSC2
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
接下来,节点 1 的 dmdba 用户,bin目录下使用DMASMCMD工具创建和初始化。
[dmdba@dsc1 bin]$ ./dmasmcmd
DMASMCMD V8
ASM>create dcrdisk '/dev/raw/raw4' 'dcr'
[Trace]The ASM initialize dcrdisk /dev/raw/raw4 to name DMASMdcr
Used time: 7.767(ms).
ASM>create votedisk '/dev/raw/raw1' 'vote'
[Trace]The ASM initialize votedisk /dev/raw/raw1 to name DMASMvote
Used time: 5.824(ms).
ASM>create asmdisk '/dev/raw/raw3' 'LOG0'
[Trace]The ASM initialize asmdisk /dev/raw/raw3 to name DMASMLOG0
Used time: 8.349(ms).
ASM>create asmdisk '/dev/raw/raw2' 'DATA0'
[Trace]The ASM initialize asmdisk /dev/raw/raw2 to name DMASMDATA0
Used time: 7.902(ms).
ASM>init dcrdisk '/dev/raw/raw4' from '/dm8/config/dmdcr_cfg.ini' identified by '67890'
[Trace]DG 126 alloc one extent for inodes, addr(disk_id, disk_auno, extent_no):(0,0,1).
[Trace]DG 126 allocate 4 extents for file 0xfe000002.
[Trace]DG 126 alloc 4 extents for 0xfe000002, addr(disk_id, disk_auno, extent_no):(0, 0, 2)->(0, 0, 5), need_init = 1.
Used time: 153.371(ms).
ASM>init votedisk '/dev/raw/raw1' from '/dm8/config/dmdcr_cfg.ini'
[Trace]DG 125 alloc one extent for inodes, addr(disk_id, disk_auno, extent_no):(0,0,1).
[Trace]DG 125 allocate 4 extents for file 0xfd000002.
[Trace]DG 125 alloc 4 extents for 0xfd000002, addr(disk_id, disk_auno, extent_no):(0, 0, 2)->(0, 0, 5), need_init = 1.
Used time: 66.388(ms).
步骤3、集群CSS(dmdcr.ini)和ASM的MAL(dmasvrmal.ini)系统的配置与启动
3.1 集群CSS 的 DCR 启动配置文件(dmdcr.ini)
两个节点分别新建dmdcr.ini,保存到/dm8/config/目录下面。
两个节点的dmdcr.ini参数中,dmdcr_path 相同,dmdcr_seqo分别为0和1。
节点dsc1 vi /dm8/config/dmdcr.ini
DMDCR_PATH = /dev/raw/raw4
DMDCR_MAL_PATH =/dm8/config/dmasvrmal.ini ##dmasmsvr使用的MAL配置文件路径
DMDCR_SEQNO = 0
##ASM重启参数,命令行手动方式启动
DMDCR_ASM_RESTART_INTERVAL = 0 #集群启动验证成功后再配置为10 自动拉起
DMDCR_ASM_STARTUP_CMD = /dm8/dmdbms/bin/dmasmsvr dcr_ini=/dm8/config/dmdcr.ini
##DB重启参数,命令行手动方式启动
DMDCR_DB_RESTART_INTERVAL = 0 #集群启动验证成功后再配置为30 自动拉起
DMDCR_DB_STARTUP_CMD = /dm8/dmdbms/bin/dmserver path=/dm8/config/dsc1/dm.ini dcr_ini=/dm8/config/dmdcr.ini
节点dsc2 vi /dm8/config/dmdcr.ini
DMDCR_PATH = /dev/raw/raw4
DMDCR_MAL_PATH =/dm8/config/dmasvrmal.ini ##dmasmsvr使用的MAL配置文件路径
DMDCR_SEQNO = 1
##ASM重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0 #集群启动验证成功后再配置为10 自动拉起
DMDCR_ASM_STARTUP_CMD = /dm8/dmdbms/bin/dmasmsvr dcr_ini=/dm8/config/dmdcr.ini
##DB重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0 #集群启动验证成功后再配置为30 自动拉起
DMDCR_DB_STARTUP_CMD = /dm8/dmdbms/bin/dmserver path=/dm8/config/dsc2/dm.ini dcr_ini=/dm8/config/dmdcr.ini
3.2 ASM的MAL系统配置文件
准备DMASM的MAL配置文件(命名为dmasvrmal.ini),使用DMASM的所有节点都要配置,内容完全一样,保存到/dm8/config目录下。
vi /dm8/config/dmasvrmal.ini 2 个节点都需要配置,且文件内容相同
[MAL_INST1]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.10.9
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM2
MAL_HOST = 192.168.10.10
MAL_PORT = 7236
3.3 启动CSS、ASM服务程序
./dmcss DCR_INI=/dm8/config/dmdcr.ini
./dmasmsvr DCR_INI=/dm8/config/dmdcr.ini
dsc1
dsc2
出现 the ASM service is Ready 即表明启动成功。
3.4 创建数据文件磁盘组DMDATA和 日志磁盘组REDO
在ASM服务启动之后,可以使用dmasmtool创建磁盘组。
节点 1 使用 dmdba 用户启动 dmasmtool 工具。
./dmasmtool dcr_ini=/dm8/config/dmdcr.ini
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw2'
步骤4、初始化集群数据库并手动拉起集群库验证
在节点1,新建 dminit.ini 文件,保存到/dm8/config/目录。
vi /dm8/config/dminit.ini
SYSDBA_PWD=1234567890
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
log_size = 256
dcr_path = /dev/raw/raw4 ##dcr磁盘路径
dcr_seqno = 0
auto_overwrite = 1
[DSC1] ##inst_name跟dmdcr_cfg.ini中DB类型group中DCR_EP_NAME对应
config_path = /dm8/config/dsc1
port_num = 5236
mal_host = 192.168.10.9
mal_port = 9236
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
[DSC2] ##inst_name跟dmdcr_cfg.ini中DB类型group中DCR_EP_NAME对应
config_path = /dm8/config/dsc2
port_num = 5236
mal_host = 191.168.10.10
mal_port = 9236
log_path = +DMLOG/log/dsc2_log01.log
log_path = +DMLOG/log/dsc2_log02.log
接下来,就可以使用dminit初始化DB环境。任意选择一个节点,启动dminit工具初始化数据库实例。
4.1初始化DB
./dminit control=/dm8/config/dminit.ini
初始化完成后,会在 init 控制文件配置的目录下生成dsc1/dsc2 这2个实例的配置文件。
将 dsc2 目录复制到节点 2 上对应的目录/dm8/config/。
scp -r dsc2 192.168.1.10:/dm8/config/
4.2手动拉起各节点的DB实例
节点1手动拉起数据库实例:
./dmserver /dm8/config/dsc1_config/dm.ini dcr_ini=/dm8/config/dmdcr.ini
节点2手动拉起数据库实例:
./dmserver /dm8/config/dsc2_config/dm.ini dcr_ini=/dm8/config/dmdcr.ini
成功拉起后,初步完成DMDSC集群搭建。
最后,可登录disql,查询验证集群和各节点信息。
步骤5、注册css服务及配置集群监视器
在确认配置正常后需要注册为系统服务,方便启动和关闭集群以及实现开机自动启动。
首先,修改2个节点的 /dm8/config/dmdcr.ini 文件,将DMDCR_ASM_RESTART_INTERVAL = 0 的值修改为10;DMDCR_DB_RESTART_INTERVAL = 30 。 INTERVA 值可以自定,可参考手册。
接着,用root用户到数据库安装目录的 script/root 目录执行dm_service_installer.sh 脚本来注册css服务。2 个节点都需要注册。
节点1 :
./dm_service_installer.sh -t dmcss -p css1 -dcr_ini /dm8/config/dmdcr.ini
节点2 :
./dm_service_installer.sh -t dmcss -p css2 -dcr_ini /dm8/config/dmdcr.ini
关闭前台启动的 css,以服务方式启动 css。
节点 1 执行以下命令:
systemctl start DmCSSServicecss1
节点 2 执行以下命令:
systemctl start DmCSSServicecss2
最后,配置监视器查看验证集群状态。
任意节点新建监视器配置文件,执行以下命令:
vi /dm8/dmcssm.ini #添加以下内容:
CSSM_OGUID = 63635 #和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致。
#配置所有 CSS 的连接信息,和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致。
CSSM_CSS_IP = 192.168.10.9:9341
CSSM_CSS_IP = 192.168.10.10:9341
CSSM_LOG_PATH =/dm8/dmdbms/log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 256 #每个日志文件最大 1024 MB
CSSM_LOG_SPACE_LIMIT = 256 #不限定日志文件总占用空间
dmdba 用户执行启动监视器:
./dmcssm ini_path=/dm8/config/dmcssm.ini
输入 show 命令,查看 css、asm 和 db 的状态。
以 db 为例,inst_status 字段为 OPEN,vtd_status 字段为 WORKING,active 字段为 TRUE 说明 db 服务正常。
步骤6、客户端验证
任意节点配置 dm_svc.conf 文件,执行以下命令:
vi /etc/dm_svc.conf,添加以下内容:
dmdsc=(192.168.1.9:5236,192.168.1.10:5236)
使用 disql 工具登录集群(数据库安装目录的 bin 下):
./disql SYSDBA/SYSDBA@dmdsc
查询视图 v$dsc_ep_info,查看集群状态,执行以下命令:
select * from v$dsc_ep_info;
6.1验证故障自动重连
以上 disql 连接不断开的情况下(连接的是节点 1 实例),关闭节点 1 服务器,再次查询。
6.2故障节点重新加入
启动节点 1 服务器后,再次查询。
此外,对于生产环境来说,开归档、配置服务名(DM_SVC.CONF)以及做好数据的备份规划配置是非常有必要的。
三、部署小结
本文首先介绍了达梦数据库DSC集群安装前的部署规划相关工作;然后,进行了DSC集群的安装部署操作实践,整个安装部署大体上分为 共享磁盘的准备划分与访问路径绑定、对共享磁盘进行创建和初始化、集群CSS和ASM MAL系统的配置与启动、初始化集群数据库并手动拉起集群库验证、注册css服务及配置集群监视器这5个大的阶段步骤。以及最后的客户端数据验证部分。本文的最后,简要介绍了集群管理相关内容和客户端连接DMDSC集群相关内容供大家学习过程中的练习参考。
以上就是本文技术分享的全部内容,欢迎交流指导。
附:
1、集群启停管理操作
关闭数据库:监视器中执行 ep stop dsc
关闭 asm:监视器中执行 ep stop asm
关闭 css:各节点关闭各自的 css 服务 systemctl stop DmCSSServicecss1/DmCSSServicecss2
启动 css: 各节点启动各自的 css 服务 systemctl start DmCSSServicecss1/DmCSSServicecss2
启动 asm:配置了自动拉起,等待 asm 自动启动。
启动数据库:配置了自动拉起,等待数据库自动启动。
2、归档配置
生产环境必须开启归档日志,且必须限制归档日志保留量,限制方法:
设置归档空间大小限制即指定 SPACE_LIMIT 参数(单位是 MB)。
定期删除归档日志(设置定时作业)。
共享存储集群归档需要配置本地归档和远程归档(保证每个节点都有所有归档日志)。
实例 dsc1 上配置,执行以下命令:
alter database mount;
alter database archivelog;
alter database add archivelog 'DEST=/dmarch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=102400';
alter database add archivelog 'DEST=dsc2, TYPE=REMOTE, FILE_SIZE=1024, SPACE_LIMIT=102400, INCOMING_PATH=/remote_arch';
alter database open;
实例 dsc2 上配置,执行以下命令:
alter database mount;
alter database archivelog;
alter database add archivelog 'DEST=/dmarch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=102400';
alter database add archivelog 'DEST=dsc1, TYPE=REMOTE, FILE_SIZE=1024, SPACE_LIMIT=102400, INCOMING_PATH=/remote_arch';
alter database open;
3、客户端连接集群
客户端主机上需要配置 dm_svc.conf 文件(未安装 DM 数据库的机器新建即可),文件路径:
32 位的 DM 安装在 Win32 操作平台下,此文件位于 %SystemRoot%\system32 目录;
64 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\system32 目录;
32 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\SysWOW64 目录;
在 Linux 平台下,此文件位于/etc 目录。
文件内容:
以#开头的行表示是注释
# 全局配置区
DMDSC=(192.168.1.9:5236,192.168.1.10:5236)
TIME_ZONE=(+480) #表示+8:00 时区
LOGIN_ENCRYPT=(0)
DIRECT=(Y)
# 服务配置区
[DMDSC]
CLUSTER=(DSC) #表示集群为 DSC 集群
EP_SELECTOR=(1) #表示第一节点正常时只连第一个节点
AUTO_RECONNECT=(2)#第一个节点故障恢复后自动重连第一个节点
SWITCH_TIME=(3) #在服务器之间切换的次数
SWITCH_INTERVAL=(10) #在服务器之间切换的时间间隔,单位为毫秒
客户端程序连接数据库时,需要指定 IP 端口处替换为服务名即可,例如:
disql SYSDBA/SYSDBA@DMDSC
达梦技术社区:https://eco.dameng.com