达梦DSC集群部署.docx

news2025/1/10 18:18:57

1. 前期规划

1.1. 集群规划

节点1节点2
业务服务名DSC
业务IP192.168.25.101192.168.25.102
内部数据交换网络IP10.10.10.110.10.10.2
dmdcr_cfgCSSDCR_EP_NAMECSS0CSS1
DCR_EP_HOST10.10.10.110.10.10.2
DCR_EP_PORT11286
ASMDCR_EP_NAMECSS0CSS1
DCR_EP_HOST10.10.10.110.10.10.2
DCR_EP_PORT1127611277
DBDCR_EP_NAMEDSC0DSC1
DCR_EP_PORT5236
DCR_CHECK_PORT1125611257
dmasvrmalMAL_INST_NAMEASM0ASM1
MAL_HOST10.10.10.110.10.10.2
MAL_PORT11266
dminit实例名DSC0DSC1
PORT_NUM5236
MAL_HOST10.10.10.110.10.10.2
MAL_PORT11246
OGUID21075

1.2. 本地磁盘规划

名称拟定配置备注
数据库安装目录/dm/dmdbms数据库安装路径,存放数据库运行日志等信息
数据库备份目录/dm/dmbak用于存放数据库备份文件
数据库SQL日志目录/dm/dmsqllog用于存放数据库dmsql日志
集群配置文件目录/dm/dmdbms/dsc_config用于存放数据库集群配置文件
系统core目录/dm/core用于存放系统的core文件
数据库归档日志目录/dmarch用于存放本地归档

1.3. 共享存储规划

生产环境Redo日志盘需要50G,数据盘和归档盘大小按需分配。

名称拟定配置分区大小备注
VOTE磁盘/dev/asm-dmvote5G记录集群成员信息,集群通过Voting Disk进行心跳检测,确定集群中节点的状态
DCR/dev/asm-dmdcr5G用于存储、维护集群配置的详细信息,整个集群环境共享DCR配置信息
Redo日志盘/dev/asm-dmlog10G用于存储数据库集群Redo log
数据盘/dev/asm-dmdata20G用于存放数据
归档盘/dev/asm-dmarch5G用于存储数据库集群各实例的归档日志

2. 配置共享存储

2.1. 创建用户和目录

这里先创建用户,确保udev绑定裸设备之后的所属用户和组是正确的

userdel -r dmdba
groupadd dinstall -g 2001
useradd -g dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba
echo 123456 | passwd --stdin dmdba 

mkdir -p /dm/dmdbms
mkdir /dm/core
chown -R dmdba. /dm
chmod -R 755 /dm
mkdir /dmarch
chown -R dmdba. /dmarch/
chmod -R 755 /dmarch/

mount -o loop /root/dm8_20240712_x86_rh7_64.iso /mnt

2.2. 分配硬盘

可以使用开源的存储管理操作系统,例如:Openfiler。
本次搭建使用VM虚拟机模拟共享存储。

2.2.1. 第1台虚拟机创建硬盘

选择“立即分配所有磁盘空间”
在这里插入图片描述

点击“高级”修改虚拟设备节点和模式
在这里插入图片描述

如果模式是灰色无法点击,需要手动编辑虚拟机的.xmv文件,添加
scsi1:0.mode = “independent-persistent”

创建的6块硬盘如下:
D:\sharedisk\asm-dmvote.vmdk SCSI 1:0 5G
D:\sharedisk\asm-dmdcr.vmdk SCSI 1:1 5G
D:\sharedisk\asm-dmlog.vmdk SCSI 1:2 10G
D:\sharedisk\asm-dmdata.vmdk SCSI 1:3 20G
D:\sharedisk\asm-dmarch.vmdk SCSI 1:4 5G

2.2.2. 第2台虚拟机创建硬盘

选择“使用现有虚拟磁盘”
在这里插入图片描述

这里的硬盘添加顺序一定要和第1台保持一致,否则两台机器的盘符和UUID对不上。

2.2.3. 编辑2台虚拟机的.xmv文件

修改以下参数
scsi1.deviceType = “disk”
disk.locking=“false”
diskLib.dataCacheMaxSize=“0”
diskLib.dataCacheMaxReadAheadSize=“0”
diskLib.DataCacheMinReadAheadSize=“0”
diskLib.dataCachePageSize=“4096”
diskLib.maxUnsyncedWrites=“0”
scsi1.sharedBus=“virtual”
disk.EnableUUID = “TRUE”

Tips
虚拟机的.xmv文件在对应的虚拟机目录下
D:\CentOS_node1\CentOS_node1.vmx

2.2.4. 检查

检查2台机器的磁盘文件和虚拟设备节点是否一致。
在这里插入图片描述

检查2台机器磁盘的UUID是否一致

