DMv8共享存储集群部署

DMv8共享存储集群部署

环境说明

操作系统:centos7.6

服务器:2台虚拟机

达梦数据库版本:达梦V8

  • 安装前准备工作

参考达梦官方文档:https://eco.dameng.com/document/dm/zh-cn/ops/DSC-installation-cluster.html#%E4%B8%80%E3%80%81%E4%B8%A4%E8%8A%82%E7%82%B9%20DSC%20%E9%9B%86%E7%BE%A4%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2

1、系统环境(all nodes)

1.1 关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

1.2 关闭selinux

##临时关闭 SELinux:

[root@localhost ~]# setenforce 0

##永久关闭 SELinux

改配置文件:/etc/selinux/config,修改 SELINUX=disabled

1.3 关闭swap

内存足够的情况下关闭,不足的话可以不用关闭。

1.4 关闭透明大页

(1) 查看透明大页内存

##使用下图中命令查看当前操作系统透明大页内存配置。

[root@]# grep -i huge /proc/meminfo

[root@]# cat /sys/kernel/mm/transparent_hugepage/enabled

(2) 关闭透明大页内存

##通过修改 grub 配置,在 “GRUB_CMDLINE_LINUX=” 配置参数结尾加入 “transparent_hugepage=never”,可以永久关闭透明大页内存。

[root@~]# vim /etc/default/grub

(3) 重新生成 grub 配置

##如果操作系统安装时,使用 Legacy 模式引导安装,则使用以下命令重新生成 grub。

[root@~] # grub2-mkconfig -o /boot/grub2/grub.cfg

(4) 生成 grub 后,重启操作系统查看配置

可以看到系统中目前透明大页内存为 0,并且禁用透明大页内存(never)。查看 /sys/kernel/mm/transparent_hugepage/defrag 配置文件缺省配置为 “madvise”。

1.5 调整 limits.conf 参数

##编辑 limits.conf 文件

[root@~]# vi /etc/security/limits.conf

##在最后面添加以下内容

* soft nproc 10240

* hard nproc 10240

 或者指定用户

dmdba soft nproc 10240

dmdba hard nproc 10240

dmdba soft nofile 65536

dmdba hard nofile 65536

dmdba hard data unlimited

dmdba soft data unlimited

dmdba hard fsize unlimited

dmdba soft fsize unlimited

dmdba soft core unlimited

dmdba hard core unlimited

##重启操作系统

[root@]# reboot

##再次确认

[dmdba@]# ulimit –a

2、集群规划

2.1 本地磁盘规划

名称

节点1(obs1)

节点2(obs2)

备注

数据库安装目录

/dm/dmdbms

/dm/dmdbms

数据库安装路径,存放数据库运行日志等信息

数据库备份目录

/dm/dmbak

/dm/dmbak

用于存放数据库备份文件

数据库SQL日志目录

/dm/dmsqllog

/dm/dmsqllog

用于存放数据库 dmsql 日志

集群配置文件目录

/dm/dsc_config/DSC0

/dm/dsc_config/DSC1

用于存放数据库集群配置文件

系统core目录

/dm/core

/dm/core

用户存放系统的 core 文件

2.2 共享存储规划

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

其中,VOTE 是表决磁盘,一个集群一个表决磁盘。DCR DM 集群注册表的简称,用于存储、维护集群配置的详细信息,一个集群一个注册表。生产环境中,共享存储一般由操作系统管理员进行划分。

名称

拟定配置

分区大小(GB)

备注

Vote磁盘

/dev/asm-dmi

2G

记录集群成员信息,集群通过 Voting Disk 进行心跳检测,确定集群中节点的状态

DCR磁盘

/dev/asm-dmh

2G

用于存储、维护集群配置的详细信息,整个集群环境共享 DCR 配置信息

Redo日志盘

/dev/asm-dme

120

用于存储数据库集群 Redo log

数据盘

/dev/asm-dmd

120

用于存放数据

归档日志盘

/dev/asm-dmf

120

用于存储数据库集群各实例的归档日志

2.3 端口规划

数据库服务器名称

obs1

obs2

