达梦数据库--DM8两节点DSC 集群安装部署(超详细)

13 篇文章 0 订阅
12 篇文章 0 订阅

一.安装前准备
1.1系统规划
在这里插入图片描述

1.2 本地磁盘规划
在这里插入图片描述

1.3 共享存储规划
DMDSC 集群为了实现多实例同时访问和修改数据,需要数据文件、控制文件和日志文件都放到共享存储上。DM 支持两种共享存储,裸设备和 DMASM,裸设备是未经过格式化的特殊字符设备,推荐使用 DMASM 共享存储。
其中,VOTE 是表决磁盘,一个集群一个表决磁盘。DCR 是 DM 集群注册表的简称,用于存储、维护集群配置的详细信息,一个集群一个注册表。生产环境中,共享存储一般由操作:
在这里插入图片描述

1.4 端口规划
在这里插入图片描述

1.5禁用防火墙和SELINUX

vi /etc/selinux/config
改SELINUX=disabled
或者echo"SELINUX=disabled”>>/etc/selinux/config
永久关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
查看防火墙状态
systemctl status firewalld

1.6 禁用透明大页
(1)编辑/etc/sysconfig/grub文件,在GRUB_CMDLINE_LINUX那一行后面追加

transparent_hugepage=never

(2)再使用grub2-mkconfig生成grub.cfg配置文件。

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

(3)重启系统使配置生效。

reboot 

(4)查看重启后,是否生效

cat /sys/kernel/mm/transparent_hugepage/enabled

1.7 调整limits.conf
使用 vi 编辑器打开 /etc/security/limits.conf 文件,命令如下:
vi /etc/security/limits.conf
在最后添加四条语句,需添加的语句如下:

dmdba  soft      core         unlimited
dmdba  hard      core         unlimited
dmdba soft nproc  65536
dmdba hard nproc  65536
dmdba  hard  nofile  65536
dmdba  soft  nofile  65536
dmdba  hard  stack  32768
dmdba  soft  stack  16384

该参数文件需要重启生效,reboot生效

参数说明:
core - 限制内核文件的大小(KB)
nproc 对每个用户创建的进程数的限制,默认的很小,泄露的时候多
nofile-一个进程能打开的文件数
stack堆大小,堆-存放变量的位置
重启后验证limit参数:
su - dmdba
ulimit -a

1.8 关闭numa配置
NUMA(Non-Uniform Memory Access)架构是为了解决多CPU下内存访问冲突,简单来说不在将整个物理内存作为一个整体,而是根据不同的CPU区分不同的内存块儿,如2颗CPU每颗CPU使用64G内存。
当NUMA参数zone_reclaim_mode在设置为1时,内核将要求多路CPU尽量从距离较近的系统内存节点(服务器的整体内存在numa架构下将被分成若干个节点)分配内存而不是在整个服务器可访问内存的范围内进行内存分配,因此在较高内存占用压力下内存申请会触发内存频繁回收整理的机制严重影响了系统整体性能(长期处于内核态sys很高)。进而可能导致SQL卡顿问题的发生。

--编辑grub文件,如下图所示加上:numa=off
[root@~]# vi /etc/default/grub


--重新生成/etc/grub2.cfg 配置文件:
[root@~]# grub2-mkconfig -o /etc/grub2.cfg


--重启操作系统
[root@~]# reboot

--重启之后进行确认
[root@~]# dmesg | grep -i numa


--再次确认
[root@~]# cat /proc/cmdline

1.9 创建用户属组和目录创建授权
创建用户及属组:

1)创建用户所在的组:groupadd dinstall
(2)创建用户:useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
(3)修改用户密码:passwd dmdba

创建目录及授权:

mkdir -p /dm/dmdbms
mkdir -p /dm/dmbak
mkdir -p /dm/dmsqllog
mkdir -p /dm/core
chown -R dmdba:dinstall /dm
chmod 755 -R /dm

