一.安装前准备
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启停服务
-
启动监视器
前台启动:[dmdba@~]# /dm/dmdbms/bin/dmcssm INI_PATH=/dm/dmdbms/bin/dmcssm.ini
后台启动:[dmdba@~]# /dm/dmdbms/bin/DmCSSMonitorServiceMonitor start -
启停集群
启动: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/boot└─sda28:2018G0part├─klas−root253:0016G0lvm/└─klas−swap253: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.
然后重启成功: