转自:https://www.cnblogs.com/binliubiao/p/15416631.html
DMDSC概述
DM 共享存储数据库集群全称 DM Data Shared Cluster,简称 DMDSC
DMDSC 特性
DM 共享存储数据库集群,允许多个数据库实例同时访问、操作同一数据库,具有高可用、高性能、负载均衡等特性。DMDSC 支持故障自动切换和故障自动重加入,某一个数据库实例故障后,不会导致数据库服务无法对外服务。
负载均衡
通过配置 DM 数据库连接服务名 来访问 DMDSC 集群,可以实现节点间的自动负载均衡,数据库连接请求会被自动、平均地分配到 DMDSC 集群中的各个节点。并且连接服务名支持 JDBC、DPI、ODBC、DCI、.Net Provider 等各种数据库接口。
组成
DMDSC 集群主要由数据库和数据库实例、共享存储、本地存储、通信网络、以及集群控制软件 DMCSS (DM Cluster Synchronization Services)组成。
数据库(Database)是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件等),保存在物理磁盘或文件系统中
数据库实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存
共享存储:DMDSC 集群要求将数据文件、控制文件、日志文件保存在共享存储上;配置 DMDSC 集群需要的 DCR、Voting disk 也必须保存在共享存储上。DMDSC 支持使用裸设备或 DMASM 文件系统作为共享存储。
本地存储:DMDSC 集群中,本地存储用来保存配置文件(记录数据库实例配置信息的 dm.ini、dmarch.ini、dmmal.ini),本地归档日志、远程归档日志
通信网络:网络分为内部网络和公共网络两个部分。
内部网络用于数据库实例之间交换信息和数据,MAL 链路使用的就是内部网络
公共网络用于对外提供数据库服务,客户端使用公共网络地址登录 DMDSC 集群,访问数据库。
集群控制(DMCSS):DMCSS 就是一款集群控制软件,专门负责监控集群中各个节点的运行状态
DMCSS 主要功能包括:管理集群的启动和关闭,控制节点故障处理,以及管理节点重加入流程
概念
DCR(DM Clusterware Registry)
DCR 是 DM 集群注册表的简称,用于存储、维护集群配置的详细信息,整个集群环境共享 DCR 配置信息,包括 DMDSC、DMASM、DMCSS 资源,包括实例名、监听端口、集群中故障节点信息等。
DCR 必须存储在集群中所有节点都可以访问到的共享存储中,并且只支持裸设备。在一个集群环境中只能配置一个 DCR 磁盘 。
表决磁盘(Voting Disk)
表决磁盘记录了集群成员信息,DM 集群通过 Voting Disk 进行心跳检测,确定集群中节点的状态,判断节点是否出现故障。当集群中出现网络故障时,使用 Voting Disk 来确定哪些 DMDSC 节点应该被踢出集群。表决磁盘还用来传递命令,在集群的不同状态(启动、节点故障、节点重加入等)DMCSS 通过 Voting Disk 传递控制命令,通知节点执行相应命令。
Voting Disk 必须存储在集群中所有节点都可以访问到的共享存储中,并且只支持裸设备。在一个集群环境中只能配置一个表决磁盘 。
集群中各实例启动时,通过访问 DCR 获取集群配置信息。被监控实例从 Voting Disk 读取监控命令,并向 Voting Disk 写入命令响应以及自身心跳信息;DMCSS 也向 Voting Disk 写入自己的心跳信息,并从 Voting Disk 访问各被监控节点的运行情况,并将监控命令写入 Voting Disk,供被监控实例访问执行。
HeartBeat(心跳机制)
DMCSS 的心跳机制是通过 Voting Disk 的 Disk Heartbeat
MAL 链路
MAL 系统是达梦数据库基于 TCP 协议实现的一种内部通信机制。使用 DMASM 文件系统的 DMDSC 集群中存在两套 MAL 系统,DMASM 服务器之间配置一套 MAL 系统(dmasvrmal.ini),dmserver 服务器之间配置一套 MAL 系统(dmmal.ini)。一旦 MAL 链路出现异常,DMCSS 会进行裁定,并从集群中踢出一个节点,保证集群环境正常运行。
与 DMDSC 相关的配置文件
DMDCR_CFG.INI
DMDCR.INI
DMINIT.INI
MAL 系统配置文件(DMMAL.INI、DMASVRMAL.INI)
DM.INI
DMDCR_CFG.INI
dmdcr_cfg.ini 是格式化 DCR 和 Voting Disk 的配置文件。配置信息包括三类:集群环境全局信息、集群组信息、以及组内节点信息。 使用 dmasmcmd 工具,可以根据 dmdcr_cfg.ini 配置文件,格式化 DCR 和 VotingDisk。
DMDCR.INI
dmdcr.ini 是 dmcss、dmasmsvr、dmasmtool 等工具的输入参数。记录了当前节点序列号以及 DCR 磁盘路径。
DMINIT.INI
dminit.ini 是 dminit 工具初始化数据库环境的配置文件。dminit 工具的命令行参数都可以放在 dminit.ini 中,比如db_name,auto_overwrite 等,dminit.ini 格式分为全局参数和节点参数。
MAL 系统配置文件(DMMAL.INI、DMASVRMAL.INI)
dmmal.ini 和 dmasvrmal.ini 都是 MAL 配置文件。使用同一套 MAL 系统的所有实例,MAL 系统配置文件要严格保持一致。
DM.INI
dm.ini 是 dmserver 使用的配置文件。各 DSC 节点之间的部分 INI 参数必须保持一致,如果不一致,会导致后启动的节点启动失败,日志会记录失败原因。每个节点用系统函数修改本节点的 INI 时,DSC 会将新修改值同步到其它节点,始终保持 INI 参数值的一致性。
DMCSS
概述
DMCSS(Dameng Cluster Synchronization Services)达梦集群同步服务,使用 DMASM 集群或 DMDSC 集群都必须要配置 DMCSS 服务。在 DMASM 集群或 DMDSC 集群中,每个节点都需要配置一个 DMCSS 服务。这些 MCSS 服务自身也构成一个集群,DMCSS集群中负责监控、管理整个 DMASM 集群和 DMDSC 集群的节点称为控制节点(controlnode),其他 DMCSS 节点称为普通节点(normal node)。DMCSS 普通节点不参与 DMASM集群和 DMDSC 集群管理,当 DMCSS 控制节点故障时,会从活动的普通节点中重新选取一个DMCSS 控制节点。
心跳信息
DMCSS 实例启动后,每间隔 1 秒向 Voting Disk 指定区域写入心跳信息(包括自身的状态、时间戳等),表示 DMCSS 节点处于活动状态。
选举 DMCSS 控制节点
DMCSS 启动后向 Voting Disk 写入信息,并读取其他 DMCSS 节点的信息,如果 DMCSS集群中还没有活动的控制节点,则选举 DMCSS 控制节点。
DMCSS 选举的原则有两条:
先启动的 DMCSS 作为控制节点
DMCSS 同时启动,则选择节点号小的节点为控制节点
DMASM
DMASM 磁盘
DMASM 磁盘是指经过 dmasmcmd 工具格式化,可以被 dmasmsvr 识别的物理磁盘
DMASMCMD
DMASMCMD 是 DMASM 文件系统初始化工具,用来格式化裸设备为 DMASM 磁盘,并初始化 DCR Disk、Voting Disk。格式化 DMASM 磁盘就是在裸设备的头部写入 DMASM 磁盘特征描述符号,包括 DMASM 标识串、DMASM 磁盘名、以及 DMASM 磁盘大小等信息。其中Voting Disk 和 DCR Disk 也会被格式化为 DMASM 磁盘。
功能
格式化 DMASM 磁盘
初始化 DCR Disk,同时指定密码
初始化 Voting Disk
导出 DCR Disk 配置信息
导入 DCR Disk 配置信息
清理 DCR Disk 中指定组的故障节点信息
创建用于模拟裸设备的磁盘文件(用于单机模拟 DMDSC 环境)
列出指定路径下面磁盘属性
联机修改 DCR 磁盘,扩展节点
用法
创建 DMASM 磁盘
create asmdisk disk_path disk_name [size(M)]
-- 格式化为 DCR 磁盘
create dcrdisk disk_path disk_name [size(M)]
-- 格式化为 Voting Disk
create votedisk disk_path disk_name [size(M)]
初始化 DCR & Voting Disk
-- 根据配置文件 dmdcr_cfg.ini 的内容,初始化 DCR 磁盘。设置登录 ASM 文件系统的密码,密码要用单引号括起来
init dcrdisk disk_path from ini_pathidentified by password
init dcrdisk '/dev/dmasm/dcr' from '/home/asm/dmdcr_cfg.ini' identified by ''
-- 根据配置文件 dmdcr_cfg.ini 的内容,初始化 Voting Disk
init votedisk disk_path from ini_path
init votedisk '/dev/dmasm/vote' from '/home/asm/dmdcr_cfg.ini'
导出 DCR 的配置文件
-- 解析 DCR 磁盘内容,导出到 dmdcr_cfg.ini 文件
export dcrdisk disk_path to ini_path
export dcrdisk '/dev/dmasm/dcr' to '/home/asm/dmdcr_cfg.ini'
导入 DCR 的配置文件
根据配置文件/data/dmdcr_cfg.ini 的内容,将修改导入 DCR 磁盘
import dcrdisk ini_path to disk_path
import dcrdisk '/data/dmdcr_cfg.ini' to '/data/asmdisks/disk0.asm'
校验 DCR 磁盘
check dcrdisk disk_path
check dcrdisk '/dev/dmasm/dcr'
校验 DCR 磁盘信息是否正常,根据打印出来的 code 值判断,如果等于 0,则表示 DCR 磁盘正常,如果小于 0,则说明 DCR 磁盘故障,需要重新初始化
清理指定组的故障节点信息
清理 DCR Disk 中指定组的故障节点信息,可借助 export 命令查看对应组的DCR_GRP_N_ERR_EP 和 DCR_GRP_ERR_EP_ARR 信息 , 清理成功后 , 指 定组 的DCR_GRP_N_ERR_EP 值为 0,DCR_GRP_ERR_EP_ARR 内容为空
clear dcrdisk err_ep_arr disk_path group_name
clear dcrdisk err_ep_arr '/dev/dmasm/dcr' 'GRP_DSC'
显示指定路径下面磁盘属性
listdisks path
listdisks '/dev/dmasm/'
显示 path 路径下面所有磁盘的信息,分为三种类型:
normal disk:普通磁盘;
unused asmdisk:初始化未使用的 asmdisk;
used asmdisk:已经使用的 asmdisk。
联机修改 DCR 磁盘,扩展节点
联机修改 DCR 磁盘,扩展节点,会将新增节点信息写回 dcr 磁盘
extend dcrdisk disk_path from ini_path
extend dcrdisk '/dev/dmasm/disk0.asm' from 'd:\dmdcr_cfg.ini'
DMASMSVR
DMASMSVR 是提供 DMASM 服务的主要载体,每个提供 DMASM 服务的节点都必须启动一个 DMASMSVR 服务器,这些 DMASMSVR 一起组成共享文件集群系统,提供共享文件的全局并发控制。
DMASMSVR 实例之间使用 MAL 系统进行信息和数据的传递。
DMASMSVR 集群的启动、关闭、故障处理等流程由 DMCSS 控制,DMASMSVR 定时向Voting Disk 写入时间戳、状态、命令、以及命令执行结果等信息,DMCSS 控制节点定时从 Voting Disk 读取信息,检查 DMASMSVR 实例的状态变化,启动相应的处理流程。
DMASMSVR 集群中,只有一个控制节点,控制节点以外的其他节点叫做普通节点,DMASMSVR 控制节点由 DMCSS 选取;所有 DDL 操作(比如创建文件,创建磁盘组等)都是在控制节点执行,用户登录普通节点发起的 DDL 请求,会通过 MAL 系统发送到控制节点执行并返回;而 DMASM 文件的读、写等操作,则由登录节点直接完成,不需要传递到控制节点执行。
DMASMSVR 启动格式
dmasmsvr DCR_INI =/dm/ dbconf/dmdcr.ini
dmdcr.ini
dmdcr.ini 配置文件记录了 DCR 磁盘路径、实例序列号等信息;如果不指定DCR_INI 参数,dmasmsvr 默认在当前路径下查找 dmdcr.ini 文件
DMASMTOOL
DMASMTOOL 是 DMASM 文件系统管理工具,提供了一套类 Linux 文件操作命令,用于管理 DMASM 文件,是管理、维护 DMASM 的好帮手。DMASMTOOL 工具使用 DMASMAPI 连接到 DMAMSVR,并调用相应的 DMASMAPI 函数,实现创建、拷贝、删除等各种文件操作命令;DMASMTOOL 还支持 DMASM 文件和操作系统文件的相互拷贝。
DMASMTOOL 登录 DMASMSVR
DMASMTOOL 可以登录本地 DMASMSVR,也可以登录位于其他节点的 DMASMSVR,并执行各种文件操作命令。一般建议登录本地 DMASMSVR 服务器,避免文件操作过程中的网络开销,提升执行效率。
使用 DMASMTOOL 或 DMASMAPI 函数 dmasm_connect()登录 DMASMSVR 时,用户名只能为“ASMSYS”。若为本地登录,不校验密码;若为远程登录,应使用初始化 DCR 磁盘时设置的登录 ASM 文件系统的密码。
DMASMTOOL 启动命令
dmasmtool DCR_INI =/dm/ dbconf/dmdcr.ini
dmasmtool 的最大命令长度是 1024
脚本文件必须以"#asm script file"开头,否则认为是无效脚本文件;脚本中其他行以"#"开始表示注释。
支持功能
部署实施
部署结构图
环境说明
主机规划
主机名称
IP地址
操作系统
数据库软件
网卡
node1
192.168.10.201(对外服务)
银河麒麟V10
DM8
每台2块网卡
node1
172.168.0.201(私有ip)
node2
192.168.10.202(对外服务)
银河麒麟V10
DM8
node2
172.168.0.202(私有ip)
内网用于 MAL 通讯
存储规划
名称
存储路径
容量
说明
软件安装路径
/dm/dbms
60G
软件安装到本地磁盘上
数据文件路径
dmasm
依据业务需求
数据存储在共享存储上
归档文件路径
/dmarch
依据业务需求
归档文件
远程归档日志目录
/dm_remote_arch
备份文件路径
/dmbackup
依据业务需求
备份到本地磁盘
配置文件路径
/dm/dbconf
配置文件在节点的本地磁盘
共享存储规划
DM 支持的共享存储有两种:裸设备和DMASM
ASM磁盘组名称
容量
说明
DCR
1 GB
存放DCR配置,一个集群只能一个磁盘
VOTE
1 GB
存放表决文件,一个集群只能一个磁盘
DMLOG
10GB
存放redo日志文件
DMDATA
500GB * N (lun)
存放数据文件,每个磁盘容量500GB
网络端口
实例名称
端口类型
端口
用途
CSS01
DCR_EP_PORT
9341
CSS 进程 TCP 连接端口
CSS02
DCR_EP_PORT
9341
CSS 进程 TCP 连接端口
ASM01
DCR_EP_PORT
9351
ASM 进程 TCP 连接的端口
ASM02
DCR_EP_PORT
9351
ASM 进程 TCP 连接的端口
DSC01
DCR_EP_PORT
5237
数据库实例监听端口
DSC01
DCR_CHECK_PORT
9741
DCR 检查数据库实例监听端口
DSC02
DCR_EP_PORT
5237
数据库实例监听端口
DSC02
DCR_CHECK_PORT
9741
DCR 检查数据库实例监听端口
ASM01 MAL
MAL_PORT
7236
ASM 的 MAL 系统 TCP 连接的端口
ASM02 MAL
MAL_PORT
7236
ASM 的 MAL 系统 TCP 连接的端口
DSC01 MAL
MAL_PORT
9236
数据库实例的 MAL 系统 TCP 连接的端口
DSC02 MAL
MAL_PORT
9236
数据库实例的 MAL 系统 TCP 连接的端口
前期准备(所有节点)[root用户]
主机名
# 方法1
hostnamectl set -hostname [name]
# 方法2
nmcli general hostname [name]
systemctl restart systemd-hostnamed
配置hosts文件
cat >> /etc/hosts <<-'EOF'
192.168.10.201 node1
172.168.0.201 node1-priv
192.168.10.202 node2
172.168.0.202 node2-priv
EOF
关闭selinux
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
关闭防火墙
systemctl status -l firewalld
systemctl disable --now firewalld
systemctl list-unit-files|grep firewalld
创建用户
USR_PWD=$(</dev/urandom tr -dc '1234567890#abcdefghijklmnopqrstuvwzyxABCDEFGHIJKLMNOPQRSTUVWZYX' |head -c16; echo
UrXpiaLFMHbT5
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
echo "${USR_PWD} " | passwd --stdin dmdba
创建软件目录
mkdir -p /dm/{dbms,dbconf,soft}
mkdir -p /dmarch
mkdir -p /dmbackup
chown -R dmdba:dinstall /dm /dmarch /dmbackup
chmod -R 755 /dm /dmarch /dmbackup
配置系统资源限制
cat > /etc/security/limits.d/98-dm.conf <<-'EOF'
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc 16384
dmdba hard nproc 16384
dmdba soft stack 10240
dmdba hard stack 10240
EOF
su - dmdba -c "ulimit -a"
共享存储配置
检查磁盘UUID等配置信息
华为存储多路径
EMC存储多路径
日立存储多路径
/opt/DynamicLinkManager/bin/dlnkmgr view -lu/opt/DynamicLinkManager/bin/dlnkmgr view -path
(看情况)情况磁盘头信息
dd if =/dev/ zero of =/dev/ sdc bs=8192 count=51200
配置规则文件
cat > /etc/udev/rules.d/99 -dmasm .rules <<-'EOF'
KERNEL=="sd*" ,ENV{DEVTYPE}=="disk" ,SUBSYSTEM=="block" , PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name " ,RESULT=="36000c29df8b346cd16bc4f82414dc2b9" , SYMLINK+="dmasm/dcr" ,OWNER="dmdba" , GROUP ="dinstall" ,MODE="0660" ,OPTIONS="nowatch"
KERNEL=="sd*" ,ENV{DEVTYPE}=="disk" ,SUBSYSTEM=="block" , PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name " ,RESULT=="36000c2951289f970d5aa450e0570d727" , SYMLINK+="dmasm/vote" ,OWNER="dmdba" , GROUP ="dinstall" ,MODE="0660" ,OPTIONS="nowatch"
KERNEL=="sd*" ,ENV{DEVTYPE}=="disk" ,SUBSYSTEM=="block" , PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name " ,RESULT=="36000c29c2e2eb12e5aa21df5d6a87875" , SYMLINK+="dmasm/log" ,OWNER="dmdba" , GROUP ="dinstall" ,MODE="0660" ,OPTIONS="nowatch"
KERNEL=="sd*" ,ENV{DEVTYPE}=="disk" ,SUBSYSTEM=="block" , PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name " ,RESULT=="36000c2924f9362797deba9ae66e9f2b2" , SYMLINK+="dmasm/data001" ,OWNER="dmdba" , GROUP ="dinstall" ,MODE="0660" ,OPTIONS="nowatch"
EOF
加载规则
/sbin/udevadm trigger --type =devices --action=change
/sbin/udevadm control --reload-rules
/sbin/partprobe
/sbin/udevadm control --reload-rules
检查确认
详细配置过程
准备软件
sha256sum -c dm8_20210917_x86_kylin10_64_ent_8.1.2.70_pack1.iso_SHA256.txt
mount -o loop dm8_20210917_x86_kylin10_64_ent_8.1.2.70_pack1.iso /mnt
cp -p /mnt/DMInstall.bin /dm/soft/
chown dmdba:dinstall /dm/soft/DMInstall.bin
chmod 755 /dm/soft/DMInstall.bin
安装DM软件(所有节点)
(交互式)命令行安装
/dm/soft/DMInstall.bin -i
静默安装
/dm/soft/DMInstall.bin -q auto_install.xml
auto_install.xml
<?xml version="1.0"?>
<DATABASE >
<LANGUAGE > zh</LANGUAGE >
<TIME_ZONE > +08:00</TIME_ZONE >
<KEY > </KEY >
<INSTALL_TYPE > 0</INSTALL_TYPE >
<INSTALL_PATH > /dm/dbms/</INSTALL_PATH >
<INIT_DB > n</INIT_DB >
</DATABASE >
执行root脚本
/dm/dbms/script/root/root_installer.sh
作用
创建必要配置文件
创建DmAPService服务并启动
配置环境变量
echo "export PATH=\$DM_HOME /bin:\$DM_HOME /tool:\$PATH " >> ~/.bash_profile
配置DMASM实例
所有节点配置DMASM参数文件(dmdcr_cfg.ini)
dmdcr_cfg.ini 是格式化 DCR 和 Voting Disk 的配置文件。配置信息包括三类:集群环境全局信息、集群组信息、以及组内节点信息。
cat > /dm/dbconf/dmdcr_cfg.ini <<-'EOF'
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/dmasm/vote
DCR_OGUID = 63635
[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = GRP_CSS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_CSS]
DCR_EP_NAME = CSS01
DCR_EP_HOST = 172.168.0.201
DCR_EP_PORT = 9341
[GRP_CSS]
DCR_EP_NAME = CSS02
DCR_EP_HOST = 172.168.0.202
DCR_EP_PORT = 9341
[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 = ASM01
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 172.168.0.201
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/dmasm
[GRP_ASM]
DCR_EP_NAME = ASM02
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 172.168.0.202
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/dmasm
[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 = DSC01
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5237
DCR_CHECK_PORT = 9741
[GRP_DSC]
DCR_EP_NAME = DSC02
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5237
DCR_CHECK_PORT = 9741
EOF
使用 DMASMCMD 工具初始化DCR和Vote Disk
编写脚本文件(init_dcr_vote.sql)
cat> / dm/ dbconf/ init_dcr_vote.sql << - 'EOF'
#asm script file
create dcrdisk '/dev/dmasm/dcr' 'DCR'
create votedisk '/dev/dmasm/vote' 'VOTE'
create asmdisk '/dev/dmasm/log' 'LOG'
create asmdisk '/dev/dmasm/data001' 'DATA001'
create asmdisk '/dev/dmasm/data002' 'DATA002'
init dcrdisk '/dev/dmasm/dcr' from '/dm/dbconf/dmdcr_cfg.ini' identified by 'fKMdwv#c3rIh3JOg'
init votedisk '/dev/dmasm/vote' from '/dm/dbconf/dmdcr_cfg.ini'
EOF
使用 dmasmcmd 工具,根据 dmdcr_cfg.ini 配置文件,格式化 DCR 和 Voting Disk。
/dm/dbms/bin/dmasmcmd script_file=/dm/dbconf/init_dcr_vote.sql
检查确认
cat > /dm/dbconf/init_check.sql<<-'EOF'
check dcrdisk '/dev/dmasm/dcr'
check dcrdisk '/dev/dmasm/vote'
check dcrdisk '/dev/dmasm/data001'
check dcrdisk '/dev/dmasm/data002'
EOF
/dm/dbms/bin/dmasmcmd script_file=/dm/dbconf/init_check.sql
DMDCR.INI
dmdcr.ini 是 dmcss、dmasmsvr、dmasmtool 等工具的输入参数。记录了当前节点序列号以及 DCR 磁盘路径。注意:节点的DMDCR_SEQNO值依次增加。 如果不配置 css 自动启动 asm 和 db 则需要配置DMDCR_ASM_RESTART_INTERVAL 和DMDCR_DB_RESTART_INTERVAL 为 0
节点1配置
cat > /dm/dbconf/dmdcr.ini<<-'EOF'
DMDCR_PATH = /dev/dmasm/dcr
DMDCR_MAL_PATH = /dm/dbconf/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_ASM_RESTART_INTERVAL = 10
DMDCR_ASM_STARTUP_CMD = /dm/dbms/bin/dmasmsvr dcr_ini=/dm/dbconf/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 30
DMDCR_DB_STARTUP_CMD = /dm/dbms/bin/dmserver path=/dm/dbconf/dsc0_config/dm.ini dcr_ini=/dm/dbconf/dmdcr.ini
EOF
节点2配置
cat > /dm/dbconf/dmdcr.ini<<-'EOF'
DMDCR_PATH = /dev/dmasm/dcr
DMDCR_MAL_PATH = /dm/dbconf/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_ASM_RESTART_INTERVAL = 10
DMDCR_ASM_STARTUP_CMD = /dm/dbms/bin/dmasmsvr dcr_ini=/dm/dbconf/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 30
DMDCR_DB_STARTUP_CMD = /dm/dbms/bin/dmserver path=/dm/dbconf/dsc1_config/dm.ini dcr_ini=/dm/dbconf/dmdcr.ini
EOF
MAL 系统配置文件(dmmal.ini, dmasvrmal.ini)
dmasmsvr 和 dmserver 使用不同的 MAL 系统,需要配置两套 MAL 系统,配置文件 dmmal.ini 需要分别生成,保存到不同的目录下,并且 dmmal.ini 中的配置项不能重复、冲突。
说明
DMASMSVR 组成的集群环境使用 MAL 系统进行通讯,需要在 dmdcr.ini 配置文件中配置 DMDCR_MAL_PATH 参数,指定 MAL 配置文件路径。例如:DMDCR_MAL_PATH=/home/data/dmasvrmal.ini
使用 MAL 系统的 dmserver 实例,需要将 dm.ini 配置项 MAL_INI 设置为 1。同 时 MAL 系统配置文件名称必须为 dmmal.ini
DMASMSVR和DMDSC集群中的dmserver实例需要分别配置一套独立的MAL系统, 两者配置的 MAL 环境不能冲突。
所有节点配置DMASM 的 MAL 参数文件(dmasvrmal.ini)
cat > /dm/dbconf/dmasvrmal.ini <<-'EOF'
[MAL_INST1]
MAL_INST_NAME = ASM01
MAL_HOST = 172.168.0.201
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM02
MAL_HOST = 172.168.0.202
MAL_PORT = 7236
EOF
启动DMASM实例
所有节点分别先后在前端窗口手动启动dmcss、dmasmsvr服务
/dm/dbms/bin/dmcss DCR_INI=/dm/dbconf/dmdcr.ini
/dm/dbms/bin/dmasmsvr DCR_INI=/dm/dbconf/dmdcr.ini
如果DMCSS 配置有自动拉起 dmasmsvr 的功能,可以等待 DMCSS 自动拉起 dmasmsvr
问题: 运行dmcss DCR_INI=/dm/cbconf/dmdcr.ini命令时遇到如下错误
dmcss: error while loading shared libraries: libdmcalc.so: cannot open shared object file : No such file or directory
解决方案
ln -s /dm/dbms/bin/*.so /lib64/
创建DMASM磁盘组
使用 dmasmtool 工具交互模式创建 DMASM 磁盘组
# 仅在一个节点执行dmasmtool DCR_INI=/dm/dbconf/dmdcr.ini命令
/dm/dbms/bin/dmasmtool DCR_INI=/dm/dbconf/dmdcr.ini
ASM> create diskgroup 'DMLOG' asmdisk '/dev/dmasm/log'
ASM>create diskgroup 'DMDATA' asmdisk '/dev/dmasm/data001'
ASM> alter diskgroup 'DMDATA' add asmdisk '/dev/dmasm/data002'
配置数据库
dminit.ini文件
dminit.ini 是 dminit 工具初始化数据库环境的配置文件。与初始化库使用普通文件系统不同,如果使用裸设备或者 ASM 文件系统,必须使用 dminit 工具的 control 参数指定 dminit.ini 文件。dminit 工具的命令行参数都可以放在 dminit.ini 中,比如: db_name,auto_overwrite 等,dminit.ini 格式分为全局参数和节点参数。
编写dminit.ini文件
cat > /dm/dbconf/dminit.ini <<-'EOF'
db_name = dsc
system_path = +DMDATA/data
system = +DMDATA/data/dsc/system.dbf
system_size = 128
roll = +DMDATA/data/dsc/roll.dbf
roll_size = 128
main = +DMDATA/data/dsc/main.dbf
main_size = 128
ctl_path = +DMDATA/data/dsc/dm.ctl
ctl_size = 8
log_size = 1024
dcr_path = /dev/dmasm/dcr
dcr_seqno = 0
auto_overwrite = 1
charset = 1
page_size = 16
LENGTH_IN_CHAR = 1
BLANK_PAD_MODE = 1
[DSC01]
config_path = /dm/dbconf/dsc01
port_num = 5237
mal_host = 172.168.0.201
mal_port = 9236
log_path = +DMLOG/log/log01.log
log_path = +DMLOG/log/log02.log
log_path = +DMLOG/log/log03.log
[DSC02]
config_path = /dm/dbconf/dsc02
port_num = 5237
mal_host = 172.168.0.202
mal_port = 9236
log_path = +DMLOG/log/log01.log
log_path = +DMLOG/log/log02.log
log_path = +DMLOG/log/log03.log
EOF
初始化数据库(节点1)
生成/dm/dbconf/dsc01和dsc02两个目录,并生成配置文件 dm.ini 和 dmmal.ini。
/dm/dbms/bin/dminit control=/dm/dbconf/dminit.ini
scp -r dsc02 172.168.0.202:/dm/dbconf/
手工启动数据库
dmserver /dm/dbconf/dsc01_config/dm.ini dcr_ini=/dm/dbconf/dmdcr.ini
dmserver /dm/dbconf/dsc02_config/dm.ini dcr_ini=/dm/dbconf/dmdcr.ini
配置服务名配置dm_svc.conf服务名文件
cat >> /etc/dm_svc.conf <<-'EOF'
dmdsc_svc=(192.168.10.201:5237,192.168.10.202:5237)
SWITCH_TIME=(10000)
SWITCH_INTERVAL=(100)
EOF
服务注册
用法
/dm/dbms/script/root/dm_service_installer.sh -h
Usage: dm_service_installer.sh -t service_type [-p service_name_postfix] [-dm_ini dm_ini_file]
[-watcher_ini watcher_ini_file ] [-monitor_ini monitor_ini_file] [-cssm_ini cssm_ini_file]
[-dfs_ini dfs_ini_file] [-dcr_ini dcr_ini_file]
[-dss_ini dss_ini_file] [-drs_ini drs_ini_file] [-dras_ini dras_ini_file] [-dcs_ini dcs_ini_file] [-server server_info]
[-dmap_ini dmap_ini_file] [-dpc_mode SP|MP|BP] [-m open|mount] [-y dependent_service] [-auto true |false ]
or dm_service_installer.sh [-s service_file_path]
or dm_service_installer.sh -h
-t 服务类型,包括dmimon,dmap,dmserver,dmwatcher,dmmonitor,dmcss,dmcssm,dmasmsvr,dmdcs,dmdrs,dmdras,dmdss
-p 服务名后缀,对于dmimon,dmap服务类型无效
-dm_ini dm.ini文件路径
-watcher_ini dmwatcher.ini文件路径.
-monitor_ini dmmonitor.ini文件路径.
-dcr_ini dmdcr.ini文件路径.
-cssm_ini dmcssm.ini文件路径.
-dss_ini dss.ini文件路径.
-drs_ini drs.ini文件路径.
-dras_ini dras.ini文件路径.
-dcs_ini dcs.ini文件路径.
-dfs_ini dfs.ini文件路径.
-dmap_ini dmap.ini文件路径.
-dpc_mode DPC节点类型.
-server 服务器信息(IP:PORT)
-auto 设置服务是否自动启动,值为true 或false ,默认true .
-m 设置服务器启动模式open或mount,只针对dmserver服务类型生效,可选
-y 设置依赖服务,此选项只针对systemd服务环境下的dmserver和dmasmsvr服务生效
-s 服务脚本路径,设置则忽略除-y外的其他参数选项
-h 帮助
注册CSS服务
/dm/dbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /db/dbconf/dmdcr.ini -p CSS
注册ASM服务
/dm/dbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /db/dbconf/dmdcr.ini -p ASM -y DmCSSServiceCSS
注册DB服务
/dm/dbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dbconf/dsc01_config/dm.ini -dcr_ini /db/dbconf/dmdcr.ini -p DSC01 -y DmASMSvrServiceASM
/dm/dbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dbconf/dsc02_config/dm.ini -dcr_ini /db/dbconf/dmdcr.ini -p DSC02 -y DmASMSvrServiceASM
启动DMCSS和DMASM 服务
注册服务之后,当操作系统重启时,数据DMCSS和DMASM服务会随着操作系统的启动而启动,数据库此时,也会被拉起来。在停止数据库时,建议手动停止。按依赖顺序,先停数据库服务,然后再停DMASM服务,最后停DMCSS服务
启动服务
启动CSS
systemctl enable --now DmCSSServiceCSS
启动ASM
systemctl enable --now DmASMSvrServiceASM
启动DB
systemctl enable --now DmServiceDSC01
systemctl enable --now DmServiceDSC02
停止服务
关闭DB
systemctl stop DmServiceDSC01
systemctl stop DmServiceDSC02
关闭ASM
systemctl stop DmASMSvrServiceDmAsmsvr
关闭CSS
systemctl stop DmCSSServiceDmCss
检查服务状态
systemctl status -l DmCSSServiceDmCss
systemctl status -l DmASMSvrServiceDmAsmsvr
systemctl status -l DmServiceDWGLPTDB
systemctl status -l DmAPService.service
后期配置优化
归档模式配置
通过INI文件方式配置
将所有节点dm.ini文件ARCH_INI设置为1
vi /dm/dbconf/dsc01_config/dm.int
ARCH_INI = 1
配置dmarch.ini文件
cat > /dm/dbconf/dsc01_config/dm.int<<-'EOF'
ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch/local
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 51200
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC02
ARCH_INCOMING_PATH = /dmarch/remote
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 51200
EOF
cat > /dm/dbconf/dsc02_config/dm.int<<-'EOF'
ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch/local
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 51200
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC01
ARCH_INCOMING_PATH = /dmarch/remote
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 51200
EOF
重启服务
systemctl stop DmServiceDSC01
systemctl stop DmServiceDSC02
systemctl start DmServiceDSC01
systemctl start DmServiceDSC02
通过SQL语句方式配置
实例 dsc01 上配置
alter database mount;
alter database archivelog;
alter database add archivelog 'DEST=/dmarch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=102400' ;
alter database add archivelog 'DEST=dsc02, TYPE=REMOTE, FILE_SIZE=1024, SPACE_LIMIT=102400, INCOMING_PATH=/dm_remote_arch' ;
alter database open ;
实例 dsc02 上配置
alter database mount;
alter database archivelog;
alter database add archivelog 'DEST=/dmarch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=102400' ;
alter database add archivelog 'DEST=dsc01, TYPE=REMOTE, FILE_SIZE=1024, SPACE_LIMIT=102400, INCOMING_PATH=/dm_remote_arch' ;
alter database open ;
检查配置
select para_name, para_value from v$dm_ini where para_name in ('ARCH_INI' ,'RLOG_APPEND_LOGIC' ) ;
切换归档
alter system archive log current ;
查看归档
select sequence# seq, name , to_char (first_time,'yyyy-mm-dd hh24:mi:ss') first_time, to_char (next_time,'yyyy-mm-dd hh24:mi:ss') next_time, first_change# , next_change# from v$archived_log ;
监控DMDSC
配置监视器
配置dmcssm.ini文件
cat > /dm/dbconf/dmcssm.ini <<-'EOF'
CSSM_OGUID = 63635
CSSM_CSS_IP = 172.168.0.201:9341
CSSM_CSS_IP = 172.168.0.202:9341
CSSM_LOG_PATH = /dm/dbms/log
CSSM_LOG_FILE_SIZE = 1024
CSSM_LOG_SPACE_LIMIT = 0
EOF
启动监视器检查服务状态
dmcssm INI_PATH=/dm/dbconf/dmcssm.ini
命令说明
监视器提供一系列命令,支持集群的状态信息查看以及节点的故障处理,可输入 help 命令,查看命令使用说明
命令名称
说明
help
显示帮助信息
show [group_name]
显示指定的组信息,如果没有指定 group_name,则显示所有组信息
show config
显示 dmdcr_cfg.ini 的配置信息
show monitor
显示当前连接到主 CSS 的所有监视器信息
set group_name auto restart on
打开指定组的自动拉起功能(只修改 dmcss 内存值)
set group_name auto restart off
关闭指定组的自动拉起功能(只修改 dmcss 内存值)
open force group_name
强制 open 指定的 ASM 或 DB 组
ep startup group_name
启动指定的 ASM 或 DB 组
ep stop group_name
退出指定的 ASM 或 DB 组
ep halt group_name.ep_name
强制退出指定组中的指定节点
extend node
联机扩展节点
ep crash group_name.ep_name
手动指定节点故障
check crash over group_name
检查指定组故障处理是否真正结束
exit
退出监视器
通过系统视图检查
DMDSC信息
实例状态
select NAME,INSTANCE_NAME,INSTANCE_NUMBER from v$instance;
select * from v$dsc_ep_info;
查看DCR配置的全局信息
select * from v$dcr_info;
查看DCR配置的组信息
select * from v$dcr_group;
查看DCR配置的节点信息
select GROUP_NAME,EP_NAME,EP_SEQNO,EP_HOST,EP_PORT,SHM_KEY,SHM_SIZE,ASM_LOAD_PATH from v$dcr_ep;
统计DSC环境内TYPE类型请求时间
select * from v$dsc_request_statistic;
统计lbs_xx类型最耗时间的前100页地址信息
select * from v$dsc_request_page_statistic;
显示DSC环境各个节点数据页LSN
select * from v$dsc_crash_over_info;
ASM 信息
查看ASM磁盘信息
select GROUP_ID,DISK_ID,DISK_NAME,DISK_PATH,SIZE,FREE_AUNO from v$asmdisk;
查看ASM磁盘组信息
select * from v$asmgroup;
查看所有的ASM文件信息
查看文件路径信息
查询重做日志文件路径
SELECT GROUP_ID, FILE_ID, PATH FROM V$RLOGFILE ORDER BY 2 ;
查看表空间状态及所对应的数据文件
SELECT t.name
,t.status$
,d.path
,d.status$
,d.total_size * d.page_size / 1024 / 1024 total_mb
,d.free_size * d.page_size / 1024 / 1024 free_mb
,d.auto_extend
,d.max_size / 1024
FROM v$datafile d, v$tablespace t
WHERE d.group_id = t.id;
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库