信创 | 达梦共享存储集群


外向笑小鸭子
外向笑小鸭子 2024-01-12 12:01:52 51875 赞同 0 反对 0
分类: 资源 标签: 运维
信创 | 达梦共享存储集群

近年来,在“国产替代”、“安全发展”的战略推动下,我国信创产业发展迅速。操作系统和数据库管理软件作为IT行业的核心基础软件,也是信创产业的核心环节,在信息系统的软件和硬件之间起到承上启下的作用。基于此,云毅推出信创专栏,对信创操作系统与信创数据库进行调研和分享,赋能金融机构信创化管理升级增效。

 

引言

产线系统一般对业务的连续性要求较高,而单实例数据库存在单点故障风险。达梦数据库提供了共享存储数据库集群,允许多个数据库实例同时访问、操作同一数据库,具有高可用、高性能、负载均衡等特性。支持故障自动切换和故障自动重加入,某一个数据库实例故障后,不会导致数据库服务无法提供。

01

 

 

 

共享存储集群架构

 

 

 

一、架构原理

达梦共享存储数据库集群的英文全称 DM Data Shared Cluster,简称 DMDSC。

DMDSC集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。数据文件、控制文件在集群系统中只有一份,保存在共享存储上,每个实例节点平等地使用这些文件。每个节点有自己独立的联机日志和归档日志,其中联机日志保存在共享存储上,归档日志可以保存在本地存储上也可以保存在共享存储上。

图片

DMDSC 集群主要由数据库和数据库实例、共享存储、本地存储、通信网络、以及集群控制软件 DMCSS 组成。

图片

二、集群特点

达梦共享存储集群主要有以下特点:

高可用性

高吞吐量

负载均衡

高可用性

达梦共享存储集群提供了数据库实例的高可用,当其中一个实例节点出现故障时,DMCSS 检测故障、并自动将故障节点踢出集群,保证数据库服务的正常。原故障节点连接的用户会自动切换到正常的实例节点,这些连接上的未提交事务将被回滚,已提交事务不受影响。

高吞吐量

集群中包含多个数据库实例,数据库实例访问独立的处理器、内存,数据库实例之间通过缓存交换技术提升共享数据的访问速度,每个数据库实例都可以接收并处理用户的各种数据库请求。

与单节点数据库管理系统相比,DMDSC 集群可以充分利用多台物理机器的处理能力,支撑更多的用户连接请求,提供更高的吞吐量。

负载均衡

用户通过配置达梦数据库连接服务名来访问 DMDSC 集群,可以实现节点间的自动负载均衡,用户的数据库连接请求会被自动、平均地分配到 DMDSC 集群中的各个节点。并且连接服务名支持 JDBC、DPI、ODBC、DCI、.Net Provider 等各种数据库接口。

02

 

 

 

集群搭建

 

 

 

一、安装前准备

1.1 环境信息

图片

两台机器上提前安装好DM8数据库软件

1.2 共享磁盘规划

DMDSC 集群为了实现多实例同时访问和修改数据,需要数据文件、控制文件和日志文件都放到共享存储上。DM 支持两种共享存储,裸设备和 DMASM,裸设备是未经过格式化的特殊字符设备,推荐使用 DMASM 共享存储。

 

其中,VOTE 是表决磁盘,一个集群一个表决磁盘。DCR 是 DM 集群注册表的简称,用于存储、维护集群配置的详细信息,一个集群一个注册表。

图片

二、集群搭建

2.1 配置 dmdcr_cfg.ini

只需要在一个节点配置

在 db01 机器上配置:

[dmdba@db01 ~]$ mkdir /dm8/dsc_config

[dmdba@db01 ~]$ vim   /dm8/dsc_config/dmdcr_cfg.ini

DCR_N_GRP                = 3   #集群环境有多少个 GROUP,范围:1~16

DCR_VTD_PATH            = /dev/dm/asm-dmvote #规划为 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            =   10.10.100.11   #心跳地址

    DCR_EP_PORT            =   11286   #CSS 端口

[GRP_CSS]

    DCR_EP_NAME            = CSS1

    DCR_EP_HOST            =   10.10.100.12

    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            =   10.10.100.11  #心跳地址

    DCR_EP_PORT            =   11276  #ASM 端口

    DCR_EP_ASM_LOAD_PATH  = /dev/dm

[GRP_ASM]

    DCR_EP_NAME            = ASM1

    DCR_EP_SHM_KEY         = 42425

    DCR_EP_SHM_SIZE        = 1024

    DCR_EP_HOST            =   10.10.100.12

    DCR_EP_PORT            = 11277

    DCR_EP_ASM_LOAD_PATH  = /dev/dm

 

[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         = 11257

2.2 初始化磁盘组

只需要在一个节点上配置

db01机器上配置:

[dmdba@db01 ~]$ dmasmcmd

DMASMCMD V8

ASM>create dcrdisk '/dev/dm/asm-dmdcr'   'dcr'

ASM>create votedisk   '/dev/dm/asm-dmvote' 'vote'   

ASM>init dcrdisk '/dev/dm/asm-dmdcr'   from '/dm8/dsc_config/dmdcr_cfg.ini' identified by 'xxxxxx'

ASM>init votedisk '/dev/dm/asm-dmvote'   from '/dm8/dsc_config/dmdcr_cfg.ini'

ASM>create asmdisk '/dev/dm/asm-dmdata'   'DATA0'

ASM>create asmdisk   '/dev/dm/asm-dmarch' 'ARCH0'

2.3 配置 dmasvrmal.ini

db01机器上配置:

[dmdba@db01 ~]$ vim   /dm8/dsc_config/dmasvrmal.ini

[MAL_INST0]

MAL_INST_NAME            = ASM0

MAL_HOST                  = 10.10.100.11  #心跳地址

MAL_PORT                  = 11266         #MAL 监听端口

[MAL_INST1]

MAL_INST_NAME            = ASM1

MAL_HOST                  = 10.10.100.12

MAL_PORT                  = 11266

db02机器上配置:

[dmdba@db02 ~]$ vim   /dm8/dsc_config/dmasvrmal.ini

[MAL_INST0]

MAL_INST_NAME            = ASM0

MAL_HOST                  = 10.10.100.11  #心跳地址

MAL_PORT                  = 11266          #MAL 监听端口

[MAL_INST1]

MAL_INST_NAME            = ASM1

MAL_HOST                  = 10.10.100.12

MAL_PORT                  = 11266

2.4 配置 dmdcr.ini 文件

db01机器上配置:

[dmdba@db01 ~]$ vim   /dm8/dsc_config/dmdcr.ini

DMDCR_PATH                   = /dev/dm/asm-dmdcr

DMDCR_MAL_PATH               =   /dm8/dsc_config/dmasvrmal.ini

DMDCR_SEQNO                  = 0

DMDCR_AUTO_OPEN_CHECK        = 111

DMDCR_ASM_TRACE_LEVEL        = 2

db02机器上配置:

[dmdba@db02 ~]$ vim /dm8/dsc_config/dmdcr.ini

DMDCR_PATH                   = /dev/dm/asm-dmdcr

DMDCR_MAL_PATH               = /dm8/dsc_config/dmasvrmal.ini

DMDCR_SEQNO                  = 1

DMDCR_AUTO_OPEN_CHECK        = 111

DMDCR_ASM_TRACE_LEVEL        = 2

2.5 启动 DMCSS和DMASM 服务

db01和db02机器上分别启动DMCSS服务:

[dmdba@db01~]$ /dm8/bin/dmcss DCR_INI=/dm8/dsc_config/dmdcr.ini

[dmdba@db02~]$ /dm8/bin/dmcss DCR_INI=/dm8/dsc_config/dmdcr.ini 

db01和db02机器上分别启动DMASM服务:

[dmdba@db01 ~]$ /dm8/bin/dmasmsvr   DCR_INI=/dm8/dsc_config/dmdcr.ini

[dmdba@db02 ~]$ /dm8/bin/dmasmsvr   DCR_INI=/dm8/dsc_config/dmdcr.ini

2.6 创建 DMASM 磁盘组

只需要在一个机器上操作

db01机器上配置:

[dmdba@db01 ~]$ /dm8/bin/dmasmtool   DCR_INI=/dm8/dsc_config/dmdcr.ini

DMASMTOOL V8

ASM>create diskgroup 'DMDATA' asmdisk   '/dev/dm/asm-dmdata'

ASM>create diskgroup 'DMARCH' asmdisk   '/dev/dm/asm-dmarch'

2.7 初始化 DB 环境

只需要在一个节点操作

2.7.1 配置dminit.ini文件

db01机器上配置:

[dmdba@db01 ~]$ vim /dm8/dsc_config/dminit.ini

DB_NAME                  = DSC

SYSDBA_PWD               = SYSDBA_123

SYSTEM_PATH              = +DMDATA/data

SYSTEM                   = +DMDATA/data/SYSTEM.dbf

SYSTEM_SIZE              = 1024

ROLL                     = +DMDATA/data/ROLL.dbf

ROLL_SIZE                = 10000

MAIN                     = +DMDATA/data/MAIN.dbf

MAIN_SIZE                = 1024

CTL_PATH                 = +DMDATA/data/dm.ctl

CTL_SIZE                 = 8

LOG_SIZE                 = 2048

DCR_PATH                 = /dev/dm/asm-dmdcr

DCR_SEQNO                = 0

AUTO_OVERWRITE           = 1

PAGE_SIZE                = 32

EXTENT_SIZE              = 16

BLANK_PAD_MODE           = 1

 

[DSC0]

CONFIG_PATH              = /dm8/dsc_config/DSC0

PORT_NUM                 = 5236

MAL_HOST                 = 10.10.100.11

MAL_PORT                 = 11246

LOG_PATH                 = +DMDATA/DSC0_LOG01.log

LOG_PATH                 = +DMDATA/DSC0_LOG02.log

[DSC1]

CONFIG_PATH              = /dm8/dsc_config/DSC1

PORT_NUM                 = 5236

MAL_HOST                 = 10.10.100.12

MAL_PORT                 = 11246

LOG_PATH                 = +DMDATA/DSC1_LOG01.log

LOG_PATH                 = +DMDATA/DSC1_LOG02.log

2.7.2 执行DB初始化命令

db01机器上执行:

[dmdba@db01 ~]$ /dm8/bin/dminit control=/dm8/dsc_config/dminit.ini

2.7.3 拷贝配置文件到db02机器

拷贝上面生成的配置文件

/dm8/dsc_config/DSC1到db02机器。

db01机器上执行:

[dmdba@db01 ~]$ scp -rp /dm8/dsc_config/DSC1 192.168.203.145:/dm8/dsc_config/

2.8 配置 dmarch.ini 文件

db01机器上配置:

[dmdba@db01 ~]$ vim   /dm8/dsc_config/DSC0/dm.ini

ARCH_INI                        = 1

 

[dmdba@db01 ~]$ vim   /dm8/dsc_config/DSC0/dmarch.ini

ARCH_WAIT_APPLY = 0

ARCH_LOCAL_SHARE = 1

ARCH_LOCAL_SHARE_CHECK=0

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = +DMARCH/DSC0

ARCH_FILE_SIZE = 2048

ARCH_SPACE_LIMIT = 102400

[ARCHIVE_REMOTE1]

ARCH_TYPE = REMOTE

ARCH_DEST = DSC1

ARCH_INCOMING_PATH = +DMARCH/DSC1

ARCH_FILE_SIZE = 2048

ARCH_SPACE_LIMIT = 102400

db02机器上配置:

[dmdba@db02 ~]$ vim   /dm8/dsc_config/DSC1/dm.ini

ARCH_INI                        = 1

 

[dmdba@db02 ~]$ vim   /dm8/dsc_config/DSC1/dmarch.ini

ARCH_WAIT_APPLY = 0

ARCH_LOCAL_SHARE = 1

ARCH_LOCAL_SHARE_CHECK=0

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = +DMARCH/DSC1

ARCH_FILE_SIZE = 2048

ARCH_SPACE_LIMIT = 102400

[ARCHIVE_REMOTE1]

ARCH_TYPE = REMOTE

ARCH_DEST = DSC0

ARCH_INCOMING_PATH = +DMARCH/DSC0

ARCH_FILE_SIZE = 2048

ARCH_SPACE_LIMIT = 102400

2.9 启动数据库服务

db01机器上执行:

[dmdba@db01 ~]$ /dm8/bin/dmserver /dm8/dsc_config/DSC0/dm.ini dcr_ini=/dm8/dsc_config/dmdcr.ini

db02机器上执行:

[dmdba@db02 ~]$ /dm8/bin/dmserver   /dm8/dsc_config/DSC1/dm.ini dcr_ini=/dm8/dsc_config/dmdcr.ini

2.10注册CSS、ASM、DMSERVER 后台服务

db01机器上执行:

[root@db01 ~]# /dm8/script/root/dm_service_installer.sh -t dmcss -dcr_ini /dm8/dsc_config/dmdcr.ini -p CSS

 

[root@db01 ~]# /dm8/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /dm8/dsc_config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM

 

[root@db01 ~]# /dm8/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm8/dsc_config/DSC0/dm.ini -dcr_ini /dm8/dsc_config/dmdcr.ini -y DmASMSvrServiceASM.service -m open -p DSC

db02机器上执行:

[root@db02 ~]#   /dm8/script/root/dm_service_installer.sh -t dmcss -dcr_ini   /dm8/dsc_config/dmdcr.ini -p CSS

 

[root@db02 ~]#   /dm8/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini   /dm8/dsc_config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM

 

[root@db02 ~]#   /dm8/script/root/dm_service_installer.sh -t dmserver -dm_ini   /dm8/dsc_config/DSC1/dm.ini -dcr_ini /dm8/dsc_config/dmdcr.ini -y   DmASMSvrServiceASM.service -m open -p DSC

2.11 通过服务启动集群

前面的启动命令都是通过前台命令临时启动的,会话窗口关闭后服务也自动终止了。正式启动集群需要通过服务方式启动集群,为了使集群启动更简便,可以配置数据库服务以及ASM服务跟随CSS服务自动启动。

2.11.1 配置数据库服务和ASM服务自启动

db01机器上配置:

[dmdba@db01 ~]$ vim /dm8/dsc_config/dmdcr.ini

DMDCR_PATH                   = /dev/dm/asm-dmdcr

DMDCR_MAL_PATH               = /dm8/dsc_config/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        = /dm8/bin/DmASMSvrServiceASM start

DMDCR_DB_RESTART_INTERVAL    = 60  ##CSS认定DSC故障重启的时间,设置为0不自动拉起

DMDCR_DB_STARTUP_CMD         = /dm8/bin/DmServiceDSC start

db02机器上配置:

[dmdba@db02 ~]$ vim /dm8/dsc_config/dmdcr.ini

DMDCR_PATH                   = /dev/dm/asm-dmdcr

DMDCR_MAL_PATH               = /dm8/dsc_config/dmasvrmal.ini

DMDCR_SEQNO                  = 1

DMDCR_AUTO_OPEN_CHECK        = 111

DMDCR_ASM_TRACE_LEVEL        = 2

 

DMDCR_ASM_RESTART_INTERVAL   = 60

DMDCR_ASM_STARTUP_CMD       = /dm8/bin/DmASMSvrServiceASM start

DMDCR_DB_RESTART_INTERVAL    = 60  

DMDCR_DB_STARTUP_CMD        = /dm8/bin/DmServiceDSC start

2.11.2 启动集群

db01和db02机器上依次执行:

[dmdba@db01 ~]$ /dm8/bin/DmCSSServiceCSS start

[dmdba@db02 ~]$ /dm8/bin/DmCSSServiceCSS start

检查集群状态:

[dmdba@db01 ~]$ disql SYSDBA/xxxxxx

 

服务器[LOCALHOST:5236]:处于普通打开状态

登录使用时间 : 106.203(ms)

disql V8

SQL> select * from V$dsc_ep_info;

 

行号     EP_NAME EP_SEQNO    EP_GUID              EP_TIMESTAMP         EP_MODE      EP_STATUS

---------- ------- ----------- -------------------- --------------------   ------------ ---------

1            DSC0    0           3520257              3529090              Control Node OK

2            DSC1    1           3521053              3529887              Normal Node  OK

 

已用时间: 159.330(毫秒). 执行号:300.

2.12 配置监视器

db01机器上配置:

[dmdba@db01 ~]$ vim /dm8/dsc_config/dmcssm.ini

CSSM_OGUID                 = 210715

CSSM_CSS_IP                = 10.10.100.11:11286

CSSM_CSS_IP                = 10.10.100.12:11286

CSSM_LOG_PATH              = /dm8/log

CSSM_LOG_FILE_SIZE         = 512

CSSM_LOG_SPACE_LIMIT       = 0

db02机器上配置:

[dmdba@db02 ~]$ vim   /dm8/dsc_config/dmcssm.ini

CSSM_OGUID                 = 210715

CSSM_CSS_IP                = 10.10.100.11:11286

CSSM_CSS_IP                = 10.10.100.12:11286

CSSM_LOG_PATH              = /dm8/log

CSSM_LOG_FILE_SIZE         = 512

CSSM_LOG_SPACE_LIMIT       = 0

启动监视器,查看状态:

[dmdba@db01 ~]$ /dm8/bin/dmcssm INI_PATH=/dm8/dsc_config/dmcssm.ini

[monitor]         2023-10-17 13:42:53: CSS MONITOR V8

[monitor]         2023-10-17 13:43:03: CSS MONITOR SYSTEM IS READY.

 

[monitor]         2023-10-17 13:43:03: Wait CSS Control Node choosed...

[monitor]         2023-10-17 13:43:04: Wait CSS Control Node choosed succeed.

 

show

 

monitor current time:2023-10-17 13:43:09, n_group:3

=================== group[name = GRP_CSS, seq = 0, type = CSS, Control Node = 0] ========================================

 

[CSS0] auto check = TRUE, global info:

[ASM0] auto restart = FALSE

[DSC0] auto restart = FALSE

[CSS1] auto check = TRUE, global info:

[ASM1] auto restart = FALSE

[DSC1] auto restart = FALSE

 

ep: css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts             

   2023-10-17 13:43:08    CSS0          0         11286   Control Node OPEN               WORKING      OK           TRUE         208270            216136         

   2023-10-17 13:43:08    CSS1          1         11286   Normal Node  OPEN               WORKING      OK           TRUE         216587            224489         

 

=================== group[name = GRP_ASM, seq = 1, type = ASM, Control Node = 0] ========================================

 

n_ok_ep = 2

ok_ep_arr(index, seqno):

(0, 0)

(1, 1)

 

sta = OPEN, sub_sta = STARTUP

break ep = NULL

recover ep = NULL

 

crash process over flag is TRUE

ep: css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts             

   2023-10-17 13:43:08    ASM0          0         11276   Control Node OPEN               WORKING      OK           TRUE         229680            237520         

   2023-10-17 13:43:08    ASM1          1         11277   Normal Node  OPEN               WORKING      OK           TRUE         239103            246951         

 

=================== group[name = GRP_DSC, seq = 2, type = DB, Control Node = 0] ========================================

 

n_ok_ep = 2

ok_ep_arr(index, seqno):

(0, 0)

(1, 1)

 

sta = OPEN, sub_sta = STARTUP

break ep = NULL

recover ep = NULL

 

crash process over flag is TRUE

ep: css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts             

   2023-10-17 13:43:08    DSC0          0         5236    Control Node OPEN               WORKING      OK           TRUE         2287613           2289140        

   2023-10-17 13:43:08    DSC1          1         5236    Normal Node  OPEN               WORKING      OK           TRUE         2293305           2294817  

 

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
外向笑小鸭子L0
粉丝 0 资源 87 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  123
统信桌面专业版【全盘安装UOS系统】介绍  116
银河麒麟桌面操作系统安装佳能打印机驱动方法  108
银河麒麟桌面操作系统 V10-SP1用户密码修改  101
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益217.85元

3

1843880570 收益214.2元

4

IT-feng 收益208.98元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!