1搭建DSC集群前期配置
1.1前期准备
1.1.1集群规划
操作系统版本: CentOS Linux 7
说明:具体规划及部署方式以现场环境为准。
1.1.2修改主机名
1.A机器修改主机名:
[root@dmdsc01 soft]# hostnamectl status
Static hostname: dmdsc01
Icon name: computer-vm
Chassis: vm
Machine ID: a6b1f969996aec479e4da907e890419b
Boot ID: 9b5c18c4a7ad4722bc487a402d9efa21
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-862.el7.x86_64
Architecture: x86-64
2.B机器修改主机名:
[root@dmdsc02 soft]# hostnamectl status
Static hostname: dmdsc02
Icon name: computer-vm
Chassis: vm
Machine ID: a6b1f969996aec479e4da907e890419b
Boot ID: cf9072e252964553961365a616ac6f31
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-862.el7.x86_64
Architecture: x86-64
复制
1.1.3关闭防火墙
A机器、B机器均需要关闭防火墙,依次执行:
[root@~]# systemctl stop firewalld
[root@~]# systemctl disable firewalld
[root@~]# systemctl status firewalld
复制
1.1.4设置网卡自启
A机器、B机器设置网卡自启,依次修改:
[root@~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
ONBOOT=yes
[root@~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
ONBOOT=yes
复制
1.2用户与组
DM 数据库不应该使用 root 用户安装和维护。需要在安装之前为 DM 数据库创建一个专用的系统用户 (dmdba) 和用户组 (dinstall)。
#执行以下命令,新建用户组 dinstall
groupadd dinstall
#执行以下命令,新建用户 dmdba
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
#执行以下命令,修改 dmdba 用户密码
passwd dmdba
复制
1.3创建相关目录并授权
A机器:
mkdir -p /dm/dmdbms/dm8
mkdir -p /dm/dsc/config
mkdir -p /dm/dsc/bak
mkdir -p /dm/dsc/config/dsc0_config
chown -R dmdba:dinstall /dm
B机器:
mkdir -p /dm/dmdbms/dm8
mkdir -p /dm/dsc/config
mkdir -p /dm/dsc/bak
mkdir -p /dm/dsc/config/dsc1_config
chown -R dmdba:dinstall /dm
复制
1.4检查系统内存与存储空间
1)检查内存 :
为了保证 DM 的正确安装和运行,要尽量保证操作系统至少 1GB 的可用内存(RAM)。 如果可用内存过少,可能导致DM安装或启动失败。用户可以使用以下命令检查操作内存:
#获取内存总大小
grep MemTotal /proc/meminfo
#获取交换分区大小
grep SwapTotal /proc/meminfo
#获取内存使用详情
free -m
复制
A机器:
B机器:
2)检查存储空间
DM完全安装需要 1GB 的存储空间,用户需要提前规划好安装目录,预留足够的存储空间。用户在 DM 安装前也应该为数据库实例预留足够的存储空间,规划好数据路径和备份路径。用户可使用以下命令检查存储空间:
A机器:
B机器:
注意:生产上达梦数据库存放目录应单独划分一块磁盘存放,不能和系统盘共用。
DM 安装程序在安装时将产生临时文件,临时文件需要 1GB 的存储空间,临时文件目录默认为/tmp。用户可以使用以下命令检查存储空间。如下图所示:
A机器:
B机器:
如果/tmp 目录不能保证 1GB 的存储空间,用户可以扩展/tmp 目录存储空间或者通过设置环境变量 DM_INSTALL_TMPDIR 指定安装程序的临时目录。具体命令如下所示:
#以 BASH 为例:
mkdir -p /dm/tmp
export DM_INSTALL_TMPDIR=/dm/tmp
复制
1.5用户资源限制
在 Linux(Unix)系统中,因为 ulimit 命令的存在,会对程序使用操作系统资源进行限制。为了使 DM 能够正常运行,建议用户检查当前安装用户的 ulimit 参数。
运行 ulimit -a 进行查询。
参数使用限制:
1.data seg size
data seg size (kbytes, -d)
建议用户设置为 1048576(即 1GB)以上或 unlimited(无限制),此参数过小将导致数据库启动失败。
2. file size
file size(blocks, -f)
建议用户设置为 unlimited(无限制),此参数过小将导致数据库安装或初始化失败。
3. open files
open files(-n)
建议用户设置为 65536 以上或 unlimited(无限制)。
4.virtual memory
virtual memory (kbytes, -v)
建议用户设置为 1048576(即 1GB)以上或 unlimited(无限制),此参数过小将导致数据库启动失败。如果用户需要为当前安装用户更改 ulimit 的资源限制,请修改文件/etc/security/limits.conf。
执行以下命令,修改 dmdba 用户资源限制:
cat >>/etc/security/limits.conf<<EOF
dmdba soft nproc 10240
dmdba hard nproc 10240
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba hard data unlimited
dmdba soft data unlimited
dmdba hard fsize unlimited
dmdba soft fsize unlimited
dmdba soft core unlimited
dmdba hard core unlimited
EOF
复制
确认dmdba 用户资源限制是否生效,如下图:
A机器:
B机器:
1.6用户环境变量
执行以下命令,修改 dmdba 用户环境变量:
su - dmdba
vi /home/dmdba/.bash_profile
文件末尾添加如下内容:
export DM_HOME=/dm/dmdbms/dm8
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
使环境变量配置生效:
source ~/.bash_profile
复制
1.7防火墙设置
生产环境应该对特定客户端IP开放数据库监听端口,并修改 DM 数据库默认的 5236 监听端口。
1.8服务器参数相关设置
1.8.1.关闭SELINUX
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
getenforce
复制
1.8.2.关闭透明大页、numa
Transparent HugePages (透明大页)对系统的性能产生影响的原因:
在 khugepaged 进行扫描进程占用内存,并将 4k Page 交换为 Huge Pages 的这个过程中,对于操作的内存的各种分配活动都需要各种内存锁,直接影响程序的内存访问性能。并且,这个过程对于应用是透明的,在应用层面不可控制,对于专门为 4k page 优化的程序来说,可能会造成随机的性能下降现象。
NUMA(Non-Uniform Memory Access)架构是为了解决多 CPU 下内存访问冲突,即不再将整个物理内存作为一个整体,而是根据不同的 CPU 区分不同的内存块,如 2 颗 CPU 每颗 CPU 使用 64G 内存。当 NUMA 参数 zone_reclaim_mode 设置为 1 时,内核将要求多路 CPU 尽量从距离较近的系统内存节点(服务器的整体内存在 numa 架构下将被分成若干个节点)分配内存,而不是在整个服务器可访问内存的范围内进行内存分配。因此,在较高内存占用压力下,内存申请会触发内存频繁回收整理的机制,严重影响系统整体性能(长期处于内核态 sys 很高),进而可能导致 SQL 卡顿问题的发生。
#关闭numa=off
grubby --update-kernel=ALL --args="numa=off"
#关闭transparent_hugepage
grubby --update-kernel=ALL --args="transparent_hugepage=never"
#注意需重启服务器生效
复制
1.8.3.IO调度算法
linux默认的IO调度算法为cfq。
1.如果是SAS/STAT盘需要修改为dealine。
2.如果是存储为 nvme、SSD或者PCIe-SSD 等高性能的设备时,需要修改为noop。
#修改磁盘IO调度方式 elevator=deadline
grubby --update-kernel=ALL --args="elevator=deadline"
#注意需重启服务器生效
[root@dmdsc01~]# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
[root@dmdsc02 ~]# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
临时生效用如下方法:
##临时更改 I/O 调度方法,重启后失效
#[root@dmdsc01~]#echo deadline > /sys/block/sdb/queue/scheduler
复制
1.8.4.调整 sysctl.conf 参数
/etc/sysctl.conf 是一个允许改变正在运行中的 Linux 系统接口,它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项,修改内核参数永久生效。/proc/sys 下内核文件与配置文件 sysctl.conf 中变量存在着对应关系。
配置参数 overcommit_memory 表示系统的内存分配策略可以选值为 0,1,2。
0:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1:表示内核允许分配所有的物理内存,不管当前的内存状态如何。
2:表示内核允许分配超过所有物理内存和交换空间总和的内存。
[root@dm~]# vim /etc/sysctl.conf
##修改
vm.overcommit_memory=0
然后执行 sysctl -p 使配置文件生效
复制
1.8.5.调整login
cat >>/etc/pam.d/login<<EOF
session required /lib64/security/pam_limits.so
session required pam_limits.so
EOF
复制
1.8.6.RemoveIPC 参数检查
检查 RemoveIPC 参数设置要求为no,在用户完全退出OS后会remove掉所有的IPC对象。
修改 /etc/systemd/logind.conf配置文件中的 RemoveIPC 参数,将#注释去掉,并修改yes为no重启服务。
systemctl daemon-reload
systemctl restart systemd-logind
复制
1.9安装数据库软件
A机器和B机器都执行:
mkdir -p /dm/iso
mount -oloop /soft/dm8_20231226_x86_rh6_64.iso /dm/iso
su - dmdba
[dmdba@dmdsc01~]$ cd /dm/iso
[dmdba@dmdsc01 iso]$ ./DMInstall.bin -i
请选择安装语言(C/c:中文 E/e:英文) [C/c]:
解压安装程序..........
欢迎使用达梦数据库安装程序
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:N
是否设置时区? (Y/y:是 N/n:否) [Y/y]:Y
设置时区:
[ 1]: GTM-12=日界线西
[ 2]: GTM-11=萨摩亚群岛
[ 3]: GTM-10=夏威夷
[ 4]: GTM-09=阿拉斯加
[ 5]: GTM-08=太平洋时间(美国和加拿大)
[ 6]: GTM-07=亚利桑那
[ 7]: GTM-06=中部时间(美国和加拿大)
[ 8]: GTM-05=东部部时间(美国和加拿大)
[ 9]: GTM-04=大西洋时间(美国和加拿大)
[10]: GTM-03=巴西利亚
[11]: GTM-02=中大西洋
[12]: GTM-01=亚速尔群岛
[13]: GTM=格林威治标准时间
[14]: GTM+01=萨拉热窝
[15]: GTM+02=开罗
[16]: GTM+03=莫斯科
[17]: GTM+04=阿布扎比
[18]: GTM+05=伊斯兰堡
[19]: GTM+06=达卡
[20]: GTM+07=曼谷,河内
[21]: GTM+08=中国标准时间
[22]: GTM+09=汉城
[23]: GTM+10=关岛
[24]: GTM+11=所罗门群岛
[25]: GTM+12=斐济
[26]: GTM+13=努库阿勒法
[27]: GTM+14=基里巴斯
请选择设置时区 [27]:21
安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:1
所需空间: 1935M
请选择安装目录 [/home/dmdba/dmdbms]:/dm/dmdbms/dm8
可用空间: 35G
是否确认安装路径(/dm/dmdbms/dm8)? (Y/y:是 N/n:否) [Y/y]:Y
安装前小结
安装位置: /dm/dmdbms/dm8
所需空间: 1935M
可用空间: 35G
版本信息:
有效日期:
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):Y
2023-07-03 04:00:33
[INFO] 安装达梦数据库...
2023-07-03 04:00:33
[INFO] 安装 基础 模块...
2023-07-03 04:00:54
[INFO] 安装 服务器 模块...
2023-07-03 04:00:58
[INFO] 安装 客户端 模块...
2023-07-03 04:01:18
[INFO] 安装 驱动 模块...
2023-07-03 04:01:31
[INFO] 安装 手册 模块...
2023-07-03 04:01:33
[INFO] 安装 服务 模块...
2023-07-03 04:01:35
[INFO] 移动日志文件。
2023-07-03 04:01:36
[INFO] 安装达梦数据库完成。
请以root系统用户执行命令:
/dm/dmdbms/dm8/script/root/root_installer.sh
安装结束
用root用户执行脚本:
su - root
[root@dmdsc01 soft]# /dm/dmdbms/dm8/script/root/root_installer.sh
移动 /dm/dmdbms/dm8/bin/dm_svc.conf 到/etc目录
创建DmAPService服务
Created symlink /etc/systemd/system/multi-user.target.wants/DmAPService.service → /usr/lib/systemd/system/DmAPService.service.
创建服务(DmAPService)完成
启动DmAPService服务
复制
2存储准备
2.1.存储规划
2.2.配置共享存储UDEV绑定
A机器、B机器依次修改:
A机器:
vi mpath.sh
curr=$(cd "$(dirname "$0")";pwd)
rm -f $curr/88-dm-asmdevices.rules
for i in (multipath -ll看到的清单)
do
str1="$i:`udevadm info --query=all --name=/dev/mapper/$i | grep DM_UUID`"
str2=${str1#*=}
echo "KERNEL==\"dm-*\",ENV{DM_UUID}==\"${str2}\",SYMLINK+=\"asm/asm-${i}\",OWNER=\"dmdba\",GROUP=\"dinstall\",MODE=\"0660\"" >> $curr/88-dm-asmdevices.rules
done
chmod +x mpath.sh
./mpath.sh
修改88-dm-asmdevices.rules中SYMLINK为对应的盘
cat 88-dm-asmdevices.rules
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-VBOX_HARDDISK_VB1c21e9b6-d310e9f1",SYMLINK+="asm/asm-dmdcr",OWNER="dmdba",GROUP="dinstall",MODE="0660"
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-VBOX_HARDDISK_VB15e5500e-599af8bc",SYMLINK+="asm/asm-dmvote",OWNER="dmdba",GROUP="dinstall",MODE="0660"
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-VBOX_HARDDISK_VB4b2e91c8-edf2d843",SYMLINK+="asm/asm-dmredo",OWNER="dmdba",GROUP="dinstall",MODE="0660"
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-VBOX_HARDDISK_VB8c0ec026-2d6fa987",SYMLINK+="asm/asm-dmdata01",OWNER="dmdba",GROUP="dinstall",MODE="0660"
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-VBOX_HARDDISK_VB10c96c68-f8b266f8",SYMLINK+="asm/asm-dmdata02",OWNER="dmdba",GROUP="dinstall",MODE="0660"
cp 88-dm-asmdevices.rules /etc/udev/rules.d/88-dm-asmdevices.rules
scp 88-dm-asmdevices.rule 到另外一个节点B机器
#scp -P 端口号 文件 user@IP:/目录
然后两个节点都执行
udevadm trigger --type=devices --action=change
udevadm control --reload-rules
使其生效
检查生效情况:
机器A:
[root@dmdsc01 rules.d]# blockdev --getsize64 /dev/asm/asm-dmdcr
2147483648
[root@dmdsc01 rules.d]# blockdev --getsize64 /dev/asm/asm-dmdcr
2147483648
[root@dmdsc01 rules.d]# blockdev --getsize64 /dev/asm/asm-dmvote
2147483648
[root@dmdsc01 rules.d]# blockdev --getsize64 /dev/asm/asm-dmredo
3221225472
[root@dmdsc01 rules.d]# blockdev --getsize64 /dev/asm/asm-dmdata01
3221225472
[root@dmdsc01 rules.d]# blockdev --getsize64 /dev/asm/asm-dmdata02
3221225472
机器B:
[root@dmdsc02 ~]# blockdev --getsize64 /dev/asm/asm-dmdcr
2147483648
[root@dmdsc02 ~]# blockdev --getsize64 /dev/asm/asm-dmvote
2147483648
[root@dmdsc02 ~]# blockdev --getsize64 /dev/asm/asm-dmredo
3221225472
[root@dmdsc02 ~]# blockdev --getsize64 /dev/asm/asm-dmdata01
3221225472
[root@dmdsc02 ~]# blockdev --getsize64 /dev/asm/asm-dmdata02
3221225472
复制
3搭建DSC
3.1.创建dmdcr_cfg.ini
A机器、B机器配置相同。
cat >>/dm/dsc/config/dmdcr_cfg.ini<<EOF
DCR_N_GRP = 3 #集群环境有多少个GROUP,范围:1~16
DCR_VTD_PATH = /dev/asm/asm-dmvote
DCR_OGUID = 45331
[GRP] #新建一个GROUP
DCR_GRP_TYPE = CSS #组类型(CSS/ASM/DB)
DCR_GRP_NAME = GRP_CSS #组名
DCR_GRP_N_EP = 2 #组内节点个数
DCR_GRP_DSKCHK_CNT = 60 #磁盘心跳容错时间,单位:秒
[GRP_CSS]
DCR_EP_NAME = CSS0 #CSS节点名
DCR_EP_HOST = 10.10.10.104 #心跳地址
DCR_EP_PORT = 5336 #CSS端口
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 10.10.10.105
DCR_EP_PORT = 5337
[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_ASM]
DCR_EP_NAME = ASM0 #ASM节点名,和dmasvrmal的MAL_INST_NAME一致
DCR_EP_SHM_KEY = 93360 #共享内存标识
DCR_EP_SHM_SIZE = 10 #共享内存大小
DCR_EP_HOST = 10.10.10.104 #心跳地址
DCR_EP_PORT = 5436 #ASM端口
DCR_EP_ASM_LOAD_PATH = /dev/asm
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 10.10.10.105
DCR_EP_PORT = 5437
DCR_EP_ASM_LOAD_PATH = /dev/asm
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[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 = 5536 #DCR检查端口
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 5537
EOF
复制
3.2.初始化磁盘组
在A机器上执行如下操作
[dmdba@dmdsc01~]$/dm/dmdbms/dm8/bin/dmasmcmd
ASM> create dcrdisk '/dev/asm/asm-dmdcr' 'dcr'
ASM> create votedisk '/dev/asm/asm-dmvote' 'vote'
ASM> create asmdisk '/dev/asm/asm-dmredo' 'LOG0'
ASM> create asmdisk '/dev/asm/asm-dmdata01' 'DATA0'
ASM> create asmdisk '/dev/asm/asm-dmdata02' 'DATA1'
ASM> init dcrdisk '/dev/asm/asm-dmdcr' from '/dm/dsc/config/dmdcr_cfg.ini' identified by 'dameng123'
ASM> init votedisk '/dev/asm/asm-dmvote' from '/dm/dsc/config/dmdcr_cfg.ini'
复制
3.3.创建dmasvrmal.ini
A机器、B机器配置相同
cat >>/dm/dsc/config/dmasvrmal.ini<<EOF
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 10.10.10.104 #心跳地址
MAL_PORT = 5636 #MAL监听端口
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 10.10.10.105
MAL_PORT = 5637
EOF
3.4.创建dmdcr.ini
1.A机器配置dmdcr.ini
cat >>/dm/dsc/config/dmdcr.ini<<EOF
DMDCR_PATH = /dev/asm/asm-dmdcr
DMDCR_MAL_PATH = /dm/dsc/config/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_AUTO_OPEN_CHECK = 90 #指定时间内如果节点实例未启动,DMCSS 会自动将节点踢出集群环境,单位为秒
#DMDCR_ASM_RESTART_INTERVAL = 30 #CSS认定ASM故障重启的时间
#DMDCR_ASM_STARTUP_CMD = /dm/dmdbms/dm8/bin/dmasmsvr dcr_ini=/dm/dsc/config/dmdcr.ini
#DMDCR_DB_RESTART_INTERVAL = 60 #CSS认定DSC故障重启的时间
#DMDCR_DB_STARTUP_CMD = /dm/dmdbms/dm8/bin/dmserver path=/dm/dsc/config/dsc0_config/dm.ini dcr_ini=/dm/dsc/config/dmdcr.ini
EOF
2.B机器配置dmdcr.ini
cat >>/dm/dsc/config/dmdcr.ini<<EOF
DMDCR_PATH = /dev/asm/asm-dmdcr
DMDCR_MAL_PATH = /dm/dsc/config/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_AUTO_OPEN_CHECK = 90
#DMDCR_ASM_RESTART_INTERVAL = 30
#DMDCR_ASM_STARTUP_CMD = /dm/dmdbms/dm8/bin/dmasmsvr dcr_ini=/dm/dsc/config/dmdcr.ini
#DMDCR_DB_RESTART_INTERVAL = 60
#DMDCR_DB_STARTUP_CMD = /dm/dmdbms/dm8/bin/dmserver path=/dm/dsc/config/dsc1_config/dm.ini dcr_ini=/dm/dsc/config/dmdcr.ini
EOF
注意:当前为手动拉起A机器和B机器的ASM和DMSERVER服务。若需要修改为自动拉起(删除dmdcr.ini中井号)。
3.5.启动CSS、ASM服务
1.A机器、B机器依次执行
[dmdba@dmdsc01~]$ /dm/dmdbms/dm8/bin/dmcss DCR_INI=/dm/dsc/config/dmdcr.ini
2.A机器、B机器依次执行
[dmdba@dmdsc01~]$ /dm/dmdbms/dm8/bin/dmasmsvr DCR_INI=/dm/dsc/config/dmdcr.ini
复制
3.6.创建DMASM磁盘组
A机器
[dmdba@dmdsc01~]$ /dm/dmdbms/dm8/bin/dmasmtool DCR_INI=/dm/dsc/config/dmdcr.ini
ASM> create diskgroup 'DMLOG' asmdisk '/dev/asm/asm-dmredo'
ASM> create diskgroup 'DMDATA' asmdisk '/dev/asm/asm-dmdata01'
#asm磁盘组扩容添加磁盘到磁盘组dgdata01
ASM>alter diskgroup 'DMDATA' add asmdisk '/dev/asm/asm-dmdata02'
ASM>lsdg
total 4 groups......
1 disk_group:
name: DMLOG
id: 0
au_size: 1.00 MB
extent_size: 4
total_size: 3.00 GB
free_size: 2.99 GB
total_file_num: 1
2 disk_group:
name: DMDATA
id: 1
au_size: 1.00 MB
extent_size: 4
total_size: 6.00 GB
free_size: 5.98 GB
total_file_num: 1
3 disk_group:
name: VOTE
id: 125
au_size: 1.00 MB
extent_size: 4
total_size: 2.00 GB
free_size: 1.98 GB
total_file_num: 2
4 disk_group:
name: DCR
id: 126
au_size: 1.00 MB
extent_size: 4
total_size: 2.00 GB
free_size: 1.98 GB
total_file_num: 2
Used time: 5.709(ms).
复制
3.7.创建dminit.ini
A、B机器
cat >>/dm/dsc/config/dminit.ini<<EOF
db_name = dsc
system_path = +DMDATA/data
main = +DMDATA/data/dsc/main.dbf
main_size = 128
roll = +DMDATA/data/dsc/roll.dbf
roll_size = 128
system = +DMDATA/data/dsc/system.dbf
system_size = 128
ctl_path = +DMDATA/data/dsc/dm.ctl
ctl_size = 8
log_size = 512 #生产可以设置2048
dcr_path = /dev/asm/asm-dmdcr
dcr_seqno = 0
auto_overwrite = 1
PAGE_SIZE = 32
CASE_SENSITIVE = Y
CHARSET = 0
[DSC0]
config_path = /dm/dsc/config/dsc0_config
port_num = 5236
mal_host = 10.10.10.104
mal_port = 5736
log_path = +DMLOG/log/dsc0_log01.log
log_path = +DMLOG/log/dsc0_log02.log
[DSC1]
config_path = /dm/dsc/config/dsc1_config
port_num = 5236
mal_host = 10.10.10.105
mal_port = 5737
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
EOF
复制
3.8.初始化实例
A机器
--初始化实例
[dmdba@dmdsc01~]$ /dm/dmdbms/dm8/bin/dminit control=/dm/dsc/config/dminit.ini
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2024-01-10
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: +DMLOG/log/dsc0_log01.log
log file path: +DMLOG/log/dsc0_log02.log
log file path: +DMLOG/log/dsc1_log01.log
log file path: +DMLOG/log/dsc1_log02.log
write to dir [+DMDATA/data/dsc].
create dm database success. 2023-07-03 05:31:49
--拷贝文件
[dmdba@dmdsc01~]$ scp -r /dm/dsc/config/dsc1_config dmdba@192.168.1.105:/dm/dsc/config/
复制
3.9.创建dmarch.ini
1.A机器
--修改dm.ini
[dmdba@dmdsc01~]$ vi /dm/dsc/config/dsc0_config/dm.ini
ARCH_INI = 1
--创建dmarch.ini
cat >>/dm/dsc/config/dsc0_config/dmarch.ini<<EOF
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/ARCH/ARCH_DB_DSC0
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 0 #生产上需要根据实际情况限制归档保留大小
[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMDATA/ARCH/ARCH_DB_DSC1
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 0 #生产上需要根据实际情况限制归档保留大小
EOF
2.B机器
--修改dm.ini
[dmdba@dmdsc01~]$ vi /dm/dsc/config/dsc1_config/dm.ini
ARCH_INI = 1
--创建dmarch.ini
cat >>/dm/dsc/config/dsc1_config/dmarch.ini<<EOF
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/ARCH/ARCH_DB_DSC1
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 0 #生产上需要根据实际情况限制归档保留大小
[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = +DMDATA/ARCH/ARCH_DB_DSC0
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 0 #生产上需要根据实际情况限制归档保留大小
EOF
复制
3.10.启动DMSERVER服务
1.A机器
[dmdba@dmdsc01~]$/dm/dmdbms/dm8/bin/dmserver /dm/dsc/config/dsc0_config/dm.ini dcr_ini=/dm/dsc/config/dmdcr.ini
2.B机器
[dmdba@dmdsc01~]$/dm/dmdbms/dm8/bin/dmserver /dm/dsc/config/dsc1_config/dm.ini dcr_ini=/dm/dsc/config/dmdcr.ini
复制
3.11.注册CSS、ASM、DMSERVER后台服务
1.A机器
[root@~]# /dm/dmdbms/dm8/script/root/dm_service_installer.sh -t dmcss -dcr_ini /dm/dsc/config/dmdcr.ini -p CSS
[root@~]# /dm/dmdbms/dm8/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /dm/dsc/config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM
#-y DmCSSServiceCSS.service代表指定的依赖服务,就是上面创建的css服务
[root@~]# /dm/dmdbms/dm8/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dsc/config/dsc0_config/dm.ini -dcr_ini /dm/dsc/config/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC
2.B机器
[root@~]# /dm/dmdbms/dm8/script/root/dm_service_installer.sh -t dmcss -dcr_ini /dm/dsc/config/dmdcr.ini -p CSS
[root@~]# /dm/dmdbms/dm8/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /dm/dsc/config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM
[root@~]# /dm/dmdbms/dm8/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dsc/config/dsc1_config/dm.ini -dcr_ini /dm/dsc/config/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC
备注:关闭服务自启
su - root
systemctl disable DmCSSServiceCSS
systemctl disable DmASMSvrServiceASM
systemctl disable DmServiceDSC
复制
3.12.配置监视器
3.12.1.创建dmcssm.ini
A机器、B机器配置相同:
su - dmdba
cat >>/dm/dmdbms/dm8/bin/dmcssm.ini<<EOF
CSSM_OGUID = 45331
CSSM_CSS_IP = 10.10.10.104:5336
CSSM_CSS_IP = 10.10.10.105:5337
CSSM_LOG_PATH = ../log
CSSM_LOG_FILE_SIZE = 512
CSSM_LOG_SPACE_LIMIT = 2048
EOF
复制
3.12.2.监视器使用
命令 含义
show 查看所有组的信息
show config 查看dmdcr_cfg.ini 的配置信息
show monitor 查看当前连接到主 CSS 的所有监视器信息
复制
3.13.启停服务
3.13.1.启动监视器
--前台启动:
[dmdba@dmdsc01 ~]$ cd /dm/dmdbms/dm8/bin
[dmdba@dmdsc01bin]$ /dm/dmdbms/dm8/bin/dmcssm INI_PATH=/dm/dmdbms/dm8/bin/dmcssm.ini
[monitor] 2024-03-09 15:24:27: CSS MONITOR V8
[monitor] 2024-03-09 15:24:32: CSS MONITOR SYSTEM IS READY.
[monitor] 2024-03-09 15:24:32: Wait CSS Control Node choosed...
[monitor] 2024-03-09 15:24:33: Wait CSS Control Node choosed succeed.
--查看所有组的信息
show
monitor current time:2024-03-09 15:13:17, n_group:3
=================== group[name = GRP_CSS, seq = 0, type = CSS, Control Node = 0] ========================================
[CSS0] auto check = TRUE, global info:
[ASM0] auto restart = FALSE
[DSC0] auto restart = FALSE
[CSS1] auto check = TRUE, global info:
[ASM1] auto restart = FALSE
[DSC1] auto restart = FALSE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2024-03-09 15:13:16 CSS0 0 5336 Control Node OPEN WORKING OK TRUE 6337885 6338031
2024-03-09 15:13:16 CSS1 1 5337 Normal Node OPEN WORKING OK TRUE 6337819 6337952
=================== group[name = GRP_ASM, seq = 1, type = ASM, Control Node = 0] ========================================
n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)
sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL
crash process over flag is TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2024-03-09 15:13:16 ASM0 0 5436 Control Node OPEN WORKING OK TRUE 6348051 6348171
2024-03-09 15:13:16 ASM1 1 5437 Normal Node OPEN WORKING OK TRUE 6346923 6347033
=================== group[name = GRP_DSC, seq = 2, type = DB, Control Node = 0] ========================================
n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)
sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL
crash process over flag is TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2024-03-09 15:13:16 DSC0 0 5236 Control Node OPEN WORKING OK TRUE 10189875 10189923
2024-03-09 15:13:16 DSC1 1 5236 Normal Node OPEN WORKING OK TRUE 10185740 10185782
==================================================================================================================
show
monitor current time:2024-03-09 15:13:46, n_group:3
=================== group[name = GRP_CSS, seq = 0, type = CSS, Control Node = 0] ========================================
[CSS0] auto check = TRUE, global info:
[ASM0] auto restart = FALSE
[DSC0] auto restart = FALSE
[CSS1] auto check = TRUE, global info:
[ASM1] auto restart = FALSE
[DSC1] auto restart = FALSE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2024-03-09 15:13:45 CSS0 0 5336 Control Node OPEN WORKING OK TRUE 6337885 6338061
2024-03-09 15:13:45 CSS1 1 5337 Normal Node OPEN WORKING OK TRUE 6337819 6337982
=================== group[name = GRP_ASM, seq = 1, type = ASM, Control Node = 0] ========================================
n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)
sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL
crash process over flag is TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2024-03-09 15:13:45 ASM0 0 5436 Control Node OPEN WORKING OK TRUE 6348051 6348200
2024-03-09 15:13:45 ASM1 1 5437 Normal Node OPEN WORKING OK TRUE 6346923 6347062
=================== group[name = GRP_DSC, seq = 2, type = DB, Control Node = 0] ========================================
n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)
sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL
crash process over flag is TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2024-03-09 15:13:45 DSC0 0 5236 Control Node OPEN WORKING OK TRUE 10189875 10189953
2024-03-09 15:13:45 DSC1 1 5236 Normal Node OPEN WORKING OK TRUE 10185740 10185812
==================================================================================================================
复制
3.13.2.启停集群
1.启动:
如未配置自动拉起ASM和DMSERVER,手动启动如下:
A机器:
[dmdba@dmdsc01 bin]$ DmCSSServiceCSS start
Starting DmCSSServiceCSS: [ OK ]
[dmdba@dmdsc01 bin]$ DmASMSvrServiceASM start
Starting DmASMSvrServiceASM: [ OK ]
--待B机器启动CSS和ASM后启动数据库
[dmdba@dmdsc01 bin]$ ./DmServiceDSC start
Starting DmServiceDSC: connnect dmasmtool(dmasmtoolm) successfully.
[ OK ]
B机器:
[dmdba@dmdsc02 ~]$ DmCSSServiceCSS start
Starting DmCSSServiceCSS: [ OK ]
[dmdba@dmdsc02 ~]$ DmASMSvrServiceASM start
Starting DmASMSvrServiceASM: [ OK ]
[dmdba@dmdsc02 bin]$ ./DmServiceDSC start
Starting DmServiceDSC: connnect dmasmtool(dmasmtoolm) successfully.
[ OK ]
2.停止
1、确认DSC集群状态及数据库会话
$cd /dm/dmdbms/dm8/bin
$./dmcssm ini_path=dmcssm.ini
show
确认集群状态正常
另起一个窗口登录,确认无活动会话
$cd /dm/dmdbms/dm8/bin
$./disql 账号/口令:端口
SQL>select * from gv$sessions where state='ACTIVE';
2、关闭DSC集群
#关闭数据库前两个节点做一次检查点
SQL>select checkpoint (100);
$cd /dm/dmdbms/dm8/bin
$./dmcssm ini_path=dmcssm.ini
ep stop GRP_DSC
--确定停库的过程中没有报错
ep stop GRP_ASM
--确定停ASM的过程中没有报错
show
确认数据库和ASM服务器均已停止,继续停DMCSS进程(两节点均执行)
$./DmCSSServiceCSS stop
复制
3.14.修改sysdba密码
[dmdba@dmdsc01 bin]$ disql
disql V8
用户名:密码:
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 12.907(ms)
SQL>
SQL> select instance_name from v$instance;
行号 INSTANCE_NAME
---------- -------------
1 DSC0
已用时间: 0.666(毫秒). 执行号:501.
SQL> Alter user sysdba identified by xxxxxxxxx;
复制
4配置dm_svc.conf
Linux环境:dm_svc.conf放在应用服务器/etc目录下。
Windows32环境:dm_svc.conf放在应用服务器System32目录下。
Windows64环境:dm_svc.conf放在应用服务器System32和SysWOW64目录下。
[root@~]# vi /etc/dm_svc.conf
TIME_ZONE=(+8:00)
LANGUAGE=(cn)
DSC1=(192.168.1.104:5236,192.168.1.105:5236)
[DSC1]
LOGIN_ENCRYPT=(0)
SWITCH_TIME=(20)
SWITCH_INTERVAL=(2000)
负载均衡测试:
[dmdba@dmdsc02 ~]$ disql SYSDBA/xxxxxxxxx@DSC1
服务器[192.168.1.105:5236]:处于普通打开状态
登录使用时间 : 17.728(ms)
上次登录ip : ::ffff:192.168.1.105
上次登录时间 : 2024-03-09 15:42:21
登录失败次数 : 0
口令是否过期 : 未过期
disql V8
SQL> exit
[dmdba@dmdsc02 ~]$ disql SYSDBA/xxxxxxxxx@DSC1
服务器[192.168.1.104:5236]:处于普通打开状态
登录使用时间 : 39.723(ms)
上次登录ip : ::ffff:192.168.1.104
上次登录时间 : 2024-03-09 15:42:33
登录失败次数 : 0
口令是否过期 : 未过期
disql V8
SQL> exit
复制
文章
阅读量
获赞