业务服务名

[db_service_name]待定

业务IP

192.192.103.125

192.192.103.126

内部数据交换网络

11.11.11.125

11.11.11.126

dmdcr_cfg

CSS

DCR_EP_NAME

CSS0

CSS1

DCR_EP_HOST

11.11.11.125

11.11.11.126

DCR_EP_PORT

11286

11286

ASM

DCR_EP_NAME

ASM0

ASM1

DCR_EP_HOST

11.11.11.125

11.11.11.126

DCR_EP_PORT

11276

11276

DB

DCR_EP_NAME

DSC0

DSC1

DCR_EP_PORT

5236

5236

DCR_CHECK_PORT

11256

11256

dmasvrmal

MAL_INST_NAME

ASM0

ASM1

MAL_HOST

11.11.11.125

11.11.11.126

MAL_PORT

11266

11266

dmini

实例名

DSC0

DSC1

PORT_NUM

5236

5236

MAL_HOST

11.11.11.125

11.11.11.126

MAL_PORT

11246

11246

OGUID

210715

2.4 块设备UUID绑定(两节点操作)

Linux系统一般采用udev或者multipath方式进行绑定,建议有限选择udev方式绑定块设备。

#lsblk 查看共享块设备

--创建脚本

#vi asmdisk.sh

for i in d e f g h i j;

do

echo "KERNEL==\"sd*\",SUBSYSTEM==\"block\",PROGRAM==\"/lib/udev/scsi_id -g -u -d /dev/\$name\",RESULT==\"`/lib/udev/scsi_id -g -u -d /dev/sd$i`\",SYMLINK+=\"asm-dm$i\",OWNER=\"dmdba\",GROUP=\"dmdba\",MODE=\"0660\""

done

--执行脚本

#chmod +x asmdisk.sh

#sh asmdisk.sh 执行后输出以下内容

#创建99-dm-asmdevices.rules文件,复制asmdisk.sh脚本执行输出的内容到文件

#vi /etc/udev/rules.d/99-dm-asmdevices.rules

KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36000c29c5146cd7264c3a584c8109e97",SYMLINK+="asm-dmd",OWNER="dmdba",GROUP="dmdba",MODE="0660"

KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36000c29db5ee301775480608431719aa",SYMLINK+="asm-dme",OWNER="dmdba",GROUP="dmdba",MODE="0660"

KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36000c299c0abe00e06de69b82481d2af",SYMLINK+="asm-dmf",OWNER="dmdba",GROUP="dmdba",MODE="0660"

KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36000c29f9bc4ec738ad7afd3694b1645",SYMLINK+="asm-dmg",OWNER="dmdba",GROUP="dmdba",MODE="0660"

KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36000c296432bbbe66f645313d6f6d11c",SYMLINK+="asm-dmh",OWNER="dmdba",GROUP="dmdba",MODE="0660"

KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36000c29f793b3f0fa23f4ac159ab7971",SYMLINK+="asm-dmi",OWNER="dmdba",GROUP="dmdba",MODE="0660"

KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36000c2982bf7b637bf63c2a2f2bf376b",SYMLINK+="asm-dmj",OWNER="dmdba",GROUP="dmdba",MODE="0660"

--重启udev服务

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

udevadm control --reload-rules

  • 集群搭建

2.1 创建用户、目录、安装数据库软件

obs1 和 obs2主机均将数据库安装在 /dm/dmdbms 目录下。

2.1.1 创建用户、目录(两节点操作)

#groupadd -g 1111 dmdba

#groupadd -g dmdba -u 1111 dmdba

#echo “dmdba”|passwd --stdin dmdba

#mkdir -p /dm/{dmdbms,dsc_config/DSC0,dmbak,dmsqllog,core }  --节点1

#mkdir -p /dm/{dmdbms,dsc_config/DSC1,dmbak,dmsqllog,core }  --节点2

#chown -R dmdba. /dm

#chmod -R 777 /dm

2.1.2 安装数据库软件(两节点操作)

--挂载镜像

#mount -o loop dm8_20240528_x86_rh7_64_ent_8.1.3.140_pack5.iso /mnt

[root@obs1 dm]# cd /mnt

[root@obs1 mnt]# ls

DM8 Install.pdf  DMInstall.bin

[root@obs1 mnt]# export DISPLAY=192.168.102.9:0.0

[root@obs1 mnt]# ./DMInstall.bin

Extract install files........

--选择安装组件

数据库软件安装程序提供四种安装方式:典型安装服务器安装客户端安装自定义安装,用户可根据实际情况灵活地选择。如下图所示:

典型安装包括:服务器、客户端、驱动、用户手册、数据库服务。
服务器安装包括:服务器、驱动、用户手册、数据库服务。
客户端安装包括:客户端、驱动、用户手册。
自定义安装包括:用户根据需求勾选组件,可以是服务器、客户端、驱动、用户手册、数据库服务中的任意组合。
生产环境可以根据实际需求选择,一般情况下选择"典型安装"即可

Root用户下执行脚本,注册DmAPService服务

#/dm/dmdbms/script/root/root_installer.sh

2.2 配置dmdcr_cfg.ini

obs1和obs2配置相同。

[dmdba@obs1 ~]$ vi /dm/dsc_config/dmdcr_cfg.ini

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

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

  DCR_EP_PORT              = 11286   ##CSS 端口

[GRP_CSS]

  DCR_EP_NAME            = CSS1

  DCR_EP_HOST             = 11.11.11.126

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

  DCR_EP_PORT               = 11276  ##ASM 端口

  DCR_EP_ASM_LOAD_PATH   = /dev

[GRP_ASM]

  DCR_EP_NAME              = ASM1

  DCR_EP_SHM_KEY         = 42425

  DCR_EP_SHM_SIZE        = 1024

  DCR_EP_HOST               = 11.11.11.126

  DCR_EP_PORT               = 11276

  DCR_EP_ASM_LOAD_PATH   = /dev

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

2.3 初始化磁盘组

在 obs1 机器上进行如下操作

[dmdba@obs1 ~]$/dm/dmdbms/bin/dmasmcmd

dmasmcmd V8

ASM>create dcrdisk '/dev/asm-dmi' 'dcr'

[TRACE]The ASM initialize dcrdisk /dev/asm-dmi to name DMASMdcr

Used time: 269.520(ms).

ASM>create votedisk '/dev/asm-dmh' 'vote'

[TRACE]The ASM initialize votedisk /dev/asm-dmh to name DMASMvote

Used time: 238.499(ms).

ASM>init dcrdisk '/dev/asm-dmi' from '/dm/dsc_config/dmdcr_cfg.ini' identified by 'dmdba'

[TRACE]DG 126 alloc extent for inode (0, 0, 1)

[TRACE]DG 126 alloc 4 extents for 0xfe000002 (0, 0, 2)->(0, 0, 5)

Used time: 00:00:01.581.

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

[TRACE]DG 125 alloc extent for inode (0, 0, 1)

[TRACE]DG 125 alloc 4 extents for 0xfd000002 (0, 0, 2)->(0, 0, 5)

Used time: 396.032(ms).

ASM>create asmdisk '/dev/asm-dmd' 'DATA0'

[TRACE]The ASM initialize asmdisk /dev/asm-dmd to name DMASMDATA0

Used time: 253.576(ms).

ASM>create asmdisk '/dev/asm-dme' 'LOG0'

[TRACE]The ASM initialize asmdisk /dev/asm-dme to name DMASMLOG0

Used time: 250.918(ms).

ASM>create asmdisk '/dev/asm-dmf' 'ARCH0'

[TRACE]The ASM initialize asmdisk /dev/asm-dmf to name DMASMARCH0

Used time: 258.515(ms).

2.4 配置 dmasvrmal.ini

[dmdba@obs1 ~]$vi /dm/dsc_config/dmasvrmal.ini

[MAL_INST0]

MAL_INST_NAME            = ASM0

MAL_HOST                  = 11.11.11.125  #心跳地址

MAL_PORT                  = 11266  #MAL 监听端口

[MAL_INST1]

MAL_INST_NAME            = ASM1

