(8)达梦DMDSC共享存储数据库集群 环境部署实践

在上一篇博客里面我们对达梦数据库的达梦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,完成裸设备绑定。

(8)达梦DMDSC共享存储数据库集群 环境部署实践_第1张图片

 注意:如果查看不到配置的裸设备,请重启服务器再验证。

可以通过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工具创建和初始化。

  • 创建 ASM 磁盘
[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).

  • 初始化 dcrdisk 和 votedisk
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服务程序

  • 节点1/2 分别启动dmcss

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

(8)达梦DMDSC共享存储数据库集群 环境部署实践_第2张图片

  • 节点1/2 分别启动DMASM服务程序。

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

dsc1

(8)达梦DMDSC共享存储数据库集群 环境部署实践_第3张图片

dsc2

(8)达梦DMDSC共享存储数据库集群 环境部署实践_第4张图片

出现 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'

(8)达梦DMDSC共享存储数据库集群 环境部署实践_第5张图片

 步骤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集群搭建。

(8)达梦DMDSC共享存储数据库集群 环境部署实践_第6张图片

 最后,可登录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

(8)达梦DMDSC共享存储数据库集群 环境部署实践_第7张图片

(8)达梦DMDSC共享存储数据库集群 环境部署实践_第8张图片

最后,配置监视器查看验证集群状态。

任意节点新建监视器配置文件,执行以下命令:

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 的状态。

(8)达梦DMDSC共享存储数据库集群 环境部署实践_第9张图片

以 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;

(8)达梦DMDSC共享存储数据库集群 环境部署实践_第10张图片

6.1验证故障自动重连

以上 disql 连接不断开的情况下(连接的是节点 1 实例),关闭节点 1 服务器,再次查询。

(8)达梦DMDSC共享存储数据库集群 环境部署实践_第11张图片

(8)达梦DMDSC共享存储数据库集群 环境部署实践_第12张图片

6.2故障节点重新加入

启动节点 1 服务器后,再次查询。

(8)达梦DMDSC共享存储数据库集群 环境部署实践_第13张图片

此外,对于生产环境来说,开归档、配置服务名(DM_SVC.CONF)以及做好数据的备份规划配置是非常有必要的。 

三、部署小结

本文首先介绍了达梦数据库DSC集群安装前的部署规划相关工作;然后,进行了DSC集群的安装部署操作实践,整个安装部署大体上分为 共享磁盘的准备划分与访问路径绑定、对共享磁盘进行创建和初始化、集群CSS和ASM  MAL系统的配置与启动、初始化集群数据库并手动拉起集群库验证、注册css服务及配置集群监视器这5个大的阶段步骤。以及最后的客户端数据验证部分。本文的最后,简要介绍了集群管理相关内容和客户端连接DMDSC集群相关内容供大家学习过程中的练习参考。

以上就是本文技术分享的全部内容,欢迎交流指导。

附:

1、集群启停管理操作

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

(8)达梦DMDSC共享存储数据库集群 环境部署实践_第14张图片

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

(8)达梦DMDSC共享存储数据库集群 环境部署实践_第15张图片

关闭 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

你可能感兴趣的:(数据库,linux,database)