注册
DMDSC原理与实现
专栏/培训园地/ 文章详情 /

DMDSC原理与实现

DM_sms 2024/03/13 678 0 0
摘要

一、DMDSC原理

特点:高可用性、高性能、负载均衡
DM DSC集群可以自动处理节点故障及故障切换,不影响对外正常服务,保证系统的高可用性。
集群主要由以下部分组成:

1.1 数据库和数据库实例

1.2 共享存储

可以实现多实例同时访问、修改数据,要求将数据文件、控制文件、日志文件保存在共享存储上。 DMDSC支持使用裸设备或DMASM文件系统作为共享存储。
(1)共享存储最少挂四个盘,即:
voting disk:进程的通知,故障转移。
dcr disk:集群的配置信息,故障信息。
Group log:日志盘,最小不少于4G,否则会引起后面启动报错。
Group data:数据文件盘。
(2)DMASM是一个专用的分布式文件系统,可向用户提供更加便捷的DSC集群数据库文件管理方案,以下主要通过其部件来说明DMASM的功能特点:
DMASM磁盘与文件管理:DMASM文件系统将物理磁盘格式化后,变成可识别、可管理的 DMASM 磁盘,再通过DMASM 磁盘组将一个或者多个 DMASM 磁盘整合成一个整体提供文件服务。
dmasmsvr服务器:提供DMASM服务,启动时会扫描/dev/raw路径下的所有裸设备,构建DMASM磁盘组和DMASM文件系统,实例间通过MAL系统进行信息和数据传递。
dmasmapi接口:用户可以通过调用DMASMAPI接口,访问、操作DMASM文件。
dmasmcmd初始化工具:DMASM文件系统初始化工具,用于格式化裸设备为DMASM磁盘,并初始化DCR Disk和Voting Disk。
dmasmtool管理工具:提供了一套linux文件操作命令,用于管理DMASM文件。

1.3 本地存储

用来保存配置文件,包括记录数据库实例的配置信息文件,本地归档日志、远程归档日志。

1.4 通信网络

分为内部网络和外部网络,内部网络如MAL链路,用于数据库实例之间交换信息和数据,以及网络心跳检测等用途。公共网络则用于对外提供数据库服务。

1.5 集群控制软件DMCSS

定时从被监控对象voting disk读取被监控对象的信息,检查被监控对象的状态变化,启动相应处理流程。

二、DMDSC实现(2节点基于DMASM)

写在前面:
1.要关闭防火墙;
2.若在配置过程中出现文件开启失败的提示,在确认该路径下文件确实存在时,很有可能就是文件权限不对,建议使用dmdba权限进行操作,否则配置过程中会出现很多问题;
3.若启动dmcss和dmasmsvr失败,在确认配置文件无误时,重启服务器即可。

2.1 环境准备

在VMware中创建共享磁盘
操作系统:2台麒麟10操作系统
共享磁盘:20G,具体分配如下:

操作系统 机器名 内存 本地磁盘 共享磁盘 IP 数据库安装路径 配置文件路径
Kylin10 DSC0 2G 30G 20G 192.168.118.139 /dm8 /home/DSC
Kylin10 DSC2 2G 30G 20G 192.168.118.138 /dm8 /home/DSC

2.2 共享磁盘裸设备分区与绑定(在root命令下)

查看共享磁盘:
image.png
对共享磁盘/dev/sdb进行分区,具体分区如下:

磁盘 空间
voting disk 100M
dcr disk 100M
Group log 4G
Group data 15.8G
以下创建了第一个分区,大小为100M,之后的分区与之相似。
image.png
依次创建四个分区,分区完成后需要输入w保存:
image.png
在两节点上编辑/etc/udev/rules.d/60-raw.rules文件。
vim /etc/udev/rules.d/60-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" ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dmdba", MODE="660" ##在两节点上分别执行partprobe /dev/sdb,通知系统分区表的变化 [root@localhost raw]# partprobe /dev/sdb ##执行裸设备绑定 [root@localhost raw]# udevadm trigger --action=add ##最后检查裸设备绑定是否成功: [root@localhost raw]# ll /dev/raw/raw*

image.png

注意:
执行裸设备绑定时:一般执行 start_udev,但由于 Linux 系统版本不同,裸设备绑定命令也有所不同,还可使用以下命令进行裸设备绑定:

[root@localhost raw]# /sbin/udevadm trigger --type=devices --action=change --或者 [root@localhost raw]# /sbin/udevadm control --reload --或者 [root@localhost raw]# udevadm trigger --action=add

2.3 配置dmdcr_cfg.ini文件(在DSC0上配置)

DCR_N_GRP = 3 DCR_VTD_PATH = /dev/raw/raw2 DCR_OGUID = 63635 [GRP] DCR_GRP_TYPE = CSS DCR_GRP_NAME = GRP_CSS DCR_GRP_N_EP = 2 DCR_GRP_DSKCHK_CNT = 60 [GRP_CSS] DCR_EP_NAME = CSS0 DCR_EP_HOST = 192.168.118.139 DCR_EP_PORT = 9341 [GRP_CSS] DCR_EP_NAME = CSS1 DCR_EP_HOST = 192.168.118.138 DCR_EP_PORT = 9343 [GRP] DCR_GRP_TYPE = ASM DCR_GRP_NAME = GRP_ASM DCR_GRP_N_EP = 2 DCR_GRP_DSKCHK_CNT = 60 [GRP_ASM] DCR_EP_NAME = ASM0 DCR_EP_SHM_KEY = 93360 DCR_EP_SHM_SIZE = 20 DCR_EP_HOST = 192.168.118.139 DCR_EP_PORT = 9349 DCR_EP_ASM_LOAD_PATH = /dev/raw [GRP_ASM] DCR_EP_NAME = ASM1 DCR_EP_SHM_KEY = 93361 DCR_EP_SHM_SIZE = 20 DCR_EP_HOST = 192.168.118.138 DCR_EP_PORT = 9351 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 = 60 [GRP_DSC] DCR_EP_NAME = DSC0 DCR_EP_SEQNO = 0 DCR_EP_PORT = 5236 DCR_CHECK_PORT = 9741 [GRP_DSC] DCR_EP_NAME = DSC1 DCR_EP_SEQNO = 1 DCR_EP_PORT = 5237 DCR_CHECK_PORT = 9742

