达梦8共享存储集群DSC

news2024/9/25 11:13:08

简介:

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

  熟悉Oracle的朋友会知道目前国产数据库只有达梦数据库有共享存储集群架构,Oracle通过私网进行不同节点之间的缓存融合,而达梦通过自己的MAL系统,这里不做过多介绍,大家想了解详情,请下载达梦介质安装后再DOC目录下有各产品架构的手册。架构图如下:

名词解释:

集群控制软件 DMCSS(对标Oracle的grid):负责监控集群中各个节点的运行状态,主要功能包括集群环境中节点的启动、故障处理、节点重加入等操作。DMCSS 的心跳机制(Heartbeat)是通过 VOTE 磁盘(非镜像环境下)或 DCRV 磁盘(镜像环境下)的 Disk Heartbeat 实现。

DMASM (对标Oracle的ASM存储管理系统):负责数据库底层磁盘的管理,裸设备或块设备。

DM 集群监视器: DMCSSM 与 DMCSS 相互通信,从 DMCSS 处获取整个集群系统的状态信息。DMCSSM 提供一系列管理维护集群的命令。

环境介绍:

2节点集群:

节点1:dmdsc1 

业务地址:192.168.1.110

MAL地址:10.0.0.1

操作系统:Redhat7.6

节点2:dmdsc2

业务地址:192.168.1.111

MAL地址:10.0.0.2

操作系统:Redhat7.6、

部署步骤

1.两个数据库节点分别安装数据库软件,无需初始化实例,安装步骤请参考数据库安装手册,这里不做介绍;

2.两个节点分别配置共享存储:sdb sdc sdd sde

 

无多路径软件执行如下命令:

for i in b c d e;

do

echo "KERNEL==\"sd?\",SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\",RESULT==\"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", SYMLINK+=\"asmdisk/asmsd$i\",OWNER=\"dmdba\", GROUP=\"dinstall\",MODE=\"0660\""

done

vi /etc/udev/rules.d/66-dmasmdevices.rules

 以上操作在两个节点操作完毕后,建议能重启就重启操作系统,如果不能执行如下操作命令:

/sbin/udevadm control --reload

/sbin/udevadm trigger

两个节点执行完毕后检查磁盘权限如下结果:

brw-rw---- 1 dmdba dinstall 8, 48 2月  18 23:12 /dev/sdd
brw-rw---- 1 dmdba dinstall 8, 64 2月  18 23:12 /dev/sde
brw-rw---- 1 dmdba dinstall 8, 16 2月  19 00:16 /dev/sdb
brw-rw---- 1 dmdba dinstall 8, 32 2月  19 00:16 /dev/sdc

3.配置集群文件:(以下均是dmdba用户操作:在数据库软件目录创建dsc_config目录,用于存放DSC使用的配置文件)

(两个节点均操作)DSC配置文件:

cat > dmdcr_cfg.ini <<EOF

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

DCR_VTD_PATH = /dev/asmdisk/asmsdc ##规划为 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 = CSS1 ##CSS 节点名

DCR_EP_HOST = 10.0.0.1 ##心跳地址

DCR_EP_PORT = 11286 ##CSS 端口

[GRP_CSS]

DCR_EP_NAME = CSS2

DCR_EP_HOST = 10.0.0.2

DCR_EP_PORT = 11286

