DM8共享存储集群DSC

2 篇文章 0 订阅

DM DSC 集群是一个多实例、单数据库的系统。

DSC系统特性

  1. 高可用性:只要集群中有一个活动节点,就能正常提供数据库服务。
  2. 高吞吐量:多个节点同时提供数据库服务,有效提升集群的整体事务处理能力。
  3. 负载均衡:用户的连接请求被平均分配到集群中的各个节点,确保各个节点的负载大致平衡。

使用说明

  1. 支持定时器,但只有 控制节点上配置的定时器生效 。只支持脱机配置定时器,不支
    持联机配置
  2. 支持作业,但只有控制节点上支持执行作业
  3. 不支持 HUGE 表
  4. 不支持外部表
  5. 不支持堆表
  6. 不支持类型别名相关操作
  7. 不支持 table 级别的 space limit 功能
  8. 不支持全文索引、词库相关操作
  9. 不支持安全版本
  10. 不支持 DBMS_ALERT 、 DBMS_LOCK 包
  11. 不支持数据复制
  12. 不能与 MPP 集群混合使用
  13. 不支持为表空间文件指定 mirror_path
  14. 不支持闪回查询,不允许打开闪回功能

DMCSS选取控制节点的原则:

  1. 先启动的 DMCSS 作为控制节点
  2. DMCSS 同时启动,则选择节点号小的节点为控制节点

DMDSC集群的搭建

安装DM8数据库

Linux系统创建用户组和用户:

(1) 创建安装用户组(root用户操作)

   groupadd dinstall

(2) 创建安装用户(root用户操作)

   useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

(3) 初始化用户密码(root用户操作)

passwd dmdba

之后通过系统提示进行密码设置。
规划路径
切换到dmdba用户下,创建dmdbms目录,dmdbms目录下分别创建config目录存放所有配置文件,arch_0目录存放归档日志,另外一台机器创建为arch_1目录;arch_0_remote目录存放远程归档,另外一台机器创建为arch_1_remote

划分裸设备

2TB以下用fdisk命令划分

  1. 输入fdisk /dev/sdb
  2. 依次输入 n p 1 回车 +100M 回车,完成第一块磁盘划分
  3. 依次输入 n p 2 回车 +100M 回车,完成第二块磁盘划分
  4. 依次输入 n p 3 回车 +20480M 回车,完成第三块磁盘划分
  5. 依次输入 n p 4 回车回车回车,完成第四块磁盘划分
  6. 输入w命令,将裸设备划分的设置进行保存;

2TB以上用parted命令划分

  1. 输入parted /dev/sdb
  2. 输入 mklabel gpt 回车,将MBR磁盘磁盘转换为gpt格式
  3. 输入 mkpart primary 0 100 回车,完成第一块磁盘划分
  4. 输入 mkpart primary 100 200 回车,完成第二块磁盘划分
  5. 输入 mkpart primary 200 20680 回车,完成第三块磁盘划分
  6. 输入 mkpart primary 20680 5498G 回车,完成第四块磁盘划分
  7. 输入 quit 回车 完成磁盘划分工作

编辑/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="dinstall",MODE="660"

或者

ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="17", RUN+="/bin/raw /dev/raw/raw1 %M %m"
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="18", RUN+="/bin/raw /dev/raw/raw2 %M %m"
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="19", RUN+="/bin/raw /dev/raw/raw3 %M %m"
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="20", RUN+="/bin/raw /dev/raw/raw4 %M %m"
ACTION=="add",KERNEL=="raw[1-4]",OWNER="dmdba",GROUP="dinstall",MODE="660"

执行下面语句,完成裸设备的绑定

partprobe /dev/sdb

配置dmdcr_cfg.ini

初始化磁盘组的时候会用到该配置文件

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.255.11 
  DCR_EP_PORT          = 9341 
[GRP_CSS] 
  DCR_EP_NAME          = CSS1 
  DCR_EP_HOST          = 192.168.255.12 
  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      = 10 
  DCR_EP_HOST          = 192.168.255.11 
  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      = 10 
  DCR_EP_HOST          = 192.168.255.12 
  DCR_EP_PORT          = 9351 
  DCR_EP_ASM_LOAD_PATH = /dev/raw 
   
[GRP] 
  DCR_GRP_TYPE         = DB 
  DCR_GRP_NAME         = GRP_RAC 
  DCR_GRP_N_EP         = 2  
  DCR_GRP_DSKCHK_CNT   = 60 
[GRP_RAC] 
  DCR_EP_NAME          = RAC0 
  DCR_EP_SEQNO         = 0   
  DCR_EP_PORT          = 5236
  DCR_CHECK_PORT       = 9741 
