专栏/培训园地/ 文章详情 /

达梦DSC集群安装部署

DM_271235 2024/03/13 1338 0 1
摘要

1搭建DSC集群前期配置
1.1前期准备
1.1.1集群规划
image.png
操作系统版本: 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机器:
image.png

B机器:
image.png
2)检查存储空间
DM完全安装需要 1GB 的存储空间,用户需要提前规划好安装目录,预留足够的存储空间。用户在 DM 安装前也应该为数据库实例预留足够的存储空间,规划好数据路径和备份路径。用户可使用以下命令检查存储空间:
A机器:
image.png
B机器:
image.png
注意:生产上达梦数据库存放目录应单独划分一块磁盘存放,不能和系统盘共用。
DM 安装程序在安装时将产生临时文件,临时文件需要 1GB 的存储空间,临时文件目录默认为/tmp。用户可以使用以下命令检查存储空间。如下图所示:
A机器:
image.png
B机器:
image.png
如果/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机器:
image.png
B机器:
image.png
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.存储规划
image.png
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

复制

评论
后发表回复
行者无疆🍀
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 这一步是什么意思?
发布于 2024/06/11 09:46

作者

文章

阅读量

获赞

扫一扫
联系客服