搭建DMDSC

本文详细介绍了如何搭建DMDSC集群,包括网络配置、添加共享磁盘、配置服务器、实例初始化、服务管理和验证过程,以及归档配置的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搭建DMDSC

一.概述

DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。DMDSC 集群主要由数据库和数据库实例、共享存储、DMASM 或 DMASM 镜像、本地存储、通信网络、集群控制软件 DMCSS、集群监视器 DMCSSM 组成。

二.搭建准备

  1. 网络配置及规划

为每台安装有DM8的机器配置双网卡,外部IP提供服务,内部IP进行数据交换。以下是所使用的机器的网络和端口规划:

节点内部IP外部IP
DSC1192.168.26.111192.168.61.129
DSC2192.168.26.112192.168.61.130
监视器192.168.26.111192.168.61.129
端口用途
5237数据库实例监听端口
9741DCR检查数据库实例监听端口
9341CSS进程TCP连接端口
9351ASM进程TCP连接端口
7236ASM的MAL系统TCP连接端口
9236数据库实例的MAL系统TCP连接端口
  1. 添加共享磁盘

在Vmware中,为每台虚拟机添加硬盘,并修改参数,使其成为共享磁盘。步骤如下:

为DSC1机器添加硬盘。
在这里插入图片描述

将虚拟磁盘存储为单个文件,并立即分配所有空间。
在这里插入图片描述

对新创建的磁盘进行配置,点击高级,将其设置为独立磁盘。
在这里插入图片描述

DSC1硬盘添加完成,DSC2硬盘添加操作类似,但选择使用现有虚拟磁盘创建。
在这里插入图片描述

打开并修改所使用的所有虚拟机的配置文件。
在这里插入图片描述

添加以下内容:

scsi0.sharedBus = “virtual”

scsi0:1.deviceType = “disk”

disk.locking = “false”

diskLib.dataCacheMaxSize = “0”

diskLib.dataCacheMaxReadAheadSize = “0”

diskLib.DataCacheMinReadAheadSize = “0”

diskLib.dataCachePageSize = “4096”

diskLib.maxUnsyncedWrites = “0”

disk.EnableUUID = “TRUE”

3.在共享设备上裸设备划分

启动虚拟机,使用fdisk -l命令可以查看磁盘情况。

root用户输入fdisk /dev/sdb 命令进行分区操作:
在这里插入图片描述

依次输入n -> p -> 1 -> 回车 -> +200M -> 回车,完成第一块磁盘划分

依次输入n -> p -> 2 -> 回车 -> +200M -> 回车,完成第二块磁盘划分

依次输入n -> p -> 3 -> 回车 -> +4096M -> 回车,完成第三块磁盘划分

依次输入n -> p -> 4 -> 回车 -> 回车 -> 回车,完成第四块磁盘划分

最后输入w保存

以上操作在一台机器完成即可。

创建完成后,刷新磁盘并查看磁盘情况。
在这里插入图片描述

4.绑定裸设备

编辑两节点下的/etc/udev/rules.d/70-persistent-ipoib.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”

KERNEL==“raw[1-4]”, OWNER=“dmdba”, GROUP=“dinstall”, MODE=“660”

分别执行下列指令完成裸设备绑定。

partprobe /dev/sdb

udevadm control --reload-rules

udevadm trigger --type=devices --action=change

在这里插入图片描述

三. 搭建服务器

  1. 在各节点上创建 /dm8/config,并在DSC1节点新建 dmdcr_cfg.ini 配置文件:
mkdir /dm8/config

touch dmdcr\_cfg.ini

修改配置文件的内容:

DCR_N_GRP = 3 #磁盘内多少个组

DCR_VTD_PATH = /dev/raw/raw2 #表决磁盘路径

DCR_OGUID = 63635 #消息标识

[GRP] #组1 CSS

DCR_GRP_TYPE = CSS #组类型

DCR_GRP_NAME = GRP_CSS #组名

DCR_GRP_N_EP = 2 #组内节点个数N, 最大值16

DCR_GRP_DSKCHK_CNT = 60 #磁盘心跳时间默认60s

[GRP_CSS]

DCR_EP_NAME = CSS1

DCR_EP_HOST = 192.168.61.129 #节点ip

DCR_EP_PORT = 9341 #节点监听端口号

