达梦DM8搭建DSC集群
架构说明
DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件,这些文件保存在共享存储上。每个节点有自己独立的联机日志和归档日志,其中联机日志保存在共享储存上,归档日志可以保存在本地储存上,也可以保存在共享储存上。
1. 创建共享磁盘
测试操作系统为:centos7.8
两台机器IP分别为192.168.107.101(主节点dsc1),192.168.107.102 (dsc2)
此次搭建DSC是测试环境,在虚拟机上需要新建共享磁盘。生产环境中可忽略
在两台虚拟机都关机的情况下设置
1.1 第一台(主节点dsc1)
选择添加虚拟磁盘类型SCSI(推荐),下一步
选择创建新虚拟机磁盘,下一步
分配20G磁盘大小
1.2 第二台(副节点dsc2)
选择添加虚拟磁盘类型SCSI(推荐),下一步
选择使用现有虚拟硬盘,下一步
浏览选择现有磁盘,点击完成
至此已添加完成共享存储,启动两台虚拟机
1.3 使用fdisk -l命令查看共享磁盘(root用户下)
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
共享磁盘添加成功
2. 部署DSC集群
两台机器需关闭防火墙
2.1 在节点DSC0上划分共享磁盘上的裸设备
- 输入fdisk /dev/sdb命令进行分区操作
- 依次输入n p 1 回车 +200M 回车,完成第一块磁盘划分。
依次输入n p 2 回车 +200M 回车,完成第二块磁盘划分。
依次输入n p 3 回车 +4096M 回车,完成第三块块磁盘划分。
最后输入w,保存退出即可
两台机器分别输入fdisk -l查看分区情况,两边同步即可
2.2 绑定裸设备
编辑 /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="root", GROUP="root", MODE="660"
两个节点分别执行命令,通知已经划分了分区
dsc0:
# partprobe /dev/sdb
#start_udev
dsc1:
# partprobe /dev/sdb
#start_udev
在节点dsc0上执行命令,完成裸设备绑定
udevadm trigger --action=add
完成裸设备绑定后,进行检查两边是否同步,输出内容一致
raw -qa
blockdev --getsize64 /dev/raw/raw1、2、3、4
依次检查
2.3安装DM8
两节点均需安装数据库软件,但不进行实例初始化操作
步骤可参考我之前的文章 达梦数据库(DM8) Linux安装教程
2.4 在节点dsc0上准备dmdcr_cfg.ini配置文件
准备配置文件dmdcr_cfg.ini,保存在/home/dmdba/dmdbms/data/下,只需要在dsc0 主节点上配置,后续DMASMCMD工具执行 init 语句会使用到。
配置文件内容如下
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.138.198
DCR_EP_PORT = 9341[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.138.120
DCR_EP_PORT= 9345[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 = 10
DCR_EP_HOST = 192.168.138.198
DCR_EP_PORT = 9349
DCR_EP_ASM_LOAD_PATH = /dev/raw[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93362
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.138.120
DCR_EP_PORT = 9353
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 = DSC2
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9743
2.5 使用DMASMCMD工具进行初始化
注:只在一台机器上执行即可,此处dmdcr_cfg.ini配置文件在主节点dsc0上,所以执行初始化,也在主节点完成即可。
2.6 授权
进行初始化之前对dmdba用户进行授权,不进行授权,执行初始化操作只能用 root用户进行,此操作后,使用dmdba用户进行初始化即可。
dsc0:
ll /dev/raw
ll /dev/sdb1
ll /dev/sdb2
ll /dev/sdb3
ll /dev/sdb4
可以看到现在所属用户与组均为 root
修改所属用户和组
chown -R dmdba:dinstall /dev/raw
chown -R dmdba:dinstall /dev/sdb1
chown -R dmdba:dinstall /dev/sdb2
chown -R dmdba:dinstall /dev/sdb3
chown -R dmdba:dinstall /dev/sdb4
ll /dev/raw
ll /dev/sdb1
ll /dev/sdb2
ll /dev/sdb3
ll /dev/sdb4
2.7 执行初始化
注:只在一台机器上执行即可,此处dmdcr_cfg.ini配置文件在主节点DSC0上,所以执行初始化,也在主节点完成即可。因为前面已经执行了授权所以在dmdba上面执行即可
在bin目录下执行:
cd /home/dmdba/dmdbms/bin
./dmasmcmd
ASM>create dcrdisk '/dev/raw/raw1' 'dcr'
ASM>create votedisk '/dev/raw/raw2' 'vote'
ASM>create asmdisk '/dev/raw/raw3' 'LOG0'
ASM>create asmdisk '/dev/raw/raw4' 'DATA0'
ASM>init dcrdisk '/dev/raw/raw1' from '/home/dmdba/dmdbms/data/dmdcr_cfg.ini' identified by 'abcd'
ASM>init votedisk '/dev/raw/raw2' from '/home/dmdba/dmdbms/data/dmdcr_cfg.ini'
2.8 配置dmasvrmal.ini文件
使用 DMASM 的所有节点都要配置(dmdba用户下配置),内容完全一样,保存到/home/dmdba/dmdbms/data, 目录下
注:将以下内容添加至文件,保存退出。
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.138.198
MAL_PORT = 7236[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.138.120
MAL_PORT = 7238
2.9 配置dmdcr.ini文件
在dmdba用户下的/home/dmdba/dmdbms/data目录下配置dmdcr.ini,其中dmdcr_path相同,dmasvrmal.ini文件内容也相同,dmdcr_seqo分别为0和1
2.9.1 主节点dsc0(192.168.138.198)的dmdcr.ini
使用dmdba用户
cd /home/data/
vi dmdcr.ini
将以下内容添加至 dmdcr.ini文件中
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/dmdba/dmdbms/data/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/dmdbms/data/dmdcr.ini#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/dmdbms/data/dsc0_config/dm.ini dcr_ini=/home/dmdba/dmdbms/data/dmdcr.ini
2.9.2 节点dsc1(192.168.138.120)的dmdcr.ini
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/dmdba/dmdbms/data/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 2#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/dmdbms/data/dmdcr.ini#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD=/home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/dmdbms/data/dsc1_config/dm.ini dcr_ini=/home/dmdba/dmdbms/data/dmdcr.ini
2.10 启动DMCSS和DMASM服务
在两个节点分别先后启动dmcss、dmasm程序
2.10.1 启动dsc0主节点
以下操作均在 dmdba用户下执行
手动启动css命令:
cd /opt/dmdbms/bin
./dmcss DCR_INI=/home/dmdba/dmdbms/data/dmdcr.ini
CSS启动后新开窗口开启前台的ASM服务
手动启动asm命令:
./dmasmsvr DCR_INI=/home/dmdba/dmdbms/data/dmdcr.ini
注:如果配置自动拉起功能,css在判定asm故障并超过配置时间后会执行拉起服务操作,所以配置自动拉起功能,则不必执行手动启动命令,可以在配置集群结束后,配置自动拉起功能。
2.10.2 启动dsc1节点
以下操作均在 dmdba用户下执行
手动启动css命令:
cd /opt/dmdbms/bin
./dmcss DCR_INI=/home/dmdba/dmdbms/data/dmdcr.ini
CSS启动后新开窗口开启前台的ASM服务
手动启动asm命令:
./dmasmsvr DCR_INI=/home/dmdba/dmdbms/data/dmdcr.ini
控制台打印信息如下:
该节点启动后,主节点自动监控到
2.11 在DSC0上使用dmasmtool工具创建DMASM磁盘组
使用 dmdba用户进行操作
开启新窗口操作,选择一个节点进行创建ASM磁盘组,此处在dsc0主节点上进行创建磁盘组。
./dmasmtool DCR_INI=/home/dmdba/dmdbms/data/dmdcr.ini
进入工具后,分步执行如下语句:
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
创建日志磁盘组
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
如下所示:
2.12 配置dminit.ini文件
使用dmdba用户,保存到节点DSC0的/home/dmdba/dmdbms/data目录
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]
config_path = /home/dmdba/dmdbms/data/dsc0_config
port_num = 5236
mal_host = 192.168.138.198
mal_port = 9340
log_path = +DMLOG/log/dsc0_log01.log
log_path = +DMLOG/log/dsc0_log02.log[DSC1]
config_path = /home/dmdba/dmdbms/data/dsc2_config
port_num = 5236
mal_host = 192.168.138.120
mal_port = 9342
log_path = +DMLOG/log/dsc2_log01.log
log_path = +DMLOG/log/dsc2_log02.log
2.13 给/home/dmdba/dmdbms/data赋权
Chown –R dmdba:dinstall /home/dmdba/dmdbms/data
2.14 启动实例
dsc0:
./dmserver /home/dmdba/dmdbms/data/dsc0_config/dm.ini dcr_ini=/home/dmdba/dmdbms/data/dmdcr.ini
dsc1:
./dmserver /home/dmdba/dmdbms/data/dsc1_config/dm.ini dcr_ini=/home/dmdba/dmdbms/data/dmdcr.ini
查看信息:
启动完成
3. 测试集群
使用manager工具,输入查询语句:
select * from v$dsc_ep_info;
信息如下:
可以看到DSC0是控制节点,DSC1是Normal节点。
在DSC0节点创建表格:
create table users(uname varchar(20),age int
);
插入数据:
insert into users values('hyf',23);
commit;
在DSC1中查询
select * from users;
结果如下:
查询结果成功!至此确定DSC集群搭建成功。
4. 注册服务,配置自动拉起服务
注册服务需要使用root用户
dsc0:
//注册DMCSS服务
./dm_service_installer.sh -t dmcss -p DMCSS0 -dcr_ini /home/dmdba/dmdbms/data/dmdcr.ini//注册DMAMS服务
./dm_service_installer.sh -t dmasmsvr -p DMASM0 -dcr_ini /home/dmdba/dmdbms/data/dmdcr.ini -y DmCSSServiceDMCSS0//注册实例服务
./dm_service_installer.sh -t dmserver -p DSC0 -dm_ini /home/dmdba/dmdbms/data/dsc0_config/dm.ini -dcr_ini /home/dmdba/dmdbms/data/dmdcr.ini -y DmASMSvrServiceDMASM0.service
dsc1:
//注册DMCSS服务
./dm_service_installer.sh -t dmcss -p DMCSS1 -dcr_ini /home/dmdba/dmdbms/data/dmdcr.ini//注册DMAMS服务
./dm_service_installer.sh -t dmasmsvr -p DMASM1 -dcr_ini /home/dmdba/dmdbms/data/dmdcr.ini -y DmCSSServiceDMCSS1//注册实例服务
./dm_service_installer.sh -t dmserver -p DSC1 -dm_ini /home/dmdba/dmdbms/data/dsc1_config/dm.ini -dcr_ini /home/dmdba/dmdbms/data/dmdcr.ini -y DmASMSvrServiceDMASM1.service
搭建成功后修改两节点配置文件dmdcr.ini,将 DMDCR_ASM_RESTART_INTERVAL 与 DMDCR_DB_RESTART_INTERVAL值修改为不等于0 即可,css即可自动拉起asm与server服务,此处改为10,为超过设置的时间后,如果 DMASM 节点与DMDSC节点的 active 标记仍然为 FALSE,则 DMCSS 会执行自动拉起。
DMDSC启动、关闭流程
启动顺序:DMCSS—>DMASMSVR—>DMSERVICE
关闭顺序:DMSERVICE—>DMASMSVR—>DMCSS。
启动:
DMDSC是基于共享存储的数据库集群系统,包含多个数据库实例,因此,与单节点的达梦数据库不同,DMDSC集群需要在节点间进行同步、协调,才能正常地启动、关闭。启动DMDSC集群之前,必须先启动集群同步服务DMCSS,如果使用了DMASM文件系统,则DMASMSVR服务也必须先启动。
启动流程简单总结一下就是先启动DMCSS,然后启动DMASMSVR(如果有的话),最后启动DMSERVER
如果DMCSS配置了DMASMSVR/dmserver自动拉起命令,此时可以先仅启动DMCSS,然后启动监视器DMCSSM,在DMCSSM控制台执行命令"ep startup asm"启动DMASMSVR集群,执行"ep startup dsc"启动dmserver集群(其中asm/dsc为dmasmsvr/dmserver集群的组名)。
停止:
如果DMCSS配置了DMASMSVR/dmserver自动拉起命令,那么手动停止DMSERVER和DMASMSVR时会被拉起来,因此可能导致停止服务执行成功,但是集群并未停止的情况。此时就显示出监视器的好处。
此时可以在监视器中执行“ep stop 集群组名”命令的方式停止ASMSVR服务或者dmserver服务,在使用监视器停止服务时,监视器会关闭相关的自动拉起命令,因此,可以确保集群的正确停止,在停止DMASMSVR/dmserver服务后,再手动停止DMCSS服务即可。需要注意的是,如果不停止DMCSS服务,再次启动集群的话,自动拉起是不会生效的,当然,也可以通过在监视器中执行“set group_name auto restart on/off ”打开/关闭指定组的自动拉起功能,此命令只修改dmcss内存值。
注:在注册DMASM服务时候,会提示/usr/lib/systemd/system/DmCSSServiceDmCSS1不存在,解决办法如下:
cp -p /home/dmdba/dmdbms/bin/DmCSSServiceDmCss1 /usr/lib/systemd/system/
达梦技术社区地址:https://eco.dameng.com
达梦DM8搭建DSC集群相关推荐
- 达梦DM8搭建DSC过程以及遇到的问题
达梦DM8搭建DSC过程以及遇到的问题 DMDSC 是什么? DM DSC是一个单数据库.多实例的集群系统:具有高可用性.高性能.负载均衡等特性 DMDSC架构 DMDSC 组件: 集群主要由数据库和 ...
- 达梦单机到DSC集群DMHS部署
达梦数据实时同步软件 DMHS 是达梦公司推出的新一代支持异构环境的高性能.高可靠和高可扩展的数据库实时同步系统.该产品基于成熟的关系数据模型和标准接口,跨越多种软硬件平台实现秒级数据 ...
- 达梦数据库DM8版本DSC集群启停注意事项
达梦数据库DM8的DSC集群与DM7相比,新增加了DMCSSM监视器功能,使用监视器启停集群非常方便. 首先,介绍一下什么是DSC DMDSC:DM共享存储数据库集群,英文全称DM Data Shar ...
- 【与达梦同行】达梦数据库主备集群搭建
达梦数据库主备集群----高性能模式-搭建 文章连接:https://eco.dameng.com/community/post/20221213145437YQ30VJ0HDLCFUV2UMW 环境 ...
- 达梦主备守护集群原理详解
达梦主备集群顾名思义就是一主一备(也可以一主多备)是一种集成化的高可靠性解决方案,同时满足用户对数据安全性和高可用性的要求.解决由于硬件故障.自然灾害等原因导致的数据库服务长时间中断问题,满足用户不间 ...
- 达梦数据库主备集群确认监视器测试
目录 1.测试说明 2.测试项目 3.测试结论 1.测试说明 (1) 本次测试环境 主机名 服务ip 心跳ip 数据库名 实例名 dmdb01 主 192.168.226.190 192.168.22 ...
- 国产数据库之达梦数据库 - DM7 MPP集群安装配置
武汉达梦数据库作为国产数据库较有代表性的企业,在数据库研发方面投入了大量的精力,其自主研发的达梦数据库DM7,除了具有单机版可与Oracle相媲美的能力外,同时也研发了一款无共享MPP架构的数据库软件 ...
- 达梦数据库数据守护集群搭建(命令行方式)
文章目录 达梦数据守护集群介绍 一.前提 二.环境准备 1.数据守护集群搭建 2.配置过程 达梦数据守护集群介绍 达梦数据守护集群软件(DM Data Watch)是一种集成化的高可靠性解决方案,该方 ...
- 达梦数据库数据守护集群搭建
目录 数据守护 集群搭建 备份还原 dm.ini文件修改 配置dmmal.ini文件 配置dmarch.ini归档文件 配置dmwatcher.ini文件 监视器文件配置 mount启动数据库,设置o ...
最新文章
- 码云创建maven工程
- 我的世界java版怎么装在u盘_我的世界选择器参数怎么使用?
- 数学--数论--HDU1222 狼和兔子(最大公约数)
- ASP.NET Core 源码学习之 Logging[3]:Logger
- ubuntu16.04下Caffe绘制训练过程的loss和accuracy曲线
- 第一次工作面试(蘑菇街)
- Java中mod的作用_Java中mod和%区别
- 《高数叔》概率论与数理统计期末总复习笔记(持续更新中)
- 单片机原理与接口技术(ESP8266/ESP32)机器人类草稿
- 安全工具(免费杀毒软件Avast、免费防火墙费尔、免费木马清理工具arswp,AVG/Ewido,超级兔子)...
- 高级研发工程师岗位职责
- 阿里云图片服务器OSS对象存储器使用方法(附详细步骤)
- 「冰狐智能辅助」如何在线实时调试?
- 在华为公司的项目总结
- 山东科技大学第二届ACM校赛解题报告
- 华为笔记本已经设置睡眠时间但无法自动进入睡眠状态解决方案(亲测有效)
- 机器学习、数据分析类面经分享(美的_秋招_校招_20170924)
- netty 简单demo
- 【Java基础】冷门知识点
- C++ 技术资料(大视野网络收集)
热门文章
- 0040 基于文本界面的房屋出租系统
- 今天开始写android的照片浏览器(一)至返回所有图片文件
- 工行又爆漏洞?可以通过在线缴费系统,根据手机号码查机主姓名,座机机主...
- 【Unity】文字游戏制作插件Fungus教程(2)问答系统的开发
- bzoj1191 [HNOI2006]超级英雄Hero
- 物联网时代下,危化安全生产如何守住“安全防线”?
- 通关!游戏设计之道的学习笔记(八)战斗的要素
- 关于java中位运算符的使用和理解
- 【朴素贝叶斯学习笔记】
- 初级Java入行难,没公司要,难道市场真的饱和了吗?