MAL_HOST                  = 11.11.11.126

MAL_PORT                  = 11266

将该文件分别拷贝至obs1 和obs2机器下的 /dm/dsc_config/DSC0 和 /dm/dsc_config/DSC1 目录下。

2.5 配置 dmdcr.ini 文件

  1. obs1机器配置 dmdcr.ini,dmdcr_seqno 为 0

[dmdba@obs1]$ vi /dm/dsc_config/dmdcr.ini

DMDCR_PATH                   = /dev/dm/asm-dmi

DMDCR_MAL_PATH           = /dm/dsc_config/DSC0/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     = /dm/dsc_config/DmAsmService_DSC0 start

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

##DMDCR_DB_STARTUP_CMD      = /dm/dsc_config/DmService_DSC0 start

  1. obs2机器配置 dmdcr.ini,dmdcr_seqno 为 1

[dmdba@obs2]$ vi /dm/dsc_config/dmdcr.ini

DMDCR_PATH                   = /dev/dm/asm-dmi

DMDCR_MAL_PATH               = /dm/dsc_config/DSC1/dmasvrmal.ini

DMDCR_SEQNO                  = 1

DMDCR_AUTO_OPEN_CHECK        = 111

DMDCR_ASM_TRACE_LEVEL        = 2

##DMDCR_ASM_RESTART_INTERVAL   = 60

##DMDCR_ASM_STARTUP_CMD        = /dm/dsc_config/DmAsmServiceDSC1 start

##DMDCR_DB_RESTART_INTERVAL    = 60  

##DMDCR_DB_STARTUP_CMD         = /dm/dsc_config/DmServiceDSC1 start

注意

当前为手动拉起obs1机器和obs2机器的ASM和DMSERVER服务。待集群配置完成后,再修改为自动拉起(删除 dmdcr.ini 中的“##”号即可)。在实际项目中集群出现异常时需排查诱因,故在生产环境上一般不建议配置自动拉起

2.6 启动 DMCSS、DMASM 服务

-- 2 个节点分别启动 dmcss 命令

$ nohup /dm/dmdbms/bin/dmcss DCR_INI=/dm/dsc_config/dmdcr.ini &

$ nohup /dm/dmdbms/bin/dmcss DCR_INI=/dm/dsc_config/dmdcr.ini &

-- 2 个节点分别启动dmasmsvr命令

$ nohup /dm/dmdbms/bin/dmasmsvr DCR_INI=/dm/dsc_config/dmdcr.ini &

$ nohup /dm/dmdbms/bin/dmasmsvr DCR_INI=/dm/dsc_config/dmdcr.ini &

说明:如果 DMCSS 配置有自动拉起 dmasmsvr 的功能,可以等待 DMCSS 自动拉起 dmasmsvr 程序,不需要手动启动。

2.7 创建 DMASM 磁盘组

##在obs1节点启动 dmasmtool 工具

[dmdba@obs1]$ /dm/dmdbms/bin/dmasmtool DCR_INI=/dm/dsc_config/dmdcr.ini

##输入下列语句创建 DMASM 磁盘组

##创建日志磁盘组

ASM> create diskgroup 'DMLOG' asmdisk '/dev/asm-dme'

##创建数据磁盘组

ASM> create diskgroup 'DMDATA' asmdisk '/dev/asm-dmd'

##创建归档磁盘组

ASM> create diskgroup 'DMARCH' asmdisk '/dev/asm-dmf'

##查看ASM磁盘组及磁盘信息

或者登录数据库实例,查看以下视图:

v$asmgroup、v$asmdisk、v$asmfile

2.8 初始化实例

obs1和obs2机器配置相同

##创建 dminit.ini 文件

DB_NAME                  = DSC

SYSDBA_PWD               = SYSDBA_PWD

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/asm-dmi

DCR_SEQNO                = 0

AUTO_OVERWRITE           = 1

PAGE_SIZE                = 32

EXTENT_SIZE              = 16

BLANK_PAD_MODE           = 1

[DSC0]

CONFIG_PATH              = /dm/dsc_config/DSC0

PORT_NUM                 = 5236

MAL_HOST                 = 11.11.11.125

MAL_PORT                 = 11246

LOG_PATH                 = +DMLOG/DSC0_LOG01.log

LOG_PATH                 = +DMLOG/DSC0_LOG02.log

[DSC1]

CONFIG_PATH              = /dm/dsc_config/DSC1

PORT_NUM                 = 5236

MAL_HOST                 = 11.11.11.126

MAL_PORT                 = 11246

LOG_PATH                 = +DMLOG/DSC1_LOG01.log

LOG_PATH                 = +DMLOG/DSC1_LOG02.log

##在obs1节点执行初始化 db 命令

[dmdba@obs1 ~]$ /dm/dmdbms/bin/dminit control=/dm/dsc_config/dminit.ini

##拷贝文件到obs2节点

[dmdba@obs1~]$ scp -r /dm/dsc_config/DSC1 dmdba@11.11.11.126:/dm/dsc_config/

2.9 配置 dmarch.ini 文件

  • obs1节点

##修改 dm.ini

[dmdba@obs1 ~]$ vi /dm/dsc_config/DSC0/dm.ini

ARCH_INI                 = 1

##创建 dmarch.ini

[dmdba@~]$ vi /dm/dsc_config/DSC0/dmarch.ini

ARCH_WAIT_APPLY = 0

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = +DMARCH/ARCH/DSC0/arch

ARCH_FILE_SIZE = 2048

ARCH_SPACE_LIMIT = 102400

[ARCHIVE_REMOTE1]

ARCH_TYPE = REMOTE

ARCH_DEST = DSC1

ARCH_INCOMING_PATH = +DMARCH/ARCH/DSC1/arch

ARCH_FILE_SIZE = 2048

ARCH_SPACE_LIMIT = 102400

  • obs2节点

[dmdba@obs2 ~]$ vi /dm/dsc_config/DSC1/dm.ini

ARCH_INI

##创建 dmarch.ini

[dmdba@~]$ vi /dm/dsc_config/DSC1/dmarch.ini

ARCH_WAIT_APPLY = 0

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = +DMARCH/ARCH/DSC1/arch

ARCH_FILE_SIZE = 2048

ARCH_SPACE_LIMIT = 102400

[ARCHIVE_REMOTE1]

ARCH_TYPE = REMOTE

ARCH_DEST = DSC0

ARCH_INCOMING_PATH = +DMARCH/ARCH/DSC0/arch

ARCH_FILE_SIZE = 2048

ARCH_SPACE_LIMIT = 102400

2.10 启动 DMSERVER 服务

如果 DMCSS 配置有自动拉起 dmserver 的功能,可以等待 DMCSS 自动拉起实例,不需要手动启动。如果需要手动启动,可参考以下步骤:

##obs1

[dmdba@obs1 ~]$ nohup /dm/dmdbms/bin/dmserver /dm/dsc_config/DSC0/dm.ini dcr_ini=/dm/dsc_config/dmdcr.ini &

##obs2

[dmdba@obs2 ~]$ nohup /dm/dmdbms/bin/dmserver /dm/dsc_config/DSC1/dm.ini dcr_ini=/dm/dsc_config/dmdcr.ini &

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

##obs1(root用户执行)

#/dm/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /dm/dsc_config/dmdcr.ini -p CSS

#/dm/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /dm/dsc_config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM

#/dm/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dsc_config/DSC0/dm.ini -dcr_ini /dm/dsc_config/dmdcr.ini -y DmASMSvrServiceASM.service  -p DSC

##obs2(root用户执行)

#/dm/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /dm/dsc_config/dmdcr.ini -p CSS

#/dm/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /dm/dsc_config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM

#/dm/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dsc_config/DSC1/dm.ini -dcr_ini /dm/dsc_config/dmdcr.ini -y DmASMSvrServiceASM.service  -p DSC

备注:obs1机器、obs2机器删除自启可参考以下命令。

[root@~]# /dm/dmdbms/script/root/dm_service_uninstaller.sh -n DmCSSServiceCSS

[root@~]# /dm/dmdbms/script/root/dm_service_uninstaller.sh -n DmASMSvrServiceASM

[root@~]# /dm/dmdbms/script/root/dm_service_uninstaller.sh -n DmServiceDSC

2.12 配置监视器

  • 创建 dmcssm.ini

## obs1 机器、obs2机器配置相同

[dmdba@obs1 ~]$vi /dm/dmdbms/bin/dmcssm.ini

CSSM_OGUID                 = 210715

CSSM_CSS_IP                = 11.11.11.125:11286

CSSM_CSS_IP                = 11.11.11.126:11286

CSSM_LOG_PATH              = ../log

CSSM_LOG_FILE_SIZE         = 512

CSSM_LOG_SPACE_LIMIT       = 2048

  • 注册服务

[root@~]# /dm/dmdbms/script/root/dm_service_installer.sh -t dmcssm -cssm_ini /dm/dmdbms/bin/dmcssm.ini -p Monitor

##备注:删除自启

[root@~]# /dm/dmdbms/script/root/dm_service_uninstaller.sh -n DmCSSMonitorServiceMonitor

  • 监视器使用

命令

含义

show

查看所有组的信息

show config

查看 dmdcr_cfg.ini 的配置信息

show monitor

查看当前连接到主 CSS 的所有监视器信息

help

更多指令可通过 help 命令获取

2.13 授权 setcap(两节点操作)

为了优化集群在操作系统假死时对节点状态的判断机制,设置 setcap 权限.

##root 用户执行:

setcap cap_net_raw,cap_net_admin=eip  /dm/dmdbms/bin/dmserver

setcap cap_net_raw,cap_net_admin=eip  /dm/dmdbms/bin/dmasmsvr

##验证 setcap,有输出则授权成功:

[root@obs1 ~]# getcap /dm/dmdbms/bin/dmserver

/dm/dmdbms/bin/dmserver = cap_net_admin,cap_net_raw+eip

[root@obs1 ~]# getcap /dm/dmdbms/bin/dmasmsvr

/dm/dmdbms/bin/dmasmsvr = cap_net_admin,cap_net_raw+eip

每节点依次通过“kill -11 dmserver进程号验证core文件可正常生成。

2.14 启停服务

1. 启动监视器(两节点操作)

--前台启动:

[dmdba@~]# /dm/dmdbms/bin/dmcssm INI_PATH=/dm/dmdbms/bin/dmcssm.ini

--后台启动:

[dmdba@~]# /dm/dmdbms/bin/DmCSSMonitorServiceMonitor start

通过以上命令前台启动,进入监视器执行 show 命令,可查看 DSC 集群运行状态,如下图所示

2. 启停集群(两节点操作)

##启动:obs1/2 机器 CSS

obs1/2机器:[dmdba@~]# /dm/dmdbms/bin/DmCSSServiceCSS start

##说明:CSS 启动后 30 秒自动拉起 ASM,60 秒自动拉起 DMSERVER。如果没有配置自动拉起asm和DMSERVER服务,则需要手动在各个节点启动ASM和DMSERVER服务,如下

obs1/2机器[dmdba@~]# /dm/dmdbms/bin/DmASMSvrServiceASM start

obs1/2机器[dmdba@~]# /dm/dmdbms/bin/DmServiceDSC start

##详细进程如下如所示:

##停止:依次停止obs1/2机器DMSERVER→obs1/2机器ASM→obs1/2机器CSS

obs1/2机器[dmdba@~]# /dm/dmdbms/bin/DmServiceDSC stop

obs1/2机器[dmdba@~]# /dm/dmdbms/bin/DmASMSvrServiceASM stop

obs1/2机器[dmdba@~]# /dm/dmdbms/bin/DmCSSServiceCSS stop

说明

  1. DSC 正常停库必须 2 节点同时停止,根据目前脚本配置,CSS 启动后 60 秒自动拉起 ASM,60 秒自动拉起 DMSERVER,所以停止 DMSERVER 和 ASM 后,要尽快停止 CSS,避免被自动拉起。
  2. 服务全部停止后,要检查后台进程是否全部停止。

2.15 登录集群数据库

#DSC0为控制节点,DSC为normal节点,两个节点都可以正常提供数据读写服务。

2.16 服务名方式登录

##dm_svc.conf文件默认位置在/etc/目录下

[dmdba@obs1 ~]$ ls -l /etc/dm_svc.conf

-rw-rw-r-- 1 dmdba dmdba 88 Jul 25 17:15 /etc/dm_svc.conf

修改文件,添加如下内容(需要访问的client节点都要修改该文件,当前client即数据库节点本身)

[dmdba@obs1 ~]$ vi /etc/dm_svc.conf

TIME_ZONE=(480)

LANGUAGE=(EN)

dmtest_cls=(192.192.103.125:5236,192.192.103.126:5236)

[dmdba@obs2 ~]$ vi /etc/dm_svc.conf

TIME_ZONE=(480)

LANGUAGE=(EN)

dmtest_cls=(192.192.103.125:5236,192.192.103.126:5236)

添加数据库两个节点的地址及端口,服务名自定义即可,通过服务名连接会自动使用负载均衡根据负载路由session请求连接到不同的节点。

##obs1节点通过服务名登录数据库

[dmdba@obs1 ~]$ disql sysdba/SYSDBA_PWD@dmtest_cls

Server[192.192.103.125:5236]:mode is normal, state is open

login used time : 5.526(ms)

disql V8

SQL>

## obs2节点通过服务名登录数据库

[dmdba@obs2 ~]$ disql sysdba/SYSDBA_PWD@dmtest_cls

Server[192.192.103.126:5236]:mode is normal, state is open

login used time : 10.841(ms)

disql V8

SQL>

##查看会话连接信息,如下所示

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

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

相关文章

如何为 DigitalOcean 上的托管数据库收集可观测指标

DigitalOcean 在 2024 年 5 月开始支持在托管数据库(PostgreSQL、MySQL、Redis和Kafka)中收集可观测指标。我们将在本偏内容中,告诉大家如何使用部署在 DigitalOcean App Platform 上的网络应用程序,为 DigitalOcean 上的 Postgre…

数据恢复教程:如何从硬盘、SD存储卡、数码相机中恢复误删除数据。

您正在摆弄 Android 设备。突然,您意外删除了一张或多张图片。不用担心,您总能找到一款价格实惠的数据恢复应用。这款先进的软件可帮助 Android 用户从硬盘、安全数字 (SD) 或存储卡以及数码相机中恢复已删除的数据。 Android 上数据被删除的主要原因 在…

厚积薄发,详解 IoTeX 2.0 如何推动 DePIN 赛道迈向新台阶

背 景 DePIN 是加密货币行业的一个新兴垂直领域,也是本轮牛市最重要的叙事之一。DePIN 通常通过发行和分配代币来激励参与者,用户可以通过提供资源、维护网络、参与治理等方式获得代币奖励并产生直接的经济收益,从而重新洗牌财富分配方…

【Linux】网络通信基础:应用层协议、HTTP、序列化与会话管理

文章目录 前言1. 应用层自定义协议与序列化1.1 什么是应用层?1.2 再谈 "协议"1.3 序列化 和 反序列化 2. HTTP 协议3. 认识 URL(统一资源定位符)4. urlencode和urldecode5. HTTP 协议请求与响应格式5.1 HTTP 请求5.2 HTTP 响应 6. HTTP 的方法6.1 GET 方法…

50.TFT_LCD液晶屏驱动设计与验证(3)

(1)数据生成模块Verilog代码: module data_gen(input [9:0] hang ,input [9:0] lie ,input clk_33M ,input reset_n ,output reg [23:0] data ); //定义最大行、列parameter …

Git(分布式版本控制系统)(fourteen day)

一、分布式版本控制系统 1、Git概述 Git是一种分布式版本控制系统,用于跟踪和管理代码的变更,它由Linux、torvalds创建的,最初被设计用于Linux内核的开发。Git允许开发人员跟踪和管理代码的版本,并且可以在不同的开发人员之间进行…

监控Windows文件夹下面的文件(C#和C++实现)

最近在做虚拟打印机时,需要实时监控打印文件的到达,并移动文件到另外的位置。一开始我使用了线程,在线程里去检测新文件的到达。实际上Windows提供了一个文件监控接口函数ReadDIrectoryChangesW。这个函数可以对所有文件操作进行监控。 ReadD…

【C语言】数组栈的实现

栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈&#…

Hadoop集群安装配置

文章目录 Hadoop部署配置集群配置历史服务器配置日志的聚集分发Hadoop群起集群Hadoop群起脚本 准备工作:需要3台虚拟机,每台虚拟机搭建好JDK并配置环境变量 Hadoop部署 1)集群部署规划 注意:NameNode和SecondaryNameNode不要安…

Java OpenCV 图像处理40 图形图像 图片裁切ROI

Java OpenCV 图像处理40 图形图像 图片裁切 在 OpenCV 中,Rect 类是用来表示矩形的数据结构,通常用于定义图像处理中的感兴趣区域(Region of Interest,ROI),或者指定图像中的某个区域的位置和大小。Rect 类…

使用Apache SeaTunnel进行二次开发的实践分享

大家好,我是范佳,是Apache SeaTunnel社区的PMC member。今天给大家分享一些基于Apache SeaTunnel二次开发的内容。 这部分内容主要涉及代码层面的知识,如果大家有什么疑问,欢迎来社区找我交流! 引言 大部分数据开发工…

【微信小程序实战教程】之微信小程序 WXML 语法详解

WXML语法基础 从本章开始,我们就正式进入到了小程序项目开发学习的初级阶段,本章将介绍小程序的界面构成。有过网页开发学习经历的同学都知道,网页开发所使用的技术是HTML、CSS和JS,其中HTML用于描述整个网页的结构,也…

第三十一天 chrome调试工具

打开调试工具 页面空白处右击 检查 或者F12 使用调试工具 ctrl滚轮改变代码大小 左边是html 右边是css css可以直接改动数值左右箭头或者直接输入 查看颜色 ctrl0 复原浏览器大小 点击元素右侧出现样式引入 没有的话 说明类名或者样式引用错误 这里的.new-left是存在的 如果类…

四步实现网站HTTPS访问

随着网络安全的重要性日益凸显,HTTPS(超文本传输安全协议)已成为现代网站的标准配置。HTTPS协议作为HTTP协议的安全版本,通过SSL协议加密数据传输,不仅能保护用户数据的安全,还能提升搜索引擎排名&#xff…

linux之shell脚本实战

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

docker 构建 mongodb

最近需要在虚拟机上构建搭建mongo的docker容器,搞了半天老有错,归其原因,是因为现在最新的mango镜像的启动方式发生了变化,故此现在好多帖子,就是错的。 ok,话不多说: # 拉取最新镜像&#xf…

华为云依赖引入错误

问题:记录一次项目加在华为云依赖错误,如下: 错误信息:Could not find artifact com.huawei.storage:esdk-obs-java:pom:3.1.2.1 in bintray-qcloud-maven-repo (https://dl.bintray.com/qcloud/maven-repo/) 找到本地仓库&#…

Minos 多主机分布式 docker-compose 集群部署

参考 docker-compose搭建多主机分布式minio - 会bk的鱼 - 博客园 (cnblogs.com) Minio 是个基于 Golang 编写的开源对象存储套件,虽然轻量,却拥有着不错的性能 中文地址:MinIO | 用于AI的S3 & Kubernetes原生对象存储 官网地址&#xf…

系留无人机在技术上有哪些优势或创新点

系留无人机在技术上具有显著的优势和创新点,主要体现在以下几个方面: 1. 长航时飞行作业: - 系留无人机系统由地面通过市电、发电机或电池组供电,并通过系留线缆将电力传输至无人机,实现了不间断供电。 - 这种供电方式…

QT5:嵌入式linux开发板调用键盘

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录​​​​​​​ 前言 一、Buildroot构建QT环境 1.1 构建环境 1.2 检查qtvirtualkeyboard库 二、测试过程 2.1 直接调用qtvirtualkeyboard 1.测试代码 2.测试效果 2.2 运行…