达梦DSC集群部署.docx

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

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值