1.10 创建用户环境变量
su - dmdba
vi ~/.bash_profile
#添加如下三行

export DM_HOME="/dm/dmdbms"     
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DM_HOME/bin"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool 

保存后,使环境变量生效:
source ~/.bash_profile

1.11 添加共享磁盘
创建共享磁盘:
WIN+R,然后输入cmd进入命令行窗口:

"G:\vmware\vmware-vdiskmanager.exe" -c -s 20GB -a lsilogic -t 2 "G:\DM8_DSC\DSC1\DCS-share-20G.vmdk"

添加共享磁盘:

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

另一台同样的步骤。

然后打开VMX格式的文件,添加以下语句:

disk.EnableUUID = "TRUE"
disk.locking = "FALSE"

注意:
标红的信息必填,否则重启虚拟机操作系统时会提示磁盘被锁定

1.12 块设备uuid绑定
这里以共享存储盘为 sdb,sdc,sdd,sde,sdf 为例。
(1)创建uuid脚本:
vi uuid.sh

curr=$(cd "$(dirname "$0")";pwd) 
rm -f $curr/88-dm-asmdevices.rules 
for i in a b c d e; 
do
 echo "KERNEL==\"sd?\",SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\",RESULT==\"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\",SYMLINK+=\"dm/asm-disk$i\",OWNER=\"dmdba\",GROUP=\"dinstall\",MODE=\"0660\"">>$curr /etc/udev/rules.d/88-dm-asmdevices.rules 
done

执行uuid脚本

Chmod +x uuid.sh
Sh uuid.sh

(3)脚本执行成功后,会生成绑定配置文件 88-dm-asmdevices.rules,可以根据自己的需求进行修改别名 SYMLINK,本文档修改如下:

[root@localhost ~]# cat 88-dm-asmdevices.rules

KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="adb61346-6d45-4ee8-98af-2f711bf2b5ac",SYMLINK+="dm/asm-dmdcr",OWNER="dmdba",GROUP="dinstall",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="18b1fe57-1dbb-45e7-8116-cd0bd175a638",SYMLINK+="dm/asm-dmvote",OWNER="dmdba",GROUP="dinstall",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="b53a513c-47ba-4ef7-93e0-504f4dd15291",SYMLINK+="dm/asm-dmlog",OWNER="dmdba",GROUP="dinstall",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="78bc9b03-203e-4923-a3c7-a793726e2734",SYMLINK+="dm/asm-dmdata",OWNER="dmdba",GROUP="dinstall",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="87177f79-3a80-4195-bde0-c65cdef267db",SYMLINK+="dm/asm-dmarch",OWNER="dmdba",GROUP="dinstall",MODE="0660"

(4)将修改完的 88-dm-asmdevices.rules 配置文件 cp 到 DSC 的每个节点上。

cp 88-dm-asmdevices.rules /etc/udev/rules.d/88-dm-asmdevices.rules

(5)重启服务器,并重启udev服务

sbin/udevadm control --reload-rules  (重新加载udev服务)
/sbin/udevadm trigger --type=devices --action=change

(6)路径授权(此文件防止重启属组权限失效)
[root@localhost rules.d]# cat 99-dm-permissons.rules

PROGRAM="/bin/chown -R dmdba:dinstall /dev/dm/asm-dmvote"
PROGRAM="/bin/chown -R dmdba:dinstall /dev/dm/asm-dmdcr"
PROGRAM="/bin/chown -R dmdba:dinstall /dev/dm/asm-dmlog"
PROGRAM="/bin/chown -R dmdba:dinstall /dev/dm/asm-dmdata"
PROGRAM="/bin/chown -R dmdba:dinstall /dev/dm/asm-dmarch"

(7)验证共享磁盘映射是否生效

blockdev --getsize64 /dev/dm/asm-dmdcr 
blockdev --getsize64 /dev/dm/asm-dmvote
blockdev --getsize64 /dev/dm/asm-dmlog
blockdev --getsize64 /dev/dm/asm-dmdata 
blockdev --getsize64 /dev/dm/asm-dmarch