[GRP_CSS]

DCR_EP_NAME = CSS2

DCR_EP_HOST = 192.168.61.130 #节点ip

DCR_EP_PORT = 9341 #节点监听端口号

[GRP] #组2 ASM

DCR_GRP_TYPE = ASM

DCR_GRP_NAME = GRP_ASM

DCR_GRP_N_EP = 2

DCR_GRP_DSKCHK_CNT = 60

[GRP_ASM]

DCR_EP_NAME = ASM1

DCR_EP_SHM_KEY = 93360 #共享内存标识

DCR_EP_SHM_SIZE = 10 #共享内存大小,单位m 10-1024

DCR_EP_HOST = 192.168. 61.129

DCR_EP_PORT = 9351

DCR_EP_ASM_LOAD_PATH = /dev/raw #ASM扫扫描磁盘路径

[GRP_ASM]

DCR_EP_NAME = ASM2

DCR_EP_SHM_KEY = 93361

DCR_EP_SHM_SIZE = 10

DCR_EP_HOST = 192.168. 61.130

DCR_EP_PORT = 9351

DCR_EP_ASM_LOAD_PATH = /dev/raw

[GRP] #组3 DB

DCR_GRP_TYPE = DB

DCR_GRP_NAME = DSC

DCR_GRP_N_EP = 2

DCR_GRP_DSKCHK_CNT = 60

[GRP_DSC]

DCR_EP_NAME = DSC1

DCR_EP_SEQNO = 0

DCR_CHECK_PORT = 9741

DCR_EP_PORT = 5237 ##实例端口,和 dm.ini 的 PORT_NUM 一致

[GRP_DSC]

DCR_EP_NAME = DSC2

DCR_EP_SEQNO = 1

DCR_CHECK_PORT = 9741

DCR_EP_PORT = 5237

  1. 初始化磁盘组

在DSC1机器上使用DMASMCMD工具初始化,cd到bin目录下,输入命令:./dmasmcmd,执行以下指令

create dcrdisk '/dev/raw/raw1' 'dcr'

create votedisk '/dev/raw/raw2' 'vote'

create asmdisk '/dev/raw/raw3' 'LOG0'

create asmdisk '/dev/raw/raw4' 'DATA0'

init dcrdisk '/dev/raw/raw1' from '/dm8/config/dmdcr\_cfg.ini'identified by 'abcd'

init votedisk '/dev/raw/raw2' from '/dm8/config/dmdcr\_cfg.ini'

在这里插入图片描述

  1. 准备DMASM的MAL配置文件

在 /dm8/config 目录下创建 dmasvrmal.ini 配置文件,并添加以下内容。使用 DMASM 的所有节点都要配置,内容一致。

[MAL_INST1]

MAL_INST_NAME = ASM1

MAL_HOST = 192.168.61.129

MAL_PORT = 7236

[MAL_INST2]

MAL_INST_NAME = ASM2

MAL_HOST = 192.168.61.130

MAL_PORT = 7236

  1. 配置dmdcr.ini 文件

DSC0:

DMDCR_PATH = /dev/raw/raw1

DMDCR_MAL_PATH =/dm8/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径

DMDCR_SEQNO = 0

#ASM 重启参数,命令行方式启动

DMDCR_ASM_RESTART_INTERVAL = 0

DMDCR_ASM_STARTUP_CMD =/dm8/config/dmasmsvr
dcr_ini=/dm8/config/dmdcr.ini

#DB 重启参数,命令行方式启动

DMDCR_DB_RESTART_INTERVAL = 0

DMDCR_DB_STARTUP_CMD = /dm8/config/dmserver path=/dm8/config/dsc1
/dm.ini dcr_ini=/dm8/config/dmdcr.ini

DSC1:

DMDCR_PATH = /dev/raw/raw1

DMDCR_MAL_PATH =/dm8/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径

DMDCR_SEQNO = 1

#ASM 重启参数,命令行方式启动

DMDCR_ASM_RESTART_INTERVAL = 0

DMDCR_ASM_STARTUP_CMD =/dm8/bin/dmasmsvr dcr_ini=/dm8/config/dmdcr.ini

#DB 重启参数,命令行方式启动

DMDCR_DB_RESTART_INTERVAL = 0