2.4 使用DMASMCMD工具初始化(在DSC0节点上操作)

image.png

image.png

image.png

2.5 配置dmasvermal.ini文件(两节点都需配置)

两节点的配置内容一致。

[MAL_INST1] MAL_INST_NAME = ASM0 MAL_HOST = 192.168.118.139 MAL_PORT = 7236 [MAL_INST2] MAL_INST_NAME = ASM1 MAL_HOST = 192.168.118.138 MAL_PORT = 7236

2.6 准备dmdcr.ini配置文件(两节点都需配置)

两节点的dmdcr_seqo分别为0和1,其他内容一致。

##DSC0: DMDCR_PATH = /dev/raw/raw1 DMDCR_MAL_PATH = /home/DSC/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径 DMDCR_SEQNO = 0 #ASM 重启参数,命令行方式启动 DMDCR_ASM_RESTART_INTERVAL = 0 DMDCR_ASM_STARTUP_CMD = /dm8/bin/dmasmsvr dcr_ini=/home/DSC/dmdcr.ini #DB重启参数,命令行方式启动 DMDCR_DB_RESTART_INTERVAL = 0 DMDCR_DB_STARTUP_CMD = /dm8/bin/dmasmsvr path=path=/dm8/data/DAMENG/dm.ini dcr_ini=/home/DSC/dmdcr.ini ##DSC1: DMDCR_PATH = /dev/raw/raw1 DMDCR_MAL_PATH = /home/DSC/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径 DMDCR_SEQNO = 1 #ASM 重启参数,命令行方式启动 DMDCR_ASM_RESTART_INTERVAL = 0 DMDCR_ASM_STARTUP_CMD = /dm8/bin/dmasmsvr dcr_ini=/home/DSC/dmdcr.ini #DB重启参数,命令行方式启动 DMDCR_DB_RESTART_INTERVAL = 0 DMDCR_DB_STARTUP_CMD = /dm8/bin/dmasmsvr path=path=/dm8/data/DAMENG/dm.ini dcr_ini=/home/DSC/dmdcr.ini**

2.7 在DSC0和DSC1先后启动DMCSS、DMASM服务程序

[dmdba@localhost bin]$ ./dmcss DCR_INI=/home/DSC/dmdcr.ini [dmdba@localhost bin]$ ./dmasmsvr DCR_INI=/home/DSC/dmdcr.ini

两节点都启动后,显示如下:
image.png

2.8 使用dmasmtool工具创建DMASM磁盘组

[dmdba@localhost bin]$./dmasmtool DCR_INI=/home/dmdba/dmdbms/data/dsc/dmdcr.ini create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'   create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'

2.9 配置dminit.ini文件,将其配置在/home/DSC目录下

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/raw1 #dcr 磁盘路径,目前不支持 asm,只能是裸设备 dcr_seqno = 0 auto_overwrite = 1 [DSC0] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应 config_path = /home/DSC/dsc0_config port_num = 5236 mal_host = 192.168.118.139 mal_port = 9340 log_path = +DMLOG/log/dsc0_log01.log log_path = +DMLOG/log/dsc0_log02.log [DSC1] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应 config_path = /home/DSC/dsc1_config port_num = 5237 mal_host = 192.168.118.138 mal_port = 9341 log_path = +DMLOG/log/dsc1_log01.log log_path = +DMLOG/log/dsc1_log02.log

2.10 使用dminit初始化DB环境

[dmdba@localhost bin]$ ./dminit control=/home/DSC/dminit.ini

image.png

在/home/DSC目录下得到两个文件夹,将dsc1_config文件夹发送到DSC1的相同目录下。
image.png

2.11 启动数据库服务器

##DSC0: [dmdba@localhost bin]$./dmserver /home/DSC/dsc0_config/dm.ini dcr_ini=/home/DSC/dmdcr.ini ##DSC1: [dmdba@localhost bin]$./dmserver /home/DSC/dsc1_config/dm.ini dcr_ini=/home/DSC/dmdcr.ini

2.12 搭建监视器,监视DCS集群的运行状况

##配置dmcssm.ini CSSM_OGUID = 63635 #配置所有 CSS 的连接信息, #和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致 CSSM_CSS_IP = 192.168.118.139:9341 CSSM_CSS_IP = 192.168.118.138:9343 CSSM_LOG_PATH =../log #监视器日志文件存放路径 CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大 32M CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间 ##启动监视器: [dmdba@localhost bin]$ ./dmcssm INI_PATH=/home/DSC/dmcssm.ini

image.png

三、DMDSC启动与关闭流程

启动:DMCSS→DMASMSVR→dmserver ,均要在每个节点操作。
关闭:dmserver→DMASMSVR→DMCSS
先关闭 dmserver,再依次关闭 DMASMSVR 和 DMCSS。
DMASMSVR 和 dmserver 控制台执行 exit 命令,会通知所有其他节点一起退出;
DMCSS没有同步功能,需要手动退出所有节点。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服