1.13 安装数据库软件
上传ISO文件,并挂载镜像

mount -o loop /soft/dm8_20230104_x86_rh6_64.iso /mnt

切换至 dmdba 用户下,在 /mnt 目录下使用命令行安装数据库程序,依次执行以下命令安装 DM 数据库。

su - dmdba
cd /mnt/
./DMInstall.bin -i

执行静默安装时报错临时目录/tmp空间不足,安装DM需要临时空间至少800M:
在这里插入图片描述

解决方法:
方法一:扩容/tmp目录 mount -o remount,size=2G /tmp
方法二:创建一个目录用来放置安装程序时的临时目录
[root@ Kylin /]# mkdir -p /tmp1
[root@ Kylin /]# chown -R dmdba.disntall /tmp1
su - dmdba
export DM_INSTALL_TMPDIR=/tmp1
然后顺利执行:

安装步骤:
需求选择安装语言,默认为中文。
本地安装选择【不输入 Key 文件】,
选择【默认时区 21】。
在这里插入图片描述

安装类型选择:【典型安装】
安装目录选择:【home/dmdata/dmdbms】
注意:该目录不为空,默认为/home/dmdba/dmdbms
是否确认安装:【y】
安装小结,是否确认安装:【y】
在这里插入图片描述

安装完成后root执行命令:
/home/dmdba/dmdbms/script/root/root_installer.sh
需要root下创建 DmAPService,否则会影响数据库备份
在这里插入图片描述

二.集群搭建
2.1 配置 dmdcr_cfg.ini
创建dsc目录:

mkdir -p /dm/dmdbms/dsc_config

两节点配置相同
[dmdba@~]# vi /dm/dmdbms/dsc_config/dmdcr_cfg.ini

DCR_N_GRP           = 3     					 ##集群环境有多少个 GROUP,范围:
DCR_VTD_PATH        = /dev/dm/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            = 192.168.135.10   		##心跳地址
  DCR_EP_PORT            = 11286   		 		##CSS 端口
[GRP_CSS]
  DCR_EP_NAME            = CSS1
  DCR_EP_HOST            = 192.168.135.11
  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            = 192.168.135.10  	##心跳地址
  DCR_EP_PORT            = 11276  			##ASM 端口
  DCR_EP_ASM_LOAD_PATH   = /dev/dm
[GRP_ASM]
  DCR_EP_NAME            = ASM1
  DCR_EP_SHM_KEY         = 42425
  DCR_EP_SHM_SIZE        = 1024
  DCR_EP_HOST            = 192.168.135.11
  DCR_EP_PORT            = 11277
  DCR_EP_ASM_LOAD_PATH   = /dev/dm