[GRP_RAC] 
  DCR_EP_NAME          = RAC1 
  DCR_EP_SEQNO         = 1  
  DCR_EP_PORT          = 5236
  DCR_CHECK_PORT       = 9742

初始化磁盘组

启动dmasmcmd工具

cd /home/dmdba/dmdbms/dmdbms/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 '/home/dmdba/dmdbms/config/dmdcr_cfg.ini' identified by 'abcd'

init votedisk '/dev/raw/raw2' from '/home/dmdba/dmdbms/config/dmdcr_cfg.ini'

配置dmasvrmal.ini和dmdcr.ini文件

dmasvrmal.ini文件

[MAL_INST1]
    MAL_INST_NAME              = ASM0
    MAL_HOST                    = 192.168.255.11
    MAL_PORT                    = 7236
[MAL_INST2]
    MAL_INST_NAME              = ASM1
    MAL_HOST                    = 192.168.255.12
    MAL_PORT                    = 7237

dmdcr.ini文件

DMDCR_PATH     = /dev/raw/raw1
DMDCR_MAL_PATH = /home/dmdba/dmdbms/config/dmasvrmal.ini  
DMDCR_SEQNO   = 0

#自动拉起设置
#DMDCR_ASM_RESTART_INTERVAL = 30
#DMDCR_ASM_STARTUP_CMD = service DmASMSvrService start

#DMDCR_DB_RESTART_INTERVAL = 60
#DMDCR_DB_STARTUP_CMD = service DmServiceRAC0 start
DMDCR_PATH     = /dev/raw/raw1
DMDCR_MAL_PATH = /home/dmdba/dmdbms/config/dmasvrmal.ini  
DMDCR_SEQNO   = 1

#自动拉起设置
#DMDCR_ASM_RESTART_INTERVAL = 30
#DMDCR_ASM_STARTUP_CMD = service DmASMSvrService start

#DMDCR_DB_RESTART_INTERVAL = 60
#DMDCR_DB_STARTUP_CMD = service DmServiceRAC0 start

完成所有配置后,可取消注释,实现自动拉起功能

启动CSS、ASM服务

启动CSS

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

启动ASM

./dmasmsvr DCR_INI=/home/dmdba/dmdbms/config/dmdcr.ini

创建DMASM磁盘组

[/home/dmdbms/bin]# ./dmasmtool DCR_INI=/home/dmdba/dmdbms/config/dmdcr.ini
#创建日志磁盘组,10s
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
#创建数据磁盘组
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'

配置dminit.ini文件

db_name 			= rac
system_path 		= +DMDATA/data
system 			= +DMDATA/data/rac/system.dbf
system_size 		= 128
roll 			= +DMDATA/data/rac/roll.dbf
roll_size 		= 128
main 			= +DMDATA/data/rac/main.dbf
main_size 		= 128
ctl_path 		= +DMDATA/data/rac/dm.ctl
ctl_size 		= 8
log_size 		= 2048
dcr_path 		= /dev/raw/raw1								
dcr_seqno 		= 0
auto_overwrite	= 1
PAGE_SIZE         = 16

[RAC0]	
config_path 		    = /home/dmdba/dmdbms/config/rac0_config
port_num 				= 5236
mal_host 				= 192.168.255.11
mal_port 				= 9340
log_path 				= +DMLOG/log/rac0_log01.log
log_path 				= +DMLOG/log/rac0_log02.log
[RAC1]	
config_path 		    = /home/dmdba/dmdbms/config/rac1_config
port_num 				= 5236
mal_host 				= 192.168.255.12
mal_port 				= 9341
log_path 				= +DMLOG/log/rac1_log01.log
log_path 				= +DMLOG/log/rac1_log02.log

初始化数据库

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

配置远程归档

达梦数据库提供了远程归档,解决了备份还原过程中访问其他节点归档日志文件的问题

[ARCHIVE_LOCAL1]
  ARCH_TYPE     = LOCAL
  ARCH_DEST     = /home/dmdba/dmdbms/arch_0
  ARCH_FILE_SIZE        = 1024
  ARCH_SPACE_LIMIT      = 40960
[ARCH_REMOTE1]
  ARCH_TYPE     = REMOTE
  ARCH_DEST     = RAC1
  ARCH_INCOMING_PATH   =/home/dmdba/dmdbms/arch_0_remote
  ARCH_FILE_SIZE        = 1024
  ARCH_SPACE_LIMIT      = 40960

