概述
本文就在达梦数据库守护集群架构中,如何通过监视器命令查看主备状态及监视器其他常用命令进行介绍。
1.集群架构和规划介绍
主备集群架构如下图:
主库、备库、监视器分别部署在A,B,C三台机器上面。
集群规划见如下表格:
关于此集群部署和配置文件说明请参考链接:
DM8守护集群(主备)安装部署
2.监视器介绍
谈达梦守护集群监视器,首先介绍DM 数据守护系统结构参考图 :
主要由主库、备库、Redo 日志、Redo 日志传输、Redo 日志重演、守护进程(dmwatcher)、监视器(dmmonitor)组成。
本文内容是针对监视器常用命令展开,下面就监视器多种作用进行介绍:
监视器(dmmonitor)是基于监视器接口实现的一个命令行工具,是 DM 数据守护系统的重要组成部分。
通过监视器,可以监控数据守护系统的运行情况,获取主备库状态、守护进程状态以及主备库数据同步情况等信息。同时,监视器(dmmonitor)还提供了一系列命令来管理数据守护系统。
监视器的基本作用如下:
监控数据守护系统
接收守护进程发送的消息,显示主、备数据库状态变化,以及故障切换过程中,数据库模式、状态变化的完整过程。
管理数据守护系统
用户可以在监视器上输入命令,启动、停止守护进程的监控功能,执行主备库切换、备库故障接管等操作。
确认状态信息
用于故障自动切换的数据守护系统中,主、备库进行故障处理之前,需要通过监视器进行信息确认,确保对应的备库或者主库是真的产生异常了,避免主备库之间网络故障引发脑裂。
发起故障自动接管命令
用于故障自动切换的数据守护系统中,主库发生故障时,挑选符合接管条件的备库,并通知备库执行接管操作。
3.监视器常用命令
3.1主备集群状态查看show命令
在监视服务器启动监视器,命令如下:
[dmdba@OwumVYU4IUuZaxxP ~]$ /opt/dmdbms/bin/dmmonitor /opt/dmdbms/bin/dmmonitor.ini
通过show命令查看主备状态:
show
2023-07-23 10:03:33
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 45331 FALSE AUTO FALSE
<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
10.0.0.7 5436 2023-07-23 10:03:33 GLOBAL VALID OPEN GRP1_RT_02 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
221.229.107.225 5236 OK GRP1_RT_02 OPEN PRIMARY 0 0 REALTIME VALID 76768 121309 76768 121309 NONE
<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
10.0.0.5 5436 2023-07-23 10:03:33 GLOBAL VALID OPEN GRP1_RT_01 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID
EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
221.229.103.202 5236 OK GRP1_RT_01 OPEN STANDBY 0 0 REALTIME VALID 57854 121308 57854 121308 NONE
DATABASE(GRP1_RT_01) APPLY INFO FROM (GRP1_RT_02), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[76767, 76767, 76768], (RLSN, SLSN, KLSN)[121308, 121308, 121309], N_TSK[0], TSK_MEM_USE[512]
REDO_LSN_ARR: (121308)
下面将show 命令输出内容的字段含义进行介绍:
组全局字段信息
GROUP:守护进程组名。
OGUID:守护进程组配置的唯一 OGUID 值。
MON_CONFIRM:监视器是否配置为确认模式,值为 TRUE 或 FALSE。当前是非确认模式就是不能接管故障进行自动切换。
MODE:当前配置的切换模式,AUTO 表示故障自动切换模式,MANUAL 表示故障手动切换模式。
MPP_FLAG:当前是否为 MPP 主备环境,值为 TRUE 或 FALSE。因当前环境是主备架构所以此项值为FALSE。
库全局字段信息
守护进程和监视器是以库为单位进行管理的,以下信息属于库的全局信息,部分守护进程相关的信息直接取自控制守护进程。
显示这个集群有两个数据库,对应字段含义如下:
DW_IP:守护进程的 IP 地址,取自控制守护进程。可以理解为集群内部IP地址。
MAL_DW_PORT:守护进程的监听端口,取自控制守护进程。
INST_IP 是数据库对外服务IP地址。
INST_PORT 是数据库对外服务端口。
简单总结上面信息是数据库(主、备)的内网和外网IP地址和对应的监听端口。
守护进程信息
下面以10.0.0.7 守护进程信息输出字段进行介绍:
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
10.0.0.7 5436 2023-07-23 10:03:33 GLOBAL VALID OPEN GRP1_RT_02 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
WTIME:守护进程本地的当前时间,取自控制守护进程。
WTYPE:守护进程配置的守护类型,包括 LOCAL/GLOBAL 两种类型,取自控制守护进程。
WCTLSTAT:守护进程控制文件状态,包括 Valid/Split/Invalid 三种状态,对于配置为本地守护类型的实例,由于不需要有守护进程控制文件,该字段值为 NULL。
WSTATUS:守护进程状态,取自控制守护进程。当前守护进程状态值是OPEN。
INAME:库名称,取自控制节点实例名。当前值是GRP1_RT_02,和上面集群规划实例名字匹配。
N_EP:库的节点个数。当前值是1、
N_OK:此字段对 DMDSC 集群内的节点有效,表示 DMDSC 集群内 OK 节点个数。
ISTATUS:数据库状态,包括 Startup/After Redo/Mount/Open/Suspend/,当前数据库状态是OPEN。
IMODE:数据库模式,包括 Unknown/Normal/Primary/Standby 这四种模式,当前是主库状态,由控制守护进程综合当前所有节点实例的模式得出。
RTYPE:数据库配置的归档类型,只统计 REALTIME/TIMELY/SYNC 这三种归档类型,如果这三种归档都没有配置,则显示为 NONE。
RSTAT:此字段对备库有效,表示主库到备库的归档状态,可能为 Valid/Invalid/Async_send/Unknown,其中 Async_send 为同步备库特有的归档状态。
对于除同步备库之外的本地守护类型备库,此字段为 NULL,对于主库本身,此字段值为 Valid。该字段值要从备库对应的主库实例上取,
如果当前没有活动主库或者备库无法确认对应的主库,则该字段显示为 Unknown。
数据库实例信息
以实例节点为维度输出字段说明:
EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
221.229.107.225 5236 OK GRP1_RT_02 OPEN PRIMARY 0 0 REALTIME VALID 76768 121309 76768 121309 NONE
INST_PORT:节点实例的监听端口。
INST_OK:控制守护进程认定的节点实例状态,OK 或 ERROR。
INAME:节点实例名称。
ISTATUS:节点实例状态,包括 Startup/After Redo/Mount/Open/Suspend/Shutdown 这几种状态。
IMODE:节点实例模式,包括 Normal/Primary/Standby 这三种模式。
DSC_SEQNO:此字段对单节点可忽略,只对 DMDSC 集群内的节点有意义,表示节点在 DMDSC 集群内的序号。
DSC_CTL_NODE:此字段对单节点可忽略,只对 DMDSC 集群内的节点有意义,表示 DMDSC 集群内控制节点的序号。
RTYPE:节点实例配置的归档类型,只统计 REALTIME/TIMELY/SYNC 这三种归档类型,如果这三种归档都没有配置,则显示为 NONE。
RSTAT:此字段对备库控制节点有效,表示主库到备库控制节点的归档状态,可能为 Valid/Invalid/Async_send/Unknown,
其中 Async_send 为同步备库特有的归档状态。对于除同步备库之外的本地守护类型备库,此字段为 NULL,对于主库本身,此字段值为 Valid。
该字段值要从备库对应的主库实例上取,如果当前没有活动主库或者备库无法确认对应的主库,则该字段显示为 Unknown。
FSEQ:节点实例已经写入联机日志的RLOG_PKG包序号。
FLSN:节点实例的文件LSN,指已经写入联机日志文件的最大LSN值。
CSEQ:节点实例的系统当前PKG_SEQNO,指当前数据库最新产生的RLOG_PKG包的序号。
CLSN:节点实例的系统当前LSN,指当前数据库最新产生的LSN值。
DW_STAT_FLAG:节点当前的执行标记。
综上介绍,查看集群状态应该状态关注的字段有INST_OK,ISTATUS,IMODE三个字段。
INST_OK值都为ok为正常;
ISTATUS值都为open为正常;
IMODE值为Primary/Standby两种模式。
以下图红色框标注为示例:
4.其他常用命令说明
4.1 list 命令
查看守护进程的配置信息。
list
#-------------------dmwatcher configuration of instance(GRP1_RT_01)----------------------#
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 20
INST_ERROR_TIME = 20
INST_RECOVER_TIME = 60
INST_INI = /opt/dmdbms/data/DAMENG/dm.ini
DCR_INI =
INST_OGUID = 45331
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver
INST_AUTO_RESTART = 1
INST_SERVICE_IP_CHECK = 0
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
#-------------------dmwatcher configuration of instance(GRP1_RT_02)----------------------#
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 20
INST_ERROR_TIME = 20
INST_RECOVER_TIME = 60
INST_INI = /opt/dmdbms/data/DAMENG/dm.ini
DCR_INI =
INST_OGUID = 45331
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver
INST_AUTO_RESTART = 1
INST_SERVICE_IP_CHECK = 0
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
4.2 show global info 命令
查看所有实例组的信息。
show global info
2023-07-23 12:52:19
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 45331 FALSE AUTO FALSE
<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
10.0.0.7 5436 2023-07-23 12:52:18 GLOBAL VALID OPEN GRP1_RT_02 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
10.0.0.5 5436 2023-07-23 12:52:19 GLOBAL VALID OPEN GRP1_RT_01 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID
#================================================================================#
4.3 tip命令
查看集群当前运行状态。
tip
[monitor] 2023-07-23 12:52:56: [!!! 提示:本监视器不是确认监视器,在故障自动切换模式下如果发生主库故障,本监视器无法执行自动接管 !!!]
[monitor] 2023-07-23 12:52:56: 实例GRP1_RT_02[PRIMARY, OPEN, ISTAT_SAME:TRUE]不可加入其他实例,守护进程状态:OPEN,Open记录状态:VALID
[monitor] 2023-07-23 12:52:56: 实例GRP1_RT_02[PRIMARY, OPEN, ISTAT_SAME:TRUE]当前没有命令正在执行
[monitor] 2023-07-23 12:52:56: 实例GRP1_RT_02[PRIMARY, OPEN, ISTAT_SAME:TRUE]运行正常, 守护进程是OPEN状态,守护类型是GLOBAL
[monitor] 2023-07-23 12:52:56: 实例GRP1_RT_01[STANDBY, OPEN, ISTAT_SAME:TRUE]可加入实例GRP1_RT_02[PRIMARY, OPEN, ISTAT_SAME:TRUE]
[monitor] 2023-07-23 12:52:56: 实例GRP1_RT_01[STANDBY, OPEN, ISTAT_SAME:TRUE]当前没有命令正在执行
[monitor] 2023-07-23 12:52:56: 实例GRP1_RT_01[STANDBY, OPEN, ISTAT_SAME:TRUE]运行正常, 守护进程是OPEN状态,守护类型是GLOBAL
[monitor] 2023-07-23 12:52:56: 组(GRP1)当前活动实例运行正常
[monitor] 2023-07-23 12:52:57: 所有组中的活动实例运行正常!
4.4 choose switchover 命令
主机正常:查看可切换为主机的实例列表。
choose switchover GRP1
Can choose one of the following instances to do switchover:
1: GRP1_RT_01
4.5 switchover GRP1.实例名 命令
主机正常:使用指定组的指定实例,切换为主机。
choose switchover GRP1
Can choose one of the following instances to do switchover:
1: GRP1_RT_01
switchover GRP1.GRP1_RT_01
[monitor] 2023-07-23 12:57:10: 开始切换实例GRP1_RT_01
[monitor] 2023-07-23 12:57:10: 通知守护进程GRP1_RT_02切换SWITCHOVER状态
[monitor] 2023-07-23 12:57:11: 守护进程(GRP1_RT_02)状态切换 [OPEN-->SWITCHOVER]
[monitor] 2023-07-23 12:57:12: 切换守护进程GRP1_RT_02为SWITCHOVER状态成功
[monitor] 2023-07-23 12:57:12: 通知守护进程GRP1_RT_01切换SWITCHOVER状态
[monitor] 2023-07-23 12:57:12: 守护进程(GRP1_RT_01)状态切换 [OPEN-->SWITCHOVER]
[monitor] 2023-07-23 12:57:12: 切换守护进程GRP1_RT_01为SWITCHOVER状态成功
[monitor] 2023-07-23 12:57:12: 实例GRP1_RT_02开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor] 2023-07-23 12:57:12: 实例GRP1_RT_02执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor] 2023-07-23 12:57:13: 实例GRP1_RT_01开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor] 2023-07-23 12:57:13: 实例GRP1_RT_01执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor] 2023-07-23 12:57:13: 实例GRP1_RT_02开始执行ALTER DATABASE MOUNT语句
[monitor] 2023-07-23 12:57:13: 实例GRP1_RT_02执行ALTER DATABASE MOUNT语句成功
[monitor] 2023-07-23 12:57:13: 实例GRP1_RT_01开始执行SP_APPLY_KEEP_PKG()语句
[monitor] 2023-07-23 12:57:13: 实例GRP1_RT_01执行SP_APPLY_KEEP_PKG()语句成功
[monitor] 2023-07-23 12:57:13: 实例GRP1_RT_01开始执行ALTER DATABASE MOUNT语句
[monitor] 2023-07-23 12:57:14: 实例GRP1_RT_01执行ALTER DATABASE MOUNT语句成功
[monitor] 2023-07-23 12:57:14: 实例GRP1_RT_02开始执行ALTER DATABASE STANDBY语句
[monitor] 2023-07-23 12:57:15: 实例GRP1_RT_02执行ALTER DATABASE STANDBY语句成功
[monitor] 2023-07-23 12:57:15: 实例GRP1_RT_01开始执行ALTER DATABASE PRIMARY语句
[monitor] 2023-07-23 12:57:15: 实例GRP1_RT_01执行ALTER DATABASE PRIMARY语句成功
[monitor] 2023-07-23 12:57:15: 通知实例GRP1_RT_01修改所有归档状态无效
[monitor] 2023-07-23 12:57:16: 修改所有实例归档为无效状态成功
[monitor] 2023-07-23 12:57:16: 实例GRP1_RT_02开始执行ALTER DATABASE OPEN FORCE语句
[monitor] 2023-07-23 12:57:16: 实例GRP1_RT_02执行ALTER DATABASE OPEN FORCE语句成功
[monitor] 2023-07-23 12:57:16: 实例GRP1_RT_01开始执行ALTER DATABASE OPEN FORCE语句
[monitor] 2023-07-23 12:57:16: 实例GRP1_RT_01执行ALTER DATABASE OPEN FORCE语句成功
[monitor] 2023-07-23 12:57:16: 实例GRP1_RT_02开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor] 2023-07-23 12:57:16: 实例GRP1_RT_02执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor] 2023-07-23 12:57:16: 实例GRP1_RT_01开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor] 2023-07-23 12:57:17: 实例GRP1_RT_01执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor] 2023-07-23 12:57:17: 通知守护进程GRP1_RT_02切换OPEN状态
[monitor] 2023-07-23 12:57:17: 守护进程(GRP1_RT_02)状态切换 [SWITCHOVER-->OPEN]
[monitor] 2023-07-23 12:57:18: 切换守护进程GRP1_RT_02为OPEN状态成功
[monitor] 2023-07-23 12:57:18: 通知守护进程GRP1_RT_01切换OPEN状态
[monitor] 2023-07-23 12:57:18: 守护进程(GRP1_RT_01)状态切换 [SWITCHOVER-->OPEN]
[monitor] 2023-07-23 12:57:19: 切换守护进程GRP1_RT_01为OPEN状态成功
[monitor] 2023-07-23 12:57:19: 通知组(GRP1)的守护进程执行清理操作
[monitor] 2023-07-23 12:57:19: 清理守护进程(GRP1_RT_01)请求成功
2023-07-23 12:57:20
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 45331 FALSE AUTO FALSE
<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
10.0.0.5 5436 2023-07-23 12:57:19 GLOBAL VALID OPEN GRP1_RT_01 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
221.229.103.202 5236 OK GRP1_RT_01 OPEN PRIMARY 0 0 REALTIME VALID 80240 124965 80240 124965 NONE
<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
10.0.0.7 5436 2023-07-23 12:57:19 GLOBAL VALID OPEN GRP1_RT_02 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME INVALID
EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
221.229.107.225 5236 OK GRP1_RT_02 OPEN STANDBY 0 0 REALTIME INVALID 80238 124780 80238 124780 NONE
DATABASE(GRP1_RT_02) APPLY INFO FROM (GRP1_RT_01), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[80238, 80238, 80238], (RLSN, SLSN, KLSN)[124780, 124780, 124780], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (124780)
#================================================================================#
[monitor] 2023-07-23 12:57:20: 清理守护进程(GRP1_RT_02)请求成功
[monitor] 2023-07-23 12:57:20: 实例GRP1_RT_01切换成功
[monitor] 2023-07-23 12:57:21: 守护进程(GRP1_RT_01)状态切换 [OPEN-->RECOVERY]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2023-07-23 12:57:21 RECOVERY OK GRP1_RT_01 OPEN PRIMARY VALID 12 124966 124966
[monitor] 2023-07-23 12:57:25: 守护进程(GRP1_RT_01)状态切换 [RECOVERY-->OPEN]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2023-07-23 12:57:25 OPEN OK GRP1_RT_01 OPEN PRIMARY VALID 12 124967 124968
4.6 监视器其它常用命令介绍
总结
首先,介绍了DM数据库守护集群架构中,通过监视器查看主备状态,并详细介绍输出的字段含义。
其次,还介绍了常用的list、show global info、tip、choose switchover、switchover命令并给出了命令输出结果。
最后,介绍了监视器其它常用命令。
通过本文的介绍,大家可以通过监视器查看并判断主备集群状态并可以进行手工主备切换,希望对大家有所帮助。
关于达梦数据库更多学习内容,欢迎访问达梦社区:
https://eco.dameng.com