[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

2.2初始化磁盘组
在 dsc1(节点1) 机器上进行如下操作

dsc1:/home/dmdba(db1)$/dm/dmdbms/bin/dmasmcmd
DMASMCMD V8
ASM>create dcrdisk '/dev/dm/asm-dmdcr' 'dcr'
[TRACE]The ASM initialize dcrdisk /dev/dm/asm-dmdcr to name DMASMdcr
Used time: 24.964(ms).
ASM>create votedisk '/dev/dm/asm-dmvote' 'vote'
[TRACE]The ASM initialize votedisk /dev/dm/asm-dmvote to name DMASMvote
Used time: 35.222(ms).
ASM>init dcrdisk '/dev/dm/asm-dmdcr' from '/dm/dmdbms/dsc_config/dmdcr_cfg.ini' identified by 'liu123456'
[TRACE]DG 126 alloc one extent for inodes, addr(disk_id, disk_auno, extent_no):(0,0,1).
[TRACE]DG 126 allocate 4 extents for file 0xfe000002.
[TRACE]DG 126 alloc 4 extents for 0xfe000002, addr(disk_id, disk_auno, extent_no):(0, 0, 2)->(0, 0, 5), need_init = 1.
Used time: 33.230(ms).
ASM>init votedisk '/dev/dm/asm-dmvote' from '/dm/dmdbms/dsc_config/dmdcr_cfg.ini'
[TRACE]DG 125 alloc one extent for inodes, addr(disk_id, disk_auno, extent_no):(0,0,1).
[TRACE]DG 125 allocate 4 extents for file 0xfd000002.
[TRACE]DG 125 alloc 4 extents for 0xfd000002, addr(disk_id, disk_auno, extent_no):(0, 0, 2)->(0, 0, 5), need_init = 1.
Used time: 14.895(ms).
ASM>create asmdisk '/dev/dm/asm-dmdata' 'DATA0'
[TRACE]The ASM initialize asmdisk /dev/dm/asm-dmdata to name DMASMDATA0
Used time: 35.040(ms).
ASM>create asmdisk '/dev/dm/asm-dmlog' 'LOG0'
[TRACE]The ASM initialize asmdisk /dev/dm/asm-dmlog to name DMASMLOG0
Used time: 29.868(ms).
ASM>create asmdisk '/dev/dm/asm-dmarch' 'ARCH0'
[TRACE]The ASM initialize asmdisk /dev/dm/asm-dmarch to name DMASMARCH0
Used time: 32.419(ms).

2.3 配置 dmasvrmal.ini
配置ASM的MAL系统配置文件–两个节点都需要配置,内容相同。

vi /dm/dmdbms/dsc_config/dmasvrmal.ini

[MAL_INST0]
MAL_INST_NAME            = ASM0
MAL_HOST                 = 192.168.135.10  	#心跳地址
MAL_PORT                 = 11266  			#MAL 监听端口
[MAL_INST1]
MAL_INST_NAME            = ASM1
MAL_HOST                 = 192.168.135.11 
MAL_PORT                 = 11266`

2.4配置 dmdcr.ini 文件
Dsc1 机器配置 dmdcr.ini,dmdcr_seqo 为 0
Dsc2 机器配置 dmdcr.ini,dmdcr_seqo 为 1

DSC1配置:
[dmdba@~]vi /dm/dmdbms/dsc_config/dmdcr.ini

DMDCR_PATH               	= /dev/dm/asm-dmdcr
DMDCR_MAL_PATH           	= /dm/dmdbms/dsc_config/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/dmdbms/dsc_config/DmAsmService_DSC0 start
##DMDCR_DB_RESTART_INTERVAL     = 60   ##CSS 认定 DSC 故障重启的时间,设置为 0 不自动拉起
##DMDCR_DB_STARTUP_CMD      	= /dm/dmdbms/dsc_config/DmService_DSC0 start

DSC2配置:
[dmdba@~]vi /dm/dmdbms/dsc_config/dmdcr.ini

DMDCR_PATH                   = /dev/dm/asm-dmdcr
DMDCR_MAL_PATH               = /dm/dmdbms/dsc_config/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/dmdbms/dsc_config/DmAsmServiceDSC1 start
##DMDCR_DB_RESTART_INTERVAL    = 60   
##DMDCR_DB_STARTUP_CMD         = /dm/dmdbms/dsc_config/DmServiceDSC1 start

2.5 启动 DMCSS、DMASM 服务
在 2 个节点分别启动 dmcss 命令:

[dmdba@]# /dm/dmdbms/bin/dmcss DCR_INI=/dm/dmdbms/dsc_config/dmdcr.ini
[dmdba@]# /dm/dmdbms/bin/dmcss DCR_INI=/dm/dmdbms/dsc_config/dmdcr.ini

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

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

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

[dmdba@]/dm/dmdbms/bin/dmasmtool DCR_INI=/dm/dmdbms/dsc_config/dmdcr.ini
DMASMTOOL V8
ASM>create diskgroup 'DMLOG' asmdisk '/dev/dm/asm-dmlog'
Used time: 57.806(ms).
ASM> create diskgroup 'DMDATA' asmdisk '/dev/dm/asm-dmdata'
Used time: 56.416(ms).
ASM>create diskgroup 'DMARCH' asmdisk '/dev/dm/asm-dmarch'
Used time: 63.617(ms).

2.7 初始化 DB 环境
[dmdba@~]# vi /dm/dmdbms/dsc_config/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                = 1024
MAIN                     = +DMDATA/data/MAIN.dbf
MAIN_SIZE                = 1024
CTL_PATH                 = +DMDATA/data/dm.ctl
CTL_SIZE                 = 8
LOG_SIZE                 = 256
DCR_PATH                 = /dev/dm/asm-dmdcr
DCR_SEQNO                = 0
AUTO_OVERWRITE           = 1
PAGE_SIZE                = 32
EXTENT_SIZE              = 16
BLANK_PAD_MODE           = 1

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

在 dsc1 节点执行初始化 db 命令

/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 2024-01-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. 2023-05-12 12:58:32

拷贝文件到 db1 节点

scp -r /dm/dmdbms/dsc_config/dsc1_config dmdba@192.168.135.11:/dm/dmdbms/dsc_config

然后初始化数据库完成之后,将节点 A 上生成的 dsc1_config 文件夹拷贝到节点 B
的/dm/dmdbms/dsc_config 目录下。
最后将节点 A 上/dm/dmdbms/dsc_config 目录下的 dsc1_config 文件夹
删掉。

2.8配置 dmarch.ini 文件

DSC1节点
修改 dm.ini
[dmdba@~]# vi /dm/dmdbms/dsc_config/dsc0_config/dm.ini

ARCH_INI = 1

创建 dmarch.ini
[dmdba@~]# vi /dm/dmdbms/dsc_config/dsc0_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 = 1024
ARCH_SPACE_LIMIT = 102400
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMARCH/ARCH/DSC1/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 102400

DSC2 节点
修改 dm.ini
[dmdba@~]# vi /dm/dmdbms/dsc_config/dsc1_config/dm.ini

ARCH_INI= 1

创建 dmarch.ini
[dmdba@~]# vi /dm/dmdbms/dsc_config/dsc1_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 = 1024
ARCH_SPACE_LIMIT = 102400
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = +DMARCH/ARCH/DSC0/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 102400

2.9 启动数据库集群
如果 DMCSS 配置有自动拉起 dmserver 的功能,可以等待 DMCSS 自动拉起实例,不需要手动启动。如果需要手动启动,可参考以下步骤:
DSC1节点:

[dmdba@]# /dm/dmdbms/bin/dmserver /dm/dmdbms/dsc_config/dsc0_config/dm.ini dcr_ini=/dm/dmdbms/dsc_config/dmdcr.ini

DSC2节点:

[dmdba@~]# /dm/dmdbms/bin/dmserver /dm/dmdbms/dsc_config/dsc1_config/dm.ini dcr_ini=/dm/dmdbms/dsc_config/dmdcr.ini

观察启动后节点一日志:

观察启动后节点2日志:

日志可知:db 会被自动启动。出现 system is ready ep real open,说明数据库实例启动成功。
2.10 注册 CSS、ASM、DMSERVER 后台服务
集群节点两边各自创建 CSS/ASM/DSC 三个服务

节点1:
创建 CSS 服务

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

创建 ASM 服务

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

创建 DSC 服务

[root@~]# /dm/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dmdbms/dsc_config/dsc0_config/dm.ini -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC

节点2:
创建 CSS 服务

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

创建 ASM 服务

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

创建 DSC 服务

[root@~]# /dm/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dmdbms/dsc_config/dsc1_config/dm.ini -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC

启动服务:

DmCSSServiceCSS start
DmASMSvrServiceASM start 
DmServiceDSC start

在这里插入图片描述

备注:节点一,二删除自启可参考以下命令。

[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.11配置监视器
创建 dmcssm.ini
A 机器、B 机器配置相同
[dmdba@~]# vi /dm/dmdbms/bin/dmcssm.ini

CSSM_OGUID                 = 210715
CSSM_CSS_IP                = 192.168.135.10:11286
CSSM_CSS_IP                = 192.168.135.11:11286
CSSM_LOG_PATH              = ../log
CSSM_LOG_FILE_SIZE         = 512
CSSM_LOG_SPACE_LIMIT       = 2048

使用监视器:

cd /dm/dmdbms/bin
./dmcssm ini_path=cssm.ini

查看nst_status 字段为 OPEN,vtd_status 字段为 WORKING,active 字段为 TRUE 说明 db 服务正常。至此DSC数据共享集群搭建完成!!!
在这里插入图片描述

2.12 创建监视器后台服务
cd /home/dmdba/dmdbms/script/root
创建监视器后台服务:
./dm_service_installer.sh -t dmcssm -cssm_ini /home/dmdba/dmdbms/bin/cssm.ini -p CSSM
chown -R dmdba:dinstall /home/dmdba/dmdbms
service DmCSSMonitorServiceCSSM start 进行启动
通过查看/home/dmdba/dmdbms/log 下的 cssmXXX.log 日志查看监视器内容
2.13启停服务

  1. 启动监视器
    前台启动:[dmdba@~]# /dm/dmdbms/bin/dmcssm INI_PATH=/dm/dmdbms/bin/dmcssm.ini
    后台启动:[dmdba@~]# /dm/dmdbms/bin/DmCSSMonitorServiceMonitor start

  2. 启停集群
    启动:A/B 机器 CSS
    A/B 机器:[dmdba@~]#/dm/dmdbms/bin/DmCSSServiceCSS start##说明:CSS 启动后 30 秒自动拉起 ASM,60 秒自动拉起 DMSERVER。
    停止: A/B 机器 DMSERVER→A/B 机器 ASM→A/B 机器 CSS
    A/B 机器:[dmdba@~]# /dm/dmdbms/bin/DmServiceDSC stop
    A/B 机器:[dmdba@~]# /dm/dmdbms/bin/DmASMSvrServiceASM stop
    A/B 机器:[dmdba@~]# /dm/dmdbms/bin/DmCSSServiceCSS stop
    说明:
    DSC 正常停库必须 2 节点同时停止,根据目前脚本配置,CSS 启动后 30 秒自动拉起 ASM,60 秒自动拉起 DMSERVER,所以停止 DMSERVER 和 ASM 后,要尽快停止 CSS,避免被自动拉起。或者在停库前,取消 dmdcr.ini 配置文件中 DMDCR_ASM_RESTART_INTERVAL、DMDCR_ASM_STARTUP_CMD 前面的 # 号。
    服务全部停止后,要检查后台进程是否全部停止。

三、配置应用连接
Linux 环境:dm_svc.conf 放在应用服务器 /etc 目录下。
Windows32 环境:dm_svc.conf 放在应用服务器 System32 目录下。
Windows64 环境:dm_svc.conf 放在应用服务器 System32 和 SysWOW64 目录下。
3.1 创建 dm_svc.conf
以 2 节点 DSC 集群为例,配置 dm_svc.conf 文件如下:
[root@~]# vi /etc/dm_svc.conf
TIME_ZONE=(+8:00)
LANGUAGE=(cn)
DSC1=(192.168.135.10:5236,192.168.135.11:5236)

[DSC1]
LOGIN_ENCRYPT=(0)
SWITCH_TIME=(20)
SWITCH_INTERVAL=(2000)
3.2 应用连接
dm.jdbc.driver.DmDriver
jdbc:dm://DSC1:5236?compatibleMode=oracle

四.搭建报错解决
4.1.DMDSC 集群初始化实例失败failed, code: -7013.
dsc1:/dm/dmdbms/dsc_config(db1)$/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 2024-01-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 rlog file +DMLOG/DSC0_LOG02.log failed, code: -7013.
fail to init db.

症状:redo log创建失败
原因:dminit.ini配置文件中定义的log_size超过了+DMLOG最大大小,由于定义的是创建4个2048M大小的redo,创建时由于空间不足导致。
dsc1:/dm/dmdbms/dsc_config(db1) l s b l k N A M E M A J : M I N R M S I Z E R O T Y P E M O U N T P O I N T s d a 8 : 0020 G 0 d i s k ├─ s d a 18 : 101 G 0 p a r t / b o o t └ ─ s d a 28 : 2018 G 0 p a r t ├─ k l a s − r o o t 253 : 0016 G 0 l v m / └ ─ k l a s − s w a p 253 : 102 G 0 l v m [ S W A P ] s d b 8 : 1601 G 0 d i s k s d c 8 : 3201 G 0 d i s k s d d 8 : 4804 G 0 d i s k s d e 8 : 64050 G 0 d i s k s d f 8 : 80010 G 0 d i s k s r 011 : 011024 M 0 r o m d s c 1 : / d m / d m d b m s / d s c c o n f i g ( d b 1 ) lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 18G 0 part ├─klas-root 253:0 0 16G 0 lvm / └─klas-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 1G 0 disk sdc 8:32 0 1G 0 disk sdd 8:48 0 4G 0 disk sde 8:64 0 50G 0 disk sdf 8:80 0 10G 0 disk sr0 11:0 1 1024M 0 rom dsc1:/dm/dmdbms/dsc_config(db1) lsblkNAMEMAJ:MINRMSIZEROTYPEMOUNTPOINTsda8:0020G0disk├─sda18:101G0part/bootsda28:2018G0part├─klasroot253:0016G0lvm/klasswap253:102G0lvm[SWAP]sdb8:1601G0disksdc8:3201G0disksdd8:4804G0disksde8:64050G0disksdf8:80010G0disksr011:011024M0romdsc1:/dm/dmdbms/dscconfig(db1)ls -lrt /dev/dm
总用量 0
lrwxrwxrwx 1 dmdba dinstall 6 5月 12 13:38 asm-dmarch -> …/sdf
lrwxrwxrwx 1 dmdba dinstall 6 5月 12 13:40 asm-dmvote -> …/sdb
lrwxrwxrwx 1 dmdba dinstall 6 5月 12 13:40 asm-dmlog -> …/sdd
lrwxrwxrwx 1 dmdba dinstall 6 5月 12 13:40 asm-dmdata -> …/sde
lrwxrwxrwx 1 dmdba dinstall 6 5月 12 13:40 asm-dmdcr -> …/sdc

解决:
修改dminit.ini中的LOG_SIZE= 256(满足使用环境大小即可),重新初始化实例
![(https://img-blog.csdnimg.cn/0cd4afcf4ed74f00b5e2d5cb3c9142b2.png)

4.2启动DB实例报错:
数据库日志:dm_dsc0.log
2023-05-12 18:19:20.129 [ERROR] database P0000014652 T0000000000000014652 Read rfil[‘+DMLOG/DSC1_LOG01.log’] from offset[923136] failed, code[-723]
2023-05-12 18:19:20.129 [ERROR] database P0000014652 T0000000000000014652 redo_rfil_grp_pwr_collect->rlog4_first_rpkg_seqno_get failed, code:-723
2023-05-12 18:19:20.129 [INFO] database P0000014652 T0000000000000014652 cur_fil:[+DMLOG/DSC1_LOG01.log], cur_free:[923136], l_next_seq:[4186], g_next_seq:[4186]
2023-05-12 18:19:20.129 [FATAL] database P0000014652 T0000000000000014652 redo_pwr_collect error, code = -723
2023-05-12 18:19:20.129 [INFO] database P0000014652 T0000000000000014652 hlog_sys_destroy set rlog_arr[0] from 0x7f54e95527e8 to NULL
2023-05-12 18:19:20.129 [INFO] database P0000014652 T0000000000000014652 hlog_sys_destroy set rlog_arr[1] from 0x7f54e99527e8 to NULL

原因:
1.共享磁盘绑定,出现问题
2.Redo日志损坏,损坏原因怀疑和手动误杀进程,并且顺序有误,先杀ASM或者CSS进程导致

解决:
原因1重新绑定共享磁盘,修改规则文件

原因2删除实例后,重新初始化实例

4.3 使用dmasmtool报错
创建磁盘组时报错:
在这里插入图片描述

解决:原因是重新初始化实例的时候,dd磁盘但没有初始化磁盘组导致,重新初始化磁盘组后,启动CSS和ASM服务后,再创建磁盘组
ASM>create asmdisk ‘/dev/dm/asm-dmdata’ ‘DATA0’
[TRACE]The ASM initialize asmdisk /dev/dm/asm-dmdata to name DMASMDATA0
Used time: 35.040(ms).
ASM>create asmdisk ‘/dev/dm/asm-dmlog’ ‘LOG0’
[TRACE]The ASM initialize asmdisk /dev/dm/asm-dmlog to name DMASMLOG0
Used time: 29.868(ms).
ASM>create asmdisk ‘/dev/dm/asm-dmarch’ ‘ARCH0’
[TRACE]The ASM initialize asmdisk /dev/dm/asm-dmarch to name DMASMARCH0
Used time: 32.419(ms).

4.4 启动DMCSS服务失败,磁盘checksum校验失败
在这里插入图片描述

[dmdba@DSC1 dsc_config]$ /dm/dmdbms/bin/dmcss DCR_INI=/dm/dmdbms/dsc_config/dmdcr.ini
DMCSS V8
Check vote disk group_id:[126] failed, expected id:[125].
dmcss startup failed:[CODE:-13217],error info:磁盘checksum校验失败

[dmdba@DSC1 dsc_config]$ dmasmcmd
DMASMCMD V8
ASM>listdisks ‘/dev/raw’
[/dev/raw/raw4]: Unused ASM disk, name:[DMASMDATA0], size:[46902M]
[/dev/raw/raw3]: Unused ASM disk, name:[DMASMLOG0], size:[4095M]
[/dev/raw/raw1]: Used ASM disk, name:[DMASMdcr], size:[100M], group_id:[126], disk_id:[0]
[/dev/raw/raw2]: Used ASM disk, name:[DMASMvote], size:[100M], group_id:[125], disk_id:[0]
Used time: 2.072(ms).

通过对比发现这里有错误:
Check vote disk group_id:[126] 在listdisks 命令看是dcr盘,而非vote disk。

因为刚开始搭建,所有直接使用init 命令重新初始化一下:
[dmdba@DSC1 dsc_config]$ /dm/dmdbms/bin/dmasmcmd
DMASMCMD V8
ASM>init dcrdisk ‘/dev/raw/raw1’ from ‘/dm/dmdbms/dsc_config/dmdcr_cfg.ini’ identified by ‘liu123456’
[TRACE]DG 126 alloc one extent for inodes, addr(disk_id, disk_auno, extent_no):(0,0,1).
[TRACE]DG 126 allocate 4 extents for file 0xfe000002.
[TRACE]DG 126 alloc 4 extents for 0xfe000002, addr(disk_id, disk_auno, extent_no):(0, 0, 2)->(0, 0, 5), need_init = 1.
Used time: 26.822(ms).
ASM>init votedisk ‘/dev/raw/raw2’ from ‘/dm/dmdbms/dsc_config/dmdcr_cfg.ini’
[TRACE]DG 125 alloc one extent for inodes, addr(disk_id, disk_auno, extent_no):(0,0,1).
[TRACE]DG 125 allocate 4 extents for file 0xfd000002.
[TRACE]DG 125 alloc 4 extents for 0xfd000002, addr(disk_id, disk_auno, extent_no):(0, 0, 2)->(0, 0, 5), need_init = 1.
Used time: 00:00:09.631.

然后重启成功:

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值