[ARCHIVE_LOCAL1]
  ARCH_TYPE     = LOCAL
  ARCH_DEST     = /home/dmdba/dmdbms/arch_1
  ARCH_FILE_SIZE        = 1024
  ARCH_SPACE_LIMIT      = 40960
[ARCH_REMOTE1]
  ARCH_TYPE     = REMOTE
  ARCH_DEST     = RAC0
  ARCH_INCOMING_PATH   =/home/dmdba/dmdbms/arch_1_remote
  ARCH_FILE_SIZE        = 1024
  ARCH_SPACE_LIMIT      = 40960

启动DMSERVER服务

./dmserver  /home/dmdba/dmdbms/config/rac0_config/dm.ini dcr_ini=/home/dmdba/dmdbms/config/dmdcr.ini
./dmserver   /home/dmdba/dmdbms/config/rac1_config/dm.ini dcr_ini=/home/dmdba/dmdbms/config/dmdcr.ini

创建后台启动脚本

cd /home/dmdba/dmdbms/dmdbms/script/root

创建CSS服务:

./dm_service_installer.sh -t dmcss -p _RAC0 -i /home/dmdba/dmdbms/config/dmdcr.ini

创建DMASM服务:

./dm_service_installer.sh -t dmasmsvr -p _RAC0 -i /home/dmdba/dmdbms/config/dmdcr.ini -y DmCSSService_RAC0

创建DMSERVER服务:

./dm_service_installer.sh -t dmserver -p _RAC0 -i /home/dmdba/dmdbms/config/rac0_config/dm.ini  -d /home/dmdba/dmdbms/config/dmdcr.ini -y DmASMSvrService_RAC0

配置监视器

创建dmcssm.ini文件

CSSM_OGUID      = 63635
CSSM_CSS_IP     = 192.168.0.100:9341
CSSM_CSS_IP     = 192.168.0.101:9343
CSSM_LOG_PATH   = ../log	
CSSM_LOG_FILE_SIZE      = 32
CSSM_LOG_SPACE_LIMIT    = 0

自动化部署DSC

DSC自动部署脚本的实现逻辑是通过配置文件dm8_dsc.conf,设置好搭建集群用到的目录、端口号、部署机器的IP 等各种信息,然后通过调用bin/config.py 来读取配置文件dm8_dsc.conf,创建与.conf 文件同名的目录dm8_dsc,生成集群的各种配置文件及操作文件Shell 脚本。然后通过调用Step_xx.sh 之类的shell 脚本,实现在远程linux 服务器部署DSC 集群的步骤。
该部署工具是串行的,前面的步骤必须成功,若某一步骤出错,则后面的步骤没有执行的必要性。

自动化部署目录结构:

在这里插入图片描述

裸设备的绑定同上

配置dm8_dsc.conf

#请养成用dmdba用户的习惯
#此部署工具需要在Linux系统上运行,确保该Linux机器具备python2.7的运行环境,并且可通过外网连接到集群所有机器。集群机器必须是linux机器,支持ssh。
#groupadd dinstall
#useradd -m -s /bin/bash -g dinstall dmdba
#passwd dmdba
#配置文件

[GLOBAL]
DM_HOME          = /mppdata/dsc/bin                       #根据实际修改
DB_PATH          = /mppdata/dsc/rac_config                #DSC 节点的目录,里面存放控制文件、配置文件等
ARCH_PATH        = /mppdata/dsc/arch                      #DSC 节点的本地归档、远程归档路径
BAK_PATH         = /mppdata/dsc/dbbak                     #DSC 节点数据库备份的默认路径
DCR_ASM_PATH     = /dev/raw/raw1                          #操作系统绑定的dcr路径
VOTE_ASM_PATH    = /dev/raw/raw2                          #操作系统绑定的vote路径
LOG_ASM_PATH     = /dev/raw/raw3                          #操作系统绑定的redo日志路径
DATA_ASM_PATH    = /dev/raw/raw4                          #操作系统绑定的数据库数据文件路径

[ARCH]
ARCH_INI_OPEN    = 1                                      #是否开启DSC节点的本地归档及远程归档,1开启,0不开启
ARCH_SPACE_LIMIT = 10240                                  #单个节点的本地归档或远程归档的大小空间限制,如是4节点DSC,则需要预留4*ARCH_SPACE_LIMIT的空间。

SSH_PORT         = 22                                     #远程Linux服务器的ssh端口号,一般为22,某些客户出于安全考虑,会更改ssh的默认连接端口