[root@node1 ~]# /lib/udev/scsi_id --whitelisted --replace-whitespace /dev/sdb;/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/sdc;/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/sdd;/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/sde;/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/sdf
36000c29f5d6eb4d76c44b1be640ca950
36000c295fe55c6d0d904c6222e68fd28
36000c293d76bc8a05646ce31057d5f82
36000c29f3a118f85188943f53bd77d29
36000c299c77d20919e521ff673438a7c

2.3. udev绑定裸设备

创建udev规则文件

[root@node1 ~]# vi /etc/udev/rules.d/99-dm-asmdevices.rules
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM="/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="36000c29f5d6eb4d76c44b1be640ca950", RUN+="/bin/sh -c 'mknod /dev/asm-dmvote b $major $minor; chown dmdba:dinstall /dev/asm-dmvote; chmod 0660 /dev/asm-dmvote'"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM="/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="36000c295fe55c6d0d904c6222e68fd28", RUN+="/bin/sh -c 'mknod /dev/asm-dmdcr b $major $minor; chown dmdba:dinstall /dev/asm-dmdcr; chmod 0660 /dev/asm-dmdcr'"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM="/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="36000c293d76bc8a05646ce31057d5f82", RUN+="/bin/sh -c 'mknod /dev/asm-dmlog b $major $minor; chown dmdba:dinstall /dev/asm-dmlog; chmod 0660 /dev/asm-dmlog'"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM="/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="36000c29f3a118f85188943f53bd77d29", RUN+="/bin/sh -c 'mknod /dev/asm-dmdata b $major $minor; chown dmdba:dinstall /dev/asm-dmdata; chmod 0660 /dev/asm-dmdata'"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM="/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="36000c299c77d20919e521ff673438a7c", RUN+="/bin/sh -c 'mknod /dev/asm-dmarch b $major $minor; chown dmdba:dinstall /dev/asm-dmarch; chmod 0660 /dev/asm-dmarch'"

在Linux 7.x的版本中已经没有start_udev命令
业务运行期间,禁止重启systemd-udevd服务使规则生效
systemctl status systemd-udevd.service

重载udev规则
udevadm control --reload-rules
重载可能失败,需要手动触发
udevadm trigger

以下命令也可以重载udev规则
/sbin/udevadm trigger --type=devices --action=change

3. 系统配置

3.1. 配置防火墙

启动防火墙
systemctl enable firewalld --now

开启端口

firewall-cmd --zone=public --add-port=5236/tcp --permanent
firewall-cmd --zone=public --add-port=5236/tcp
firewall-cmd --reload
firewall-cmd --list-all-zone

可以使用富规则允许指定IP访问5236端口
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.25.101" accept" --permanent
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.25.102" accept" --permanent
firewall-cmd --add-rich-rule="rule family="ipv4" source address="10.10.10.1" accept" --permanent
firewall-cmd --add-rich-rule="rule family="ipv4" source address="10.10.10.2" accept" --permanent

3.2. 关闭SELinux

可以通过 setenforce 命令来设置前面两种状态,而如果想修改为 disable 状态,需要修改配置文件,同时重启系统。Enforcing 状态的值是 1,permissive 状态是 0,因此设置为 permissive,命令为:setenforce 0|1。

[root@node1 ~]# vi /etc/selinux/config 
SELINUX=disabled
[root@node1 ~]# init 6

Tips
修改 SELinux 永久关闭,必须重启服务器,才能生效。且永久关闭后,不能通过 setenforce 1 命令临时打开。

3.3. 修改磁盘调度算法

查看当前系统支持的IO调度算法

[root@node1 ~]# dmesg | grep -i scheduler

查看数据库所在磁盘的调度算法

[root@node1 ~]# cat /sys/block/sda/queue/scheduler 
noop [deadline] cfq 

##永久修改-CentOS6
##修改内核引导参数,加入 elevator=deadline

[root@~]# vi /boot/grub/menu.lst
kernel /boot/vmlinuz-2.6.32-504.el6 ro root=LABEL=/ elevator=deadline rhgb quiet

##重新确认调度算法

[root@~]# cat /sys/block/vdc/queue/scheduler

##永久修改-CentOS7

[root@node1 ~]# grubby --update-kernel=ALL --args="elevator=deadline"
[root@node1 ~]# reboot

3.4. 禁用透明大页/关闭numa

[root@node1 ~]# vi /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet numa=off transparent_hugepage=never"

在 /etc/rc.local 文件末尾添加如下内容

[root@node1 ~]# vi /etc/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
   echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
[root@node1 ~]# chmod +x /etc/rc.d/rc.local

重新生成 /etc/grub2.cfg 配置文件
当节点使用UEFI安装和启动时,使用如下命令:

grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg 

当节点使用传统BIOS安装和启动时,使用如下命令:

grub2-mkconfig -o /boot/grub2/grub.cfg

/etc/grub2.cfg是/boot/grub2/grub.cfg的软链接文件

查看系统是 BIOS 引导还是 UEFI 引导

[root@node1 ~]# [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

##重启之后进行确认

[root@node1 ~]# dmesg | grep -i numa
[root@node1 ~]# cat /proc/cmdline
[root@node1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[root@node1 ~]# cat /sys/kernel/mm/transparent_hugepage/defrag

3.5. 配置sysctl.conf

[root@node1 ~]# vi /etc/sysctl.conf
vm.overcommit_memory=0
[root@node1 ~]# sysctl -p
[root@node1 ~]# sysctl -n vm.overcommit_memory

3.6. 配置limits.conf

[root@node1 ~]# vi /etc/security/limits.conf
* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536
dmdba soft nice 65536
dmdba hard nice 65536
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited

确认是否生效

[root@node1 ~]# su - dmdba 
[dmdba@node1 ~]$ ulimit -a

3.7. 配置system.conf

[root@node1 ~]# vi /etc/systemd/system.conf
DefaultTasksMax=infinity
DefaultLimitCORE=infinity
DefaultLimitNOFILE=65536
DefaultLimitNPROC=infinity
DefaultLimitMEMLOCK=infinity

保存退出后需要重启服务器才能生效。
或者执行systemctl daemon-reexec生效。

4. DSC集群部署

4.1. 安装数据库软件

数据库软件安装到/dm/dmdbms目录下

[dmdba@node1 ~]$ /mnt/DMInstall.bin -i

4.2. 配置环境变量

[dmdba@node1 ~]$ vi /home/dmdba/.bash_profile 
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm/dmdbms/bin"
export DM_HOME="/dm/dmdbms"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
[dmdba@node1 ~]$ source .bash_profile

4.3. 配置dmdcr_cfg.ini

2个节点新建目录/dm/dmdbms/dsc_config,配置dmdcr_cfg.ini文件

[dmdba@node1 ~]$ mkdir /dm/dmdbms/dsc_config
[dmdba@node1 ~]$ vi /dm/dmdbms/dsc_config/dmdcr_cfg.ini
DCR_N_GRP                = 3     ##集群环境有多少个 GROUP,范围:1~16
DCR_VTD_PATH             = /dev/asm-dmvote   ##规划为 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            = 10.10.10.1   ##心跳地址
  DCR_EP_PORT            = 11286   ##CSS 端口
[GRP_CSS]                
  DCR_EP_NAME            = CSS1
  DCR_EP_HOST            = 10.10.10.2
  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            = 10.10.10.1  ##心跳地址
  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            = 10.10.10.2
  DCR_EP_PORT            = 11277
  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         = 11257

4.4. 初始化磁盘组

在节点1执行

[dmdba@node1 ~]$ /dm/dmdbms/bin/dmasmcmd
ASM>create dcrdisk '/dev/asm-dmdcr' 'dcr'
ASM>create votedisk '/dev/asm-dmvote' 'vote'
ASM>init dcrdisk '/dev/asm-dmdcr' from '/dm/dmdbms/dsc_config/dmdcr_cfg.ini' identified by '123456'
ASM>init votedisk '/dev/asm-dmvote' from '/dm/dmdbms/dsc_config/dmdcr_cfg.ini'
ASM>create asmdisk '/dev/asm-dmdata' 'DATA0'
ASM>create asmdisk '/dev/asm-dmlog' 'LOG0'
ASM>create asmdisk '/dev/asm-dmarch' 'ARCH0'

4.5. 配置dmasvrmal.ini

2个节点配置dmasvrmal.ini文件

[dmdba@node1 ~]$ vi /dm/dmdbms/dsc_config/dmasvrmal.ini
[MAL_INST0]
MAL_INST_NAME = ASM0
MAL_HOST      = 10.10.10.1  #心跳地址
MAL_PORT      = 11266  #MAL 监听端口
[MAL_INST1]
MAL_INST_NAME = ASM1
MAL_HOST      = 10.10.10.2
MAL_PORT      = 11266

4.6. 配置dmdcr.ini

节点1的DMDCR_SEQNO为0

[dmdba@node1 ~]$ vi /dm/dmdbms/dsc_config/dmdcr.ini
DMDCR_PATH               = /dev/asm-dmdcr
DMDCR_MAL_PATH           = /dm/dmdbms/dsc_config/dmasvrmal.ini
DMDCR_SEQNO              = 0
DMDCR_AUTO_OPEN_CHECK    = 111
DMDCR_ASM_TRACE_LEVEL    = 3

##DMDCR_ASM_RESTART_INTERVAL   = 30  #CSS 认定 ASM 故障重启的时间
##DMDCR_ASM_STARTUP_CMD        = /dm/dmdbms/bin/DmASMSvrServiceASM start
##DMDCR_DB_RESTART_INTERVAL    = 60   ##CSS 认定 DSC 故障重启的时间,设置为 0 不自动拉起
##DMDCR_DB_STARTUP_CMD         = /dm/dmdbms/bin/DmServiceDSC start

节点2的DMDCR_SEQNO为1

[dmdba@node2 ~]$ vi /dm/dmdbms/dsc_config/dmdcr.ini
DMDCR_PATH               = /dev/asm-dmdcr
DMDCR_MAL_PATH           = /dm/dmdbms/dsc_config/dmasvrmal.ini
DMDCR_SEQNO              = 1
DMDCR_AUTO_OPEN_CHECK    = 111
DMDCR_ASM_TRACE_LEVEL    = 3

##DMDCR_ASM_RESTART_INTERVAL   = 30  #CSS 认定 ASM 故障重启的时间
##DMDCR_ASM_STARTUP_CMD        = /dm/dmdbms/bin/DmASMSvrServiceASM start
##DMDCR_DB_RESTART_INTERVAL    = 60   ##CSS 认定 DSC 故障重启的时间,设置为 0 不自动拉起
##DMDCR_DB_STARTUP_CMD         = /dm/dmdbms/bin/DmServiceDSC start

4.7. 配置dmarch.ini

节点1

[dmdba@node1 ~]$ vi /dm/dmdbms/dsc_config/dmarch.ini
ARCH_WAIT_APPLY = 0
ARCH_LOCAL_SHARE = 1
ARCH_LOCAL_SHARE_CHECK = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/ARCH/DSC0/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800
ARCH_FLUSH_BUF_SIZE = 32
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMARCH/ARCH/DSC1/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800
ARCH_FLUSH_BUF_SIZE = 32
[ARCHIVE_LOCAL2]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 409600
ARCH_FLUSH_BUF_SIZE = 32

节点2

[dmdba@node2 ~]$ vi /dm/dmdbms/dsc_config/dmarch.ini
ARCH_WAIT_APPLY = 0
ARCH_LOCAL_SHARE = 1
ARCH_LOCAL_SHARE_CHECK = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/ARCH/DSC1/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800
ARCH_FLUSH_BUF_SIZE = 32
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = +DMARCH/ARCH/DSC0/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800
ARCH_FLUSH_BUF_SIZE = 32
[ARCHIVE_LOCAL2]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 409600
ARCH_FLUSH_BUF_SIZE = 32

4.8. 启动DMCSS、DMASM服务

在 2 个节点分别启动 dmcss 命令:

[dmdba@node1 ~]$ /dm/dmdbms/bin/dmcss DCR_INI=/dm/dmdbms/dsc_config/dmdcr.ini
[dmdba@node2 ~]$ /dm/dmdbms/bin/dmcss DCR_INI=/dm/dmdbms/dsc_config/dmdcr.ini

在 2 个节点分别启动 dmasmsvr 命令:

[dmdba@node1 ~]# /dm/dmdbms/bin/dmasmsvr DCR_INI=/dm/dmdbms/dsc_config/dmdcr.ini
[dmdba@node2 ~]# /dm/dmdbms/bin/dmasmsvr DCR_INI=/dm/dmdbms/dsc_config/dmdcr.ini

这四个窗口都不能关闭

4.9. 创建DMASM磁盘组

在节点1启动 dmasmtool 工具

[dmdba@node1 ~]$ /dm/dmdbms/bin/dmasmtool DCR_INI=/dm/dmdbms/dsc_config/dmdcr.ini
ASM>create diskgroup 'DMLOG' asmdisk '/dev/asm-dmlog'
ASM>create diskgroup 'DMDATA' asmdisk '/dev/asm-dmdata'
ASM>create diskgroup 'DMARCH' asmdisk '/dev/asm-dmarch'

4.10. 初始化实例

在节点1上创建dminit.ini文件

[dmdba@node1 ~]$ vi /dm/dmdbms/dsc_config/dminit.ini
DB_NAME                  = DSC
#SYSDBA_PWD               = SYSDBA
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-dmdcr
DCR_SEQNO                = 0
AUTO_OVERWRITE           = 1
PAGE_SIZE                = 32
EXTENT_SIZE              = 32
BLANK_PAD_MODE           = 1
CHARSET                  = 1

[DSC0]
CONFIG_PATH              = /dm/dmdbms/dsc_config/DSC0
PORT_NUM                 = 5236
MAL_HOST                 = 10.10.10.1
MAL_PORT                 = 11246
LOG_PATH                 = +DMLOG/DSC0_LOG01.log
LOG_PATH                 = +DMLOG/DSC0_LOG02.log
[DSC1]
CONFIG_PATH              = /dm/dmdbms/dsc_config/DSC1
PORT_NUM                 = 5236
MAL_HOST                 = 10.10.10.2
MAL_PORT                 = 11246
LOG_PATH                 = +DMLOG/DSC1_LOG01.log
LOG_PATH                 = +DMLOG/DSC1_LOG02.log

在当前节点执行

[dmdba@node1 ~]$ /dm/dmdbms/bin/dminit control=/dm/dmdbms/dsc_config/dminit.ini
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-07-03
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: +DMLOG/DSC0_LOG01.log


 log file path: +DMLOG/DSC0_LOG02.log


 log file path: +DMLOG/DSC1_LOG01.log


 log file path: +DMLOG/DSC1_LOG02.log

write to dir [+DMDATA/data/DSC].
create dm database success. 2024-08-08 18:06:47

4.11. 启动数据库

将初始化实例后在节点1机器上/dm/dmdbms/dsc_config下生成的DSC1目录拷贝到节点2机器相同目录下
节点1和节点2各自修改DSC0和DSC1目录下dm.ini文件的ARCH_INI=1
节点1将之前配置的dmarch.ini放到DSC0目录下
节点2将之前配置的dmarch.ini放到DSC1目录下
然后,再分别启动dmserver即可完成DMDSC集群搭建

[dmdba@node1 ~]$ scp -r /dm/dmdbms/dsc_config/DSC1/ dmdba@192.168.25.102:/dm/dmdbms/dsc_config/
[dmdba@node1 ~]$ vi /dm/dmdbms/dsc_config/DSC0/dm.ini 
[dmdba@node2 ~]$ vi /dm/dmdbms/dsc_config/DSC1/dm.ini 
[dmdba@node1 ~]$ mv /dm/dmdbms/dsc_config/dmarch.ini /dm/dmdbms/dsc_config/DSC0
[dmdba@node2 ~]$ mv /dm/dmdbms/dsc_config/dmarch.ini /dm/dmdbms/dsc_config/DSC1

[dmdba@node1 ~]$ /dm/dmdbms/bin/dmserver /dm/dmdbms/dsc_config/DSC0/dm.ini dcr_ini=/dm/dmdbms/dsc_config/dmdcr.ini
[dmdba@node2 ~]$ /dm/dmdbms/bin/dmserver /dm/dmdbms/dsc_config/DSC1/dm.ini dcr_ini=/dm/dmdbms/dsc_config/dmdcr.ini

4.12. 配置监视器

节点1和节点2修改防火墙配置

firewall-cmd --add-rich-rule="rule family="ipv4" source address="10.10.10.110" accept" --permanent
firewall-cmd --reload

在第3台服务器部署
如果没有,就在节点1和节点2都部署

[dmdba@localhost ~]$ vi /opt/dmdbms/bin/dmcssm.ini
CSSM_OGUID                 = 210715
CSSM_CSS_IP                = 10.10.10.1:11286
CSSM_CSS_IP                = 10.10.10.2:11286
CSSM_LOG_PATH              = /opt/dmdbms/log
CSSM_LOG_FILE_SIZE         = 512
CSSM_LOG_SPACE_LIMIT       = 2048

4.13. 停止前台启动的DSC集群

进入监视器停止集群

[dmdba@localhost ~]$ /opt/dmdbms/bin/dmcssm ini_path=/opt/dmdbms/bin/cssm.ini
ep stop GRP_DSC
[monitor]         2024-08-09 00:56:18: 组(GRP_DSC)中节点对应的CSS自动拉起标记已经处于关闭状态

[monitor]         2024-08-09 00:56:18: 通知CSS(seqno:0)执行EP STOP(GRP_DSC)
[monitor]         2024-08-09 00:56:26: 通知当前活动的CSS执行清理操作
[monitor]         2024-08-09 00:56:27: 清理CSS(0)请求成功
[monitor]         2024-08-09 00:56:27: 清理CSS(1)请求成功
[monitor]         2024-08-09 00:56:27: 命令EP STOP GRP_DSC执行成功

ep stop GRP_ASM
[monitor]         2024-08-09 00:57:08: 组(GRP_ASM)中节点对应的CSS自动拉起标记已经处于关闭状态

[monitor]         2024-08-09 00:57:08: 通知CSS(seqno:0)执行EP STOP(GRP_ASM)
[monitor]         2024-08-09 00:57:16: 通知当前活动的CSS执行清理操作
[monitor]         2024-08-09 00:57:17: 清理CSS(0)请求成功
[monitor]         2024-08-09 00:57:17: 清理CSS(1)请求成功
[monitor]         2024-08-09 00:57:17: 命令EP STOP GRP_ASM执行成功

确认数据库和ASM服务器均已停止,继续停DMCSS进程。
在集群2个节点之前打开的/dm/dmdbms/bin/dmcss DCR_INI=/dm/dmdbms/dsc_config/dmdcr.ini窗口中输入exit回车即可退出前台启动的整个集群。

4.14. 注册服务

节点1注册CSS/ASM/DSC服务

[root@node1 ~]# /dm/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -p CSS
[root@node1 ~]# /dm/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM
[root@node1 ~]# /dm/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dmdbms/dsc_config/DSC0/dm.ini -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC

节点2注册CSS/ASM/DSC服务

[root@node2 ~]# /dm/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -p CSS
[root@node2 ~]# /dm/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM
[root@node2 ~]# /dm/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dmdbms/dsc_config/DSC1/dm.ini -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC

注册监视器服务
通过查看/opt/dmdbms/log下的dmcssm_20240809004550.log日志查看监视器内容
安装监视器后台服务后,后续需要前台登陆监视器执行指令务必用dmdba用户启动监视器

[root@localhost ~]# /opt/dmdbms/script/root/dm_service_installer.sh -t dmcssm -cssm_ini /opt/dmdbms/bin/cssm.ini -p CSSM

删除服务可参考以下命令

/dm/dmdbms/script/root/dm_service_uninstaller.sh -n DmCSSServiceCSS
/dm/dmdbms/script/root/dm_service_uninstaller.sh -n DmASMSvrServiceASM
/dm/dmdbms/script/root/dm_service_uninstaller.sh -n DmServiceDSC
/opt/dmdbms/script/root/dm_service_uninstaller.sh -n DmCSSMonitorServiceCSSM

5. 启停DSC集群

5.1. 取消dmdcr.ini配置中的注释

2个节点的/dm/dmdbms/dsc_config/dmdcr.ini配置文件都要取消注释

[dmdba@node1 ~]$ vi /dm/dmdbms/dsc_config/dmdcr.ini

5.2. 启动集群

说明:CSS 启动后 30 秒自动拉起 ASM,60 秒自动拉起 DMSERVER。

[root@node1 ~]# systemctl start DmCSSServiceCSS
[root@node2 ~]# systemctl start DmCSSServiceCSS

5.3. 启动监视器

[root@localhost ~]# systemctl start DmCSSMonitorServiceCSSM

5.4. 停止集群

请按顺序停止,在返回[ OK ]之后执行下一条命令
也可以通过监视器停止

[root@node1 ~]# /dm/dmdbms/bin/DmServiceDSC stop
[root@node2 ~]# /dm/dmdbms/bin/DmServiceDSC stop
[root@node1 ~]# /dm/dmdbms/bin/DmASMSvrServiceASM stop
[root@node2 ~]# /dm/dmdbms/bin/DmASMSvrServiceASM stop
[root@node1 ~]# systemctl stop DmCSSServiceCSS
[root@node2 ~]# systemctl stop DmCSSServiceCSS

6. 设置core路径

2个节点都要设置

[root@node1 ~]# vi /etc/sysctl.conf
kernel.core_pattern = /dm/core/core-%e-%p-%t-%c.core
kernel.core_uses_pid = 1
[root@node1 ~]# sysctl -p

测试是否配置成功
1.登录disql

[root@node1 ~]# cd /dm/dmdbms/bin
[root@node1 bin]# ./disql SYSDBA/SYSDBA@192.168.25.101:5236

2.新开一个窗口执行kill -s 11 $$

[root@node1 ~]# ps -ef |grep disql
root      14324  13361  0 02:42 pts/0    00:00:00 ./disql              
root      14328  10740  0 02:42 pts/2    00:00:00 grep --color=auto disql
[root@node1 ~]# kill -s 11 13735
[root@node1 ~]# ls /dm/core/
core-disql-14324-1723142554-18446744073709551615.core

3.开始gdb调试
使用命令gdb program core来查看core文件,其中program为可执行程序名,core为生成的core文件名

[root@node1 ~]# cd /dm/dmdbms/bin
[root@node1 bin]# gdb ./disql /dm/core/core-disql-14324-1723142554-18446744073709551615.core

7. 配置dm_svc.conf

32 位的 DM 安装在 Win32 操作平台下,此文件位于 %SystemRoot%\system32 目录;
64 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\system32 目录;
32 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\SysWOW64 目录;
在 Linux 平台下,此文件位于 /etc 目录。

应用在哪,就在哪里创建/etc/dm_svc.conf并配置如下内容

[root@node1 ~]# vi /etc/dm_svc.conf 
TIME_ZONE=(480)
LANGUAGE=(cn)
DSC=(192.168.25.101:5236,192.168.25.102:5236)
[DSC]
CLUSTER=(DSC)
LOGIN_DSC_CTRL=(1)
LOGIN_ENCRYPT=(0)
SWITCH_TIME=(20)
SWITCH_INTERVAL=(2000)

LOGIN_DSC_CTRL=(1) 指定应用只连接控制节点,通常应用无需配置此参数,在某些有大量读写的应用中建议配置,规避 DSC 集群双节点写入性。

8. 报错处理

8.1. code:[-7014]

初始化实例时报错

fsm_file_add group_id 1, file_id 0, size_in_pages 320000, path +DMDATA/data/ROLL.dbf failed, code -7004
Please check whether exist file or directory with the same name or view the log for more infomation, code:[-7014]
fail to init db.

同时/dm/dmdbms/logdm_DSC0_202408.log报错

2024-08-08 16:49:57.123 [ERROR] dminit P0000011375 T0000000000000011375  os_file_create_ex->os_asm_file_create: [path: +DMDATA/data/ROLL.dbf]: [CODE:-523] 磁盘空间不足

解决方案
使用虚拟机自带的磁盘扩展功能直接扩展了原磁盘容量,但dmasm无法识别扩展后的容量。

[root@node1 ~]# dd if=/dev/zero of=/dev/sdb bs=1024k count=10
[root@node1 ~]# dd if=/dev/zero of=/dev/sdc bs=1024k count=10
[root@node1 ~]# dd if=/dev/zero of=/dev/sdd bs=1024k count=10
[root@node1 ~]# dd if=/dev/zero of=/dev/sde bs=1024k count=10
[root@node1 ~]# dd if=/dev/zero of=/dev/sdf bs=1024k count=10

删除目录后重新执行4.4和4.9的步骤

[root@node1 ~]# rm -rf /dm/dmdbms/dsc_config/DSC*

8.2. code: [-2405]

前台启动dmasmsvr服务后启动数据库实例报错
execute open ASM file fail, code: [-2405]

解决方案
无影响,忽略。




达梦社区地址
https://eco.dameng.com

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

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

相关文章

服务器数据恢复—raid5阵列热备盘未全部启用导致阵列崩溃的数据恢复案例

服务器存储数据恢复环境: 一台EMC某型号存储中有一组RAID5磁盘阵列。该raid5阵列中有12块硬盘,其中2块硬盘为热备盘。 服务器存储故障: 该存储raid5阵列中有两块硬盘离线,只有1块热备盘启用替换掉其中一块离线盘,另外…

如何让RStudio使用不同版本的R

下面内容摘录自: 专栏问答:管理和选择不同的R,如何做好R的笔记_rstudio如何在不同的r版本中进行切换-CSDN博客 欢迎订阅我们专栏 问题一:如何发现RStudio需要安装和使用不同版本的R。这是为什么呢? R允许用户在同一系统…

Spring容器启动的过程(main)

大体流程如下 1、初始化 首先,Spring会通过用户提供的配置信息(例如XML文件或者注解)来初始化一个BeanFactory,这个BeanFactory是Spring容器的核心,它负责创建和管理所有的Bean。 2、读取配置生成并注册BeanDefini…

单点Redis中面临哪些问题

我的后端学习大纲 我的Redis学习大纲 1.面试:请说下在单点Redis中面临哪些问题: 1.1.单点Redis的问题: 1.数据丢失问题:Redis是内存存储,服务重启可能会丢失数据 2.并发能力问题:单节点Redis并发能力虽然…

springboot系列十二:拦截器和文件上传

文章目录 基本介绍拦截器应用实例需求分析代码实现注意事项和细节 文件上传需求说明代码实现注意事项和细节课后扩展 基本介绍 1.在Spring Boot项目中, 拦截器是开发中常用手段, 要来做登陆验证, 性能检查, 日志记录等. 2.基本步骤: √ 编写一个拦截器实现HandlerInterceptor…

【简单】 猿人学web第一届 第3题 罗生门

请求逻辑分析 数据接口为https://match.yuanrenxue.cn/api/match/3?page1 这一题的 请求参数 与 cookie 都没有加密参数 每次请求数据接口前都会请求 jssm 接口 requests 照着请求逻辑去请求,发现是失败的(数据接口返回包含 js标签 代码)…

Unity数据持久化 之 Json序列化与反序列化

语法规则可以看这篇文章:Unity数据持久化 之 Json 语法速通-CSDN博客 Q:Unity是通过什么来对Json文件进行处理的? A:JsonUtility:Unity 提供了 JsonUtility 类,用于将对象序列化为 JSON 字符串或将 JSON 字符串反序列化为对象。…

从 MySQL 迁移到 TiDB:使用 SQL-Replay 工具进行真实线上流量回放测试 SOP

导读 在 MySQL 迁移至 TiDB 的过程中,兼容性和性能验证至关重要。SQL-Replay 是一款实用工具,用于评估数据库的兼容性和性能,支持日志解析、查询回放、性能测量和报告生成等功能。 本文介绍了 SQL-Replay 工具的安装和使用步骤,…

基于springboot的医院后台管理系统的设计与实现

TOC springboot167基于springboot的医院后台管理系统的设计与实现 第1章 绪论 1.1 研究背景 互联网概念的产生到如今的蓬勃发展,用了短短的几十年时间就风靡全球,使得全球各个行业都进行了互联网的改造升级,标志着互联网浪潮的来临。在这…

【C语言】格式化输出占位符及其标志字符详解(基于ISO/IEC 9899:2024)

目录 C语言格式化输出占位符及其标志字符详解(基于ISO/IEC 9899:2024)1. 格式说明符的基本结构1.1 标志字符(Flags)示例代码 1.2 宽度(Width)示例代码 1.3 精度(Precision)示例代码 …

一键换肤(Echarts 自定义主题)

一键换肤(Echarts 自定义主题) 一、使用官方主题配置工具 官方主题配置工具:https://echarts.apache.org/zh/theme-builder.html 如果以上主题不满足使用,可以自己自定义主题 例如:修改背景、标题等,可…

字节跳动飞书一面0715

进程间通信方式有哪些 1、管道通信,分为匿名管道和有名管道,匿名管道只能在有亲缘关系如父子进程间使用。有名管道可以允许无亲缘关系进程间的通信。它们都是半双工的通信方式,数据只能单向流动。 2、消息队列,用内核中的链表实现…

深入理解WAF(Web应用防火墙)及其安全防御策略

随着互联网的普及和发展,Web应用也面临着越来越多的安全威胁,如SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)等。这些威胁不仅可能造成数据泄露,还可能导致业务中断和品牌受损。本文将以快快网络…

JavaEE 第9节 阻塞队列详解

一、概念 阻塞队列是在普通队列(先进先出的数据结构)的基础上增加了阻塞属性的特殊队列 1)当阻塞队列空的时候,如果继续出队元素会进入阻塞状态,直到其他线程入队元素。 2)当阻塞队列满的时候,…

瑞萨电子并购Altium 引领行业创新与发展

公开资料显示,2023 年 6 月,瑞萨电子曾宣布在 Altium 的 Altium 365 云平台上实现了所有 PCB 设计的标准化开发。瑞萨电子一直与 Altium 合作,将其所有产品的 ECAD 库发布到 Altium Public Vault。借助 Altium365 上的制造商零件搜索等功能&a…

ROW_NUMBER(), RANK(), DENSE_RANK() SQL排序函数图文详解

ROW_NUMBER(), RANK(), DENSE_RANK() ROW_NUMBER(): 为结果集中的每一行分配唯一的连续编号。即使有重复的值,ROW_NUMBER() 也会为它们分配不同的序号。 SELECT column_name, ROW_NUMBER() OVER (ORDER BY column_name) AS row_num FROM table_name;2. RANK(): 对结…

高可用集群keepalived从部署到实战一篇解决

目录 一.高可用集群 1.1 集群类型 1.2 系统可用性 1.3 系统故障 1.4 实现高可用 1.5.VRRP: 1.5.1 VRRP 相关术语 1.5.2 VRRP 相关技术 二.Keepalived 部署 2.1 keepalived 简介 2.2keepalived架构 2.3 Keepalived 环境准备 2.4 Keepalived 相关文件 2.…

java实现七牛云内容审核功能,文本、图片和视频的内容审核(鉴黄、鉴暴恐、敏感人物)

目录 1、七牛云内容审核介绍 2、查看内容审核官方文档 2.1、文本内容审核 2.1.1、文本内容审核的请求示例 2.1.2、文本内容审核的返回示例 2.2、图片内容审核 2.2.1、请求参数 2.2.2、返回参数 2.3、视频内容审核 3、代码实现 3.1、前期代码准备 3.2、文本内容审核…

基于Spring + Vue的旅游景区项目+源代码+文档说明

文章目录 源代码下载地址项目介绍项目功能界面预览 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 基于Spring Vue的旅游景区项目 项目功能 民宿管理员:订单数量统计,订单交易额统计,客房统计饼图,酒店…

【STM32嵌入式系统设计与开发拓展】——14_定时器之输入捕获

参考哔站:链接: 铁头山羊 一、微控制器的高级定时与控制功能集合 1、时基单元 2、输入捕获 3、输出比较 4、从模式控制器 5、高级定时器的输出控制 二、问题集合 1、什么是定时器 定时器是一种专门负责定时功能的片上外设GPI0AFI0EXTIUSART RCC I2C) 2、定时器…