[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 = ASM1 ##ASM 节点名,和 dmasvrmal 的 MAL_INST_NAME 一致

DCR_EP_SHM_KEY = 42424 ##共享内存标识

DCR_EP_SHM_SIZE = 1024 ##共享内存大小

DCR_EP_HOST = 10.0.0.1 ##心跳地址

DCR_EP_PORT = 11276 ##ASM 端口

DCR_EP_ASM_LOAD_PATH = /dev/asmdisk

[GRP_ASM]

DCR_EP_NAME = ASM2

DCR_EP_SHM_KEY = 42425

DCR_EP_SHM_SIZE = 1024

DCR_EP_HOST = 10.0.0.2

DCR_EP_PORT = 11276

DCR_EP_ASM_LOAD_PATH = /dev/asmdisk

[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 = DSC1 ##实例名,和 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 = DSC2

DCR_EP_SEQNO = 1

DCR_EP_PORT = 5236

DCR_CHECK_PORT = 11256

EOF

 

(单节点操作bin目录下执行如下命令)

./dmasmcmd

create dcrdisk '/dev/asmdisk/asmsdd' 'DCR'

create votedisk '/dev/asmdisk/asmsdc' 'VOTE'

create asmdisk '/dev/asmdisk/asmsde' 'LOG'

create asmdisk '/dev/asmdisk/asmsdb' 'DATA'

init dcrdisk '/dev/asmdisk/asmsdd' from '/home/dmdba/dmdbms/dsc_config/dmdcr_cfg.ini' identified by '123456'

init votedisk '/dev/asmdisk/asmsdc' from '/home/dmdba/dmdbms/dsc_config/dmdcr_cfg.ini'

(两个节点均操作)

cat > dmasvrmal.ini << EOF

[MAL_INST1]

MAL_INST_NAME = ASM1

MAL_HOST = 10.0.0.1

MAL_PORT = 7236

[MAL_INST2]

MAL_INST_NAME = ASM2

MAL_HOST = 10.0.0.2

MAL_PORT = 7236

EOF

(两个节点均操作)

cat > dmdcr.ini << EOF

DMDCR_PATH = /dev/asmdisk/asmsdd

DMDCR_MAL_PATH =/home/dmdba/dmdbms/dsc_config/dmasvrmal.ini #dmasmsvr 使用的 ASM的MAL 配置文件路径

DMDCR_SEQNO = 0 #两台机器配置不同值,另一台1

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

DMDCR_ASM_RESTART_INTERVAL = 0

DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/dmdbms/dsc_config/dmdcr.ini

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

DMDCR_DB_RESTART_INTERVAL =0

DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdbms/dmdata/dsc01/dm.ini dcr_ini=/home/dmdba/dmdbms/dsc_config/dmdcr.ini

EOF

(两个节点均操作,先启动为主控节点)

./dmcss DCR_INI=/home/dmdba/dmdbms/dsc_config/dmdcr.ini

(主控节点操作,创建ASM磁盘组)

./dmasmtool dcr_ini=/home/dmdba/dmdbms/dsc_config/dmdcr.ini

create diskgroup 'DMDATA' asmdisk '/dev/asmdisk/asmsdb'

create diskgroup 'DMASMLOG' asmdisk '/dev/asmdisk/asmsde'

(单节点,主控节点操作)

cat > dminit.ini <<EOF

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 = 2048

page_size = 32

dcr_path = /dev/asmdisk/asmsdd #dcr 磁盘路径,目前不支持 asm,只能是裸设备

dcr_seqno = 0

auto_overwrite = 1

[DSC1] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应

config_path = /home/dmdba/dmdbms/dmdata/dsc01

port_num = 5236

mal_host = 10.0.0.1

mal_port = 9340

log_path = +DMDATA/log/dsc1_log01.log

log_path = +DMDATA/log/dsc1_log02.log

[DSC2] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应

config_path = /home/dmdba/dmdbms/dmdata/dsc02

port_num = 5236

mal_host = 10.0.0.2

mal_port = 9340

log_path = +DMDATA/log/dsc2_log01.log

log_path = +DMDATA/log/dsc2_log02.log

EOF

--初始化数据库(慎重操作!)

./dminit control=/home/dmdba/dmdbms/dsc_config/dminit.ini

生成两个文件夹拷贝dsc02目录所有文件到另一个节点相同路径即可

(任意一台配置监视器)

DSC监控:

cat > dmcssm.ini <<EOF

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

CSSM_OGUID = 210715

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

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

CSSM_CSS_IP = 10.0.0.1:11286

CSSM_CSS_IP = 10.0.0.2:11286

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

CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大 32M

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

EOF

监视器启动:./dmcssm ini_path=/home/dmdba/dmdbms/dsc_config/dmcssm.ini

(两个节点root用户注册启动服务:如果不需要开机自启可以禁用服务)

cd /home/dmdba/dmdbms/script/root

./dm_service_installer.sh -t dmcss -p css01 -dcr_ini /home/dmdba/dmdbms/dsc_config/dmdcr.ini

./dm_service_installer.sh -t dmasmsvr -p asm01 -dcr_ini /home/dmdba/dmdbms/dsc_config/dmdcr.ini -y DmCSSServicecss01

./dm_service_installer.sh -t dmserver -p DSC1 -dm_ini /opt/sy/dsc/dsc1_config/dm.ini -dcr_ini /opt/sy/dsc/dmdcr.ini -y DmASMSvrServiceDSC1

DSC集群开启数据库归档:(两个节点均需要操作,disql登录数据库执行如下命令即可。)

SQL> alter database mount;

SQL> alter database add archivelog 'type=local,dest=+DMDATA/archlog,file_size=128,space_limit=4096';

SQL> alter database archivelog;

SQL> alter database open;

至此手工搭建集群操作完毕。如果遇到ASM无法登录等问题,大多都是因为两节点MAL系统不通或者两端服务没有启动,请仔细按照搭建步骤操作即可。

目前ASM操作命令支持还比较少,以后会慢慢丰富起来,相比Oracle RAC的搭建流程简单许多,而且搭建时间也不用很久,现在让我们体验下DSC的服务吧。

在线服务平台地址:
https://eco.dameng.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/356297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java牛客编程刷算法记录--2022-12-7+2023-2-19

https://www.nowcoder.com/ta/classic-code 牛客上经典必刷题库 https://www.nowcoder.com/practice/e08819cfdeb34985a8de9c4e6562e724?tpId46&tqId29030&rp1&ru/ta/classic-code&qru/ta/classic-code&difficulty&judgeStatus&tags/question-ran…

Android自动化配置

1 搭建APPIUM环境 1.1 安装node.js Appium是使用nodejs实现的&#xff0c;所以node是解释器&#xff0c;需要第一步安装好 node.js的安装包下载地址&#xff1a; https://nodejs.org/en/download/ 注意&#xff1a;node.js的安装包的下载在官网有两种版本&#xff0c;建议大…

基于FFmpeg实现的无声音屏幕录制

UI自动化测试时&#xff0c;有时需要进行录屏操作&#xff0c;这时我们是不需要声音的&#xff0c;我们可以通过FFmpeg进行简单的录制工作。 以下是在windows10环境下&#xff0c;基于FFmpeg实现的简单录制&#xff1a; Ffmpeg简介&#xff1a; 功能&#xff1a;有非常强大的…

Spring Cloud Nacos实战(六)- 集群架构说明与持久化配置切换

目录Nacos集群架构说明Nacos支持三种部署模式集群部署说明预备环境Nacos持久化切换配置Nacos持久化配置Nacos默认derby切换MySql测试Nacos集群架构说明 ​ 到目前为止&#xff0c;我们已经对Nacos的一些基本使用和配置已经掌握&#xff0c;但是这些还不够&#xff0c;我们还需…

算法导论【时间复杂度】—排序算法、图算法、动态规划、字符串匹配等时间复杂度小结

算法导论【时间复杂度】—排序算法、图算法、DP等小结排序快速排序堆排序计数排序基数排序桶排序SELECT算法RANDOMIZED-SELECTSELECT图算法广度优先搜索深度优先搜索Kruskal算法Prim算法Bellman-Ford算法Dijkstra算法Floyd-Warshall算法Johnson算法Ford-Folkson方法Edmonds-Kar…

基于Redis实现的分布式锁

基于Redis实现的分布式锁什么是分布式锁分布式锁主流的实现方案Redis分布式锁Redis分布式锁的Java代码体现优化一&#xff1a;使用UUID防止误删除优化二&#xff1a;LUA保证删除原子性什么是分布式锁 单体单机部署中可以为一个操作加上锁&#xff0c;这样其他操作就会等待锁释…

网络安全-FOFA资产收集和FOFA API调用

网络安全-FOFA资产收集和FOFA API调用 前言 一&#xff0c;我也是初学者记录的笔记 二&#xff0c;可能有错误的地方&#xff0c;请谨慎 三&#xff0c;欢迎各路大神指教 四&#xff0c;任何文章仅作为学习使用 五&#xff0c;学习网络安全知识请勿适用于违法行为 学习网络安全…

Android OTA升级常见问题的解决方法

1.1 多服务器编译 OTA 报错 Android7 以后引入了 jack-server 功能&#xff0c;也导致在公共服务器上 编译 Android7 以上的版本时&#xff0c;会出现 j ack-server 报错问题。 在多用户服务器上 编译 dist 时 会出现编译过程中 会将 port_service 和 port_admin 改为 默认的 …

Go语言Web入门之浅谈Gin框架

Gin框架Gin简介第一个Gin示例HelloworldRESTful APIGin返回数据的几种格式Gin 获取参数HTTP重定向Gin路由&路由组Gin框架当中的中间件Gin简介 Gin 是一个用 Go (Golang) 编写的 web 框架。它是一个类似于 martini 但拥有更好性能的 API 框架&#xff0c;由于 httprouter&a…

MySQl----- 单表查询

表名&#xff1a;worker-- 表中字段均为中文&#xff0c;比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varchar…

【Spark分布式内存计算框架——Spark SQL】11. External DataSource(中)parquet 数据

6.3 parquet 数据 SparkSQL模块中默认读取数据文件格式就是parquet列式存储数据&#xff0c;通过参数【spark.sql.sources.default】设置&#xff0c;默认值为【parquet】。 范例演示代码&#xff1a;直接load加载parquet数据和指定parquet格式加载数据 import org.apache.s…

事物发展的不同阶段会有不同的状态

之前讨论过一个话题&#xff0c;有人问“股票交易稳定盈利很难么&#xff1f;” 我的回答&#xff1a;不难&#xff0c;难在之前。 这几天我又想到经常看到论坛里有人pk观点&#xff0c;最后甩出一句话&#xff1a;“证明你说得对&#xff0c;你先赚一个亿再说。否则&#xf…

写代码犹如写文章: “大师级程序员把系统当故事来讲,而不是当做程序来写” | 如何架构设计复杂业务系统? 如何写复杂业务代码?...

“大师级程序员把系统当故事来讲&#xff0c;而不是当做程序来写”写代码犹如写文章好的代码应该如好文章一样表达思想&#xff0c;被人读懂。中心思想: 突出明确程序是开发者用编程语言写成的一本书&#xff0c;首先应该是记录开发者对业务需求分析、系统分析&#xff0c;最终…

并发编程底层原理

并发编程 文章目录并发编程线程知识点回顾多线程并行和并发什么是并发编程&#xff1f;并发编程的根本原因&#xff1f;Java内存模型&#xff08;JMM&#xff09;并发编程的核心问题-可见性、有序性、原子性可见性有序性原子性并发问题总结volatile关键字volatile的底层原理如何…

K8s学习(二)Kubernetest的资源管理及五大资源介绍

文章目录前言1.kubernetes的资源管理系统资源查看2.资源管理方式3.资源管理实战3.1 Namespace3.2 Pod3.3 Label3.4 Deployment3.5 Service3.5.1创建集群内部可访问的Service3.5.2创建集群外部可访问的Service前言 本文是k8s学习系列文章&#xff0c;前后串起来是一个完整的课程…

一招鉴别真假ChatGPT,并简要介绍ChatGPT、GPT、GPT2和GPT3模型之间的区别和联系

以下内容除红色字体部分之外&#xff0c;其他均来源于ChatGPT自动撰写。 ChatGPT是基于GPT模型的对话生成模型&#xff0c;旨在通过对话模拟实现自然语言交互。它是为了改善人机对话体验而设计的&#xff0c;主要应用于聊天机器人、智能客服等场景。 与GPT模型相比&#xff0c;…

全栈之路-前端篇 | 第一讲.基础前置知识【浏览器内核与网络知识】学习笔记

欢迎关注「全栈工程师修炼指南」公众号 点击 &#x1f447; 下方卡片 即可关注我哟! 设为「星标⭐」每天带你 基础入门 到 进阶实践 再到 放弃学习&#xff01; 涉及 企业运维、网络安全、应用开发、物联网、人工智能、大数据 学习知识 “ 花开堪折直须折&#xff0c;莫待无花…

内大-oj练习题(1期)

用于存储内大oj练习题 1. 排序题2. 实数输出3. 字符串比较大小4. 1055 找最小放表头,找最大放表尾5. 通过反转实现数据移动6. 破圈报数7. 通话记录8. 用栈实现进制转换9. 判断升序10. 金额的中文大写11. 生日组成的素数12. 判断是否属于一个子网13 统计字符个数14. 求前n项和1…

LeetCode02.07面试题 链表相交 带有输入和输出的链表相交

题目&#xff1a; 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c; 函…

Git的基本操作

文章目录1.git的工作流程2.git的工作环境3.git的基本操作(1)git init(2)git status(3)git add(4)git commit4.版本控制(1)git reflog与git log(2)再增加两个版本(3)git reset --hard 版本号(4)两个指针4.分支管理(1)对分支的理解(2)git branch和git branch -v(3)git checkout 分…