[DSC_DMINIT]                                              #初始化DSC实例的一些参数
DB_NAME             = DSC                                 #实例名称
SYS_PATH            = data                                #在ASM存储中的数据文件路径,注意大小写
SYSTEM_SIZE         = 128                                 #SYSTEM.dbf的大小
ROLL_SIZE           = 10000                               #Roll表空间的大小
MAIN_SIZE           = 128                                 #MAIN表空间的大小
CTL_SIZE            = 8                                   #dm.ctl文件的大小
LOG_SIZE            = 2048                                #redo文件的大小,由于dsc各个节点的redo文件名称不一致,后续更改redo大小需要每个节点依次修改,建议此处直接设置最大值2048
AUTO_OVERWRITE      = 1                                   #ASM中的同名文件是否覆盖
PAGE_SIZE           = 32                                  #初始化实例时的页大小
EXTENT_SIZE         = 32                                  #初始化实例时的簇大小
DB_INIT_PARA        = CASE_SENSITIVE=1,UNICODE_FLAG=0     #其它初始化参数,需要什么参数按格式增加即可,多个参数以逗号隔开

[DSC_CONF]
DCR_OGUID           = 200826                              #DCR的oguid,取6位数字即可,常用规律为当前日期

[DSC_PORT]                               #搭建集群时所用到的各个端口号
DB_INST_PORT                = 11236      #DSC实例端口号
DB_MAL_PORT                 = 11246      #DSC实例的MAL通信端口号
DCR_CHECK_PORT              = 11256      #DCR 检查端口号。检查实例是否活动的时候用,各实例不能冲突,故该端口会随着实例自动+1
ASM_MAL_PORT                = 11266      #ASM 通信的端口号
ASM_DCR_EP_PORT             = 11276      #ASM 节点 TCP 监听端口。各实例不能冲突,故该端口会随着实例自动+1
CSS_DCR_EP_PORT             = 11286      #CSS 节点 TCP 监听端口

[DSC_TIME]                                 #DSC集群一些心跳故障认证时间
DB_DCR_GRP_DSKCHK_CNT       = 60           #心跳,DSC DB 故障认定时间
ASM_DCR_GRP_DSKCHK_CNT      = 60           #心跳,DSC ASM 故障认定时间
CSS_DCR_GRP_DSKCHK_CNT      = 60           #心跳,DSC CSS 故障认定时间
DMDCR_ASM_RESTART_INTERVAL  = 0            #DMCSS 认定 DMASM 节点故障重启的时间间隔(取值 0~86400s),0则不会执行拉起
DMDCR_DB_RESTART_INTERVAL   = 0            #DMCSS 认定 DMDSC 节点故障重启的时间间隔(取值 0~86400s),0则不会执行拉起
DMDCR_AUTO_OPEN_CHECK       = 60           #指定时间内如果节点实例未启动,DMCSS 会自动将节点踢出集群环境,单位为秒
MAL_CHECK_INTERVAL          = 61           #MAL 链路检测时间间隔,取值范围(0s-1800s)为了防止误判,DMDSC 集群中,建议将配置值>= DB_DCR_GRP_DSKCHK_CNT。
MAL_CONN_FAIL_INTERVAL      = 10           #判定 MAL 链路断开的时间,取值范围(2s-1800s)


[ASM]
DCR_EP_SHM_KEY              = 42424     #共享内存标识,不同实例的该值不一样,故该端口会随着实例自动+1
DCR_EP_SHM_SIZE             = 10        #共享内存大小

[MAIL]#一般不用改参数,以128GB内存为例
MAL_SYS_BUF_SIZE=6000
MAL_BUF_SIZE=3000
MAL_VPOOL_SIZE=5000
MAL_COMPRESS_LEVEL=0

#各节点配置
[DSC1]
DSC_MAL_HOST = 192.168.18.18     #内网IP
DSC_INST_HOST = 192.168.104.18   #外网IP
DSC_INST_UID  = dmdba
DSC_INST_PWD  = hust4400

[DSC2]
DSC_MAL_HOST = 192.168.18.17
DSC_INST_HOST = 192.168.104.17
DSC_INST_UID  = dmdba
DSC_INST_PWD  = hust4400

操作流程

  1. 运行部署脚本dm8_dsc.py,输入配置文件dm8_dsc.conf
  2. 输入h ,打印帮助菜单
  3. 运行01,存储ssh 的相关host keys 等信息
  4. 运行02 ,检查集群机器间的网络是否正常
  5. 输入03 操作,即可一键部署集群

以上为手动和自动部署DSC集群的两种不同方式,各有利弊,自动化部署简单便捷,但需要了解脚本含义,以便报错可以修改调整修改;手动部署更能明确DSC集群实现的原理,按步骤操作,报错调整更为直接,但是配置较为麻烦。此外,两种方式后台脚本的创建原理还有所不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值