DMDCR_DB_STARTUP_CMD = /dm8/bin/dmserver path=/dm8/config/dsc2/dm.ini dcr_ini=/dm8/config/dmdcr.ini

  1. 启动DMCSS、DMASM服务

在DSC1和DSC2机器上先后启动dmcss、dmasm程序,指令如下:

DSC1:

./dmcss DCR\_INI=/dm8/config/dmdcr.ini

./dmasmsvr DCR\_INI=/dm8/config/dmdcr.ini

DSC2

./dmcss dcr\_ini=/dm8/config/dmdcr.ini

./dmasmsvr DCR\_INI=/dm8/config/dmdcr.ini

在这里插入图片描述
在这里插入图片描述

  1. 创建DMASM磁盘组

在DSC1上使用dmasmtool工具创建DMASM磁盘组:
在这里插入图片描述

  1. 配置dminit.ini

在DSC1节点的 /dm8/config 目录下创建dminit.ini文件,并添加以下内容:

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 = /dm8/config/dsc1

port_num = 5237

mal_host = 192.168.61.129

mal_port = 9236

log_path = +DMLOG/log/DSC1_log01.log

log_path = +DMLOG/log/DSC1_log02.log

[DSC2]

config_path = /dm8/config/dsc2

port_num = 5237

mal_host = 192.168.61.130

mal_port = 9236

log_path = +DMLOG/log/DSC2_log01.log

log_path = +DMLOG/log/DSC2_log02.log

  1. 初始化实例

在DSC1的机器上,到/dm8/bin目录下输入以下命令,初始化数据库:

./dminit control=/dm8/config/dminit.ini
在这里插入图片描述

  1. 将实例文件发送到DSC2机器上

将DSC1上的dsc2文件复制到DSC2上的相应目录:

scp -r dsc2 192.168.61.130:/dm8/config/
  1. 注册服务

配置成功后需要注册为系统服务,方便启动和关闭集群,以及实现开机自动启动。2 个节点都需要注册,使用 root 用户执行,到数据库安装目录的 script/root 目录。

./dm\_service\_installer.sh -t dmcss -p css1 -dcr\_ini /home/dmdba/config/dmdcr.ini

在这里插入图片描述

关闭前台启动的 css,以服务方式启动 css。

systemctl start DmCSSServicecss1

systemctl start DmCSSServicecss2
  1. 启动数据库

在两个节点的机器上启动数据库服务。

DSC1

./dmasmsvr /dm8/config/dsc1/dm.ini dcr\_ini=/dm8/config/dmdcr.ini

DSC2

./dmserver /dm8/config/dsc2/dm.ini dcr\_ini=/dm8/config/dmdcr.ini

在这里插入图片描述
在这里插入图片描述

四. 配置监视器

在任意节点的机器上创建监视器配置文件,命令如下:

vi /dm8/config/dmcssm.ini

添加以下内容:

#和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致

CSSM_OGUID = 63635

#配置所有 CSS 的连接信息,

#和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致

CSSM_CSS_IP = 192.168.61.129:9341

CSSM_CSS_IP = 192.168.61.130:9341

CSSM_LOG_PATH =/home/dmdba/log #监视器日志文件存放路径

CSSM_LOG_FILE_SIZE = 1024 #每个日志文件最大 1024 MB

CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间

启动监视器:

到数据库软件安装目录bin下执行以下命令:

./dmcssm ini\_path=/dm8/config/dmcssm.ini

在这里插入图片描述

输入show命令,查看css、asm和数据库的状态
在这里插入图片描述

五. 服务启停

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

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

3.关闭 css:各节点关闭各自的 css 服务

systemctl stop DmCSSServicecss1/DmCSSServicecss2

启动顺序:

dmcss→ dmasmsvr→ dmserver

关闭顺序:

dmserver → dmasmsvr → dmcss

六. 验证

DSC1和DSC2信息验证

分别使用 disql 工具输入以下命令,查看两端的信息是否一致:

select \* from v$dsc\_ep\_info;

在这里插入图片描述

数据同步验证

在DSC1机器中查询t1表,查询失败;创建t1表,并插入数据。
在这里插入图片描述

在DSC1提交之前,DSC2中对t1表进行查询,结果如下:
在这里插入图片描述

DSC1节点将数据提交,并在DSC2中查询。
在这里插入图片描述

七. 归档配置

共享存储集群归档需要配置本地归档和远程归档。

在DSC1和DSC2节点上进行以下配置。

DSC1:

alter database mount;

alter database archivelog;

alter database add archivelog ‘DEST=/home/dmdba/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=/home/dmdba/remote_arch’;

alter database open;

DSC2:

alter database mount;

alter database archivelog;

alter database add archivelog ‘DEST=/home/dmdba/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=/home/dmdba/remote_arch’;

alter database open;

参考资料:https://eco.dameng.com

<think>我们正在讨论达梦数据库DMDSC技术。根据用户问题,需要解释DMDSC的含义及其作用,并结合引用内容进行说明。 引用[1]提到了dmdcr.ini配置文件,这是DMDSC集群配置的一部分。 引用[2]和[3]都提到了MAL系统(内部通信机制)以及它在DMDSC集群中的重要性。 根据这些信息,我们可以组织回答如下: 1. DMDSC的定义:达梦数据库共享存储集群(DM Data Shared Cluster)的缩写。 2. 作用:提供高可用性、高吞吐量的数据库集群解决方案。 3. 关键技术点:共享存储架构、MAL通信机制、DMCSS(集群同步服务)等。 同时,我们需要生成相关问题。 注意:回答中引用的段落末尾要自然地添加引用标识。 因此,回答结构如下: 首先解释DMDSC是什么,然后说明其作用,再结合引用内容说明其关键技术(如MAL系统、DMCSS等)。 最后生成相关问题。</think>### DMDSC 的含义及作用 **DMDSC**(DM Data Shared Cluster)是达梦数据库的核心高可用解决方案,全称为**达梦共享存储数据库集群**。其核心作用是通过多节点共享存储架构,实现数据库的高并发、高可用和负载均衡。 #### 核心作用详解: 1. **高可用性** - 集群节点通过共享存储(如 ASM 磁盘组)访问同一份数据。当某个节点故障时,DMCSS(集群同步服务)会自动裁定异常节点并将其踢出集群,其他节点继续提供服务,实现故障秒级切换[^2][^3]。 - 示例:若节点间 MAL 链路异常,DMCSS 会触发节点重组,确保服务连续性。 2. **高性能扩展** - 多节点并行处理请求,突破单机性能瓶颈。通过负载均衡分发读写操作,显著提升吞吐量。 - 支持在线扩容,新增节点可动态加入集群。 3. **数据强一致性** - 基于共享存储架构,所有节点操作同一份数据文件,通过全局锁机制和 MAL 系统保障事务一致性[^1][^3]。 #### 关键技术组件: - **MAL 通信系统**(Multi-Access Layer) 基于 TCP 协议的内部通信机制,负责节点间心跳检测、数据同步和消息传递。DMDSC 包含两套 MAL 系统: - ASM 服务器间 MAL:管理共享存储状态。 - DMSERVER 间 MAL:协调数据库事务[^2][^3]。 - **DMCSS 集群同步服务** 监控节点状态,仲裁故障节点,并自动执行服务拉起(如 `DmService_DSC0 start`)[^1]。 - **共享存储层** 使用 DMASM 文件系统管理共享磁盘(如 `/dev/dm/asm-diske`),所有节点通过 `dmdcr.ini` 配置文件定义存储路径和集群参数[^1]。 > **典型应用场景**:金融核心交易系统、电信计费平台等对高可用和性能有严苛要求的领域。 --- ### 相关问题 1. DMDSC 的故障切换流程具体如何实现? 2. MAL 系统在 DMDSC 集群中承担哪些关键任务? 3. 如何通过 `dmdcr.ini` 配置文件优化 DMDSC 集群性能? 4. DMDSC 与传统主备架构相比有哪些核心优势? 5. DMASM 文件系统在共享存储集群中的作用是什么? [^1]: 达梦数据库 DMDSC 搭建中的 dmdcr.ini 配置示例,定义了共享存储路径、MAL 文件路径及集群自愈参数。 [^2]: MAL 系统作为 DMDSC 的内部通信机制,保障 ASM 服务器和 DMSERVER 节点间的可靠通信。 [^3]: 两套 MAL 系统协同工作原理及 DMCSS 的故障仲裁机制。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值