【达梦数据库】shell脚本获取集群内确认监视器地址

news2024/12/28 8:49:18

目录

  • 1、需求
  • 2、想法
  • 3、实现代码
  • 4、检验效果
    • 4.1、集群内任意节点使用`非dmdba用户`执行
    • 4.2、集群内任意节点使用`dmdba用户`执行
      • 4.2.1、数据库主备节点执行
      • 4.2.1、数据库确认监视器节点执行
    • 4.3、非集群内节点执行

1、需求

有确认监视器的集群,在集群的任何一个集群上执行脚本都能知道确认监视器的地址是哪台,达到效果就行。

2、想法

  • 找到dmserver然后去库里面去查确认监视器节点:SELECT MON_IP FROM "SYS"."v\$dmmonitor" WHERE MON_CONFIRM='TRUE';
  • 或者直接找到dmmonitor:ps -ef|grep '[d]mmonitor',然后进一步确认

3、实现代码

#!/bin/bash
#############################脚本描述,区域开始##############################
## Filename : 
## Write by lpb
## Descript : 寻找集群中确认监视器所在服务器IP,本脚本必须以dmdba用户执行
#############################脚本描述,区域结束##############################


#############################配置数据库信息-必填##############################
USER=SYSDBA				#用户名
PASSWORD=SYSDBA 		#密码
HOST=localhost  		#主机名,默认使用localhost
PORT=5236  				#端口号,默认5236
#############################配置数据库信息-必填##############################


#############################内部逻辑处理##############################
# 检查是否为dmdba用户  
if [ ! "x$(whoami)" = "xdmdba" ]; then    
  echo "必须以dmdba用户执行此脚本!" >&2    
  exit 1    
fi

# 检查dmmonitor进程是否存在  
if pgrep -x dmmonitor > /dev/null; then   
    DMMONITOR_EXIST=true  
else    
    DMMONITOR_EXIST=false  
fi  
  
# 检查dmserver进程是否存在  
if pgrep -x dmserver > /dev/null; then   
    DMSERVER_EXIST=true  
else   
    DMSERVER_EXIST=false  
fi  


# 逻辑判断
if [ "$DMMONITOR_EXIST" = "false" ] && [ "$DMSERVER_EXIST" = "false" ]; then  
	# 打印结果
    echo "此节点不存在dmmonitor和dmserver服务,或dmmonitor和dmserver服务未启动,请更换节点执行此脚本!"
	
	# 根据需要设置退出状态,0正常退出,1异常退出
	exit 0
fi


# 逻辑判断 
if [ "$DMSERVER_EXIST" == "true" ]; then
	# 执行 disql 命令并捕获输出
	result=$(disql "${USER}/${PASSWORD}@${HOST}:${PORT}" -E "SELECT MON_IP FROM "SYS"."v\$dmmonitor" WHERE MON_CONFIRM='TRUE';")
	
	# 可以使用更简单的 grep 和 sed 组合  
    ip_address=$(echo "${result}" | grep -oP '::ffff:([0-9.]+)' | head -n 1) 
	
	# 检查ip_address变量是否为空  
	if [ -z "$ip_address" ]; then  
		# 打印结果
		echo "集群内没有确认监视器!"  
	else  
		# 打印 IP 地址
		echo "确认监视器 IP 地址为: ${ip_address}"  
	fi
	
	# 根据需要设置退出状态,0正常退出,1异常退出
	exit 0 
fi
#disql命令可以直接在命令行中执行SQL查询并返回结果  
#等价于: disql SYSDBA/SYSDBA@localhost:5236 -E "SELECT MON_IP FROM "SYS"."v\$dmmonitor" WHERE MON_CONFIRM='TRUE';"
#disql "${USER}/${PASSWORD}@${HOST}:${PORT}" -E "SELECT MON_IP FROM "SYS"."v\$dmmonitor" WHERE MON_CONFIRM='TRUE';"


# 逻辑判断  
if [ "$DMMONITOR_EXIST" == "true" ] && [ "$DMSERVER_EXIST" == "false" ]; then
	# 打印 IP 地址
	echo "本机疑似存在确认监视器,请通过 ps -ef|grep '[d]mmonitor' 进一步确认!" 

	# 根据需要设置退出状态,0正常退出,1异常退出
	exit 0 
fi

4、检验效果

4.1、集群内任意节点使用非dmdba用户执行

[root@localhost0 opt]# sh MonitorSearch5.sh

在这里插入图片描述

4.2、集群内任意节点使用dmdba用户执行

4.2.1、数据库主备节点执行

[root@localhost0 opt]# sh MonitorSearch5.sh

在这里插入图片描述

4.2.1、数据库确认监视器节点执行

[root@localhost0 opt]# sh MonitorSearch5.sh

在这里插入图片描述

4.3、非集群内节点执行

[root@localhost0 opt]# sh MonitorSearch5.sh

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2065632.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android13 app后台无法启动Abort background activity starts from

总纲 android13 rom 开发总纲说明 目录 1.前言 2.log分析 3.代码查找分析 4.修改方法 5.编译测试 6彩蛋 1.前言 Android13 用户app后台无法启动,提示Abort background activity starts from 10111 2.log分析 08-07 21:37:36.703: W/ActivityTaskManager(440): Back…

Llama3.1大模型

背景 Llama 3.1是一款由Meta(前Facebook)推出的先进大型语言模型。它在自然语言处理领域具有显著优势,为用户提供高质量的文本生成、理解和推理能力。 Transformer架构 Transformer是一种神经网络架构,可以处理文本、音频、视频和…

无线数传模块有啥特点?

一 、 模块特点  支持 RS485RTU 、RS232、UART 标准协议  AES加密  供电电压DC4.5V——5.5V  工作频段 410~525MHz, 免申请频段  标准配置提供多达 115信道 …

数据结构-递归算法-第四天

参考文献: 华为云 博客园 labuladong 的算法笔记 递归是一种编程技巧,一种解决问题的思维方式;分治算法和动态规划很大程度上是递归思想基础上的(虽然动态规划的最终版本大都不是递归了,但解题思想还是离不开递归&…

数学建模之数据分析【七】:对Pandas DataFrame 进行切片

文章目录 一、切片简介二、创建Pandas数据框三、使用iloc进行切片3.1 对行进行切片3.2 对列进行切片3.3 Dataframe选中特定单元格 四、使用loc创建切片4.1 使用Python对Dataframe中的行进行切片4.2 指定单元格 五、在Python中使用布尔条件六、结论 对 Pandas DataFrames 进行切…

水战再起波澜,“怡宝”要下好怎样一盘棋?

不少投资者常把那些刚需性强、永远也不可能淘汰的产业称为“日不落产业”,从细分板块来看,水无疑具有一定代表性。农夫山泉掌门人钟晱晱曾直言:“我选择了一个日不落的产业,你永远要喝水,不可能不喝水。” 多年下来&a…

Python | Leetcode Python题解之第367题有效的完全平方数

题目&#xff1a; 题解&#xff1a; class Solution:def isPerfectSquare(self, num: int) -> bool:x0 numwhile True:x1 (x0 num / x0) / 2if x0 - x1 < 1e-6:breakx0 x1x0 int(x0)return x0 * x0 num

SpringBoot集成kafka-获取生产者发送的消息(阻塞式和非阻塞式获取)

说明 CompletableFuture对象需要的SpringBoot版本为3.X.X以上&#xff0c;需要的kafka依赖版本为3.X.X以上&#xff0c;需要的jdk版本17以上。 1、阻塞式&#xff08;等待式&#xff09;获取生产者发送的消息 生产者&#xff1a; package com.power.producer;import org.ap…

<数据集>车内视角行人识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;6470张 标注数量(xml文件个数)&#xff1a;6470 标注数量(txt文件个数)&#xff1a;6470 标注类别数&#xff1a;1 标注类别名称&#xff1a;[pedestrian] 序号类别名称图片数框数1pedestrian647029587 使用标注…

c++链表(list)

前言 链表作为一个常见的数据结构&#xff0c;在高频插入删除的场景下有独特的优势&#xff0c;在内存的使用上也极少有浪费可以按需申请。今天我们就来简单的学习一下这种数据结构&#xff0c;链表也有很多不同的实现&#xff0c;我们这里和标准库保持一致&#xff0c;实现带…

UDP通信函数补充 | TCP

UDP流程补充&#xff1a; recvfrom() 这是一个系统调用&#xff0c;用于从套接字接收数据的函数。该函数通常与无连接的数据报服务&#xff08;如 UDP&#xff09;一起使用&#xff0c;但也可以与其他类型的套接字使用。 函数原型为&#xff1a; ssize_t recvfrom(int sock…

使用Node-RED实现和部署物联网入侵检测的机器学习管道

整理自 《Implementing and Deploying an ML Pipeline for IoT Intrusion Detection with Node-RED》&#xff0c;由 Yimin Zhang 等人撰写&#xff0c;发表于 2023 年 CPS-IoT Week Workshops。以下是根据提供的 PDF 内容整理的论文的详细主要内容&#xff1a; 摘要 (Abstra…

Linux入门——09 共享内存

1.共享内存原理 OS内的每个进程都会有自己的内核结构&#xff08;task_struct&#xff09;和虚拟地址空间,通过页表与物理内存进程映射。 如果让两个不同的进程共享内存&#xff0c;首先就是在内存中申请一块空间&#xff08;共享内存&#xff09;&#xff0c; 然后将建立好…

Unity XR Interaction Toolkit 踩坑记录

1&#xff1a;按下 grap/select 键 物品直接飞到手上 2 按下 grap/select 键 物品一点点的想自己移动

《机器学习》—— AUC评估指标

文章目录 一、什么是AUC&#xff1f;1、什么是ROC曲线&#xff1f;2、ROC曲线的绘制 二、如何计算AUC的值三、代码实现AUC值的计算四、AUC的优缺点 一、什么是AUC&#xff1f; 机器学习中的AUC&#xff08;Area Under the Curve&#xff09;是一个重要的评估指标&#xff0c;特…

走进虚拟机逃逸技术之VMware Escape漏洞CVE-2023-20872复现

走进虚拟机逃逸技术之VMware Escape漏洞CVE-2023-20872复现 技术分享 技术分享 起初&#xff0c;为了学习虚拟机逃逸相关技术&#xff0c;也为了搞懂硬件虚拟化。于是请教了某巨佬后告诉我一本书&#xff0c;看完之后为了验证我理解到的硬件虚拟化及虚拟化逃逸原理是否正确&am…

图书管理系统详细设计

需求概述 按照需求分析文档中的规格要求&#xff0c;使用条形码扫描器进书、借书、还书&#xff0c;使得信息传递准确、流畅。同时&#xff0c;系统最大限度地实现易安装&#xff0c;易维护性&#xff0c;易操作性&#xff0c;运行稳定&#xff0c;安全可靠。 软件结构 系统由…

如何让虚拟机识别到宿主机的USB设备

我的实验环境&#xff1a; Windows宿主机VirtualBox虚拟化软件一个Linux虚机一个8G的USB磁盘 首先要让虚拟机能看到宿主机的USB设备&#xff0c;这是在VirtualBox中设置的。 选中虚机&#xff0c;右键选择“设置”菜单&#xff0c;再单击“USB设备”&#xff1a; 选中“启用…

Python | Leetcode Python题解之第365题水壶问题

题目&#xff1a; 题解&#xff1a; class Solution:def canMeasureWater(self, x: int, y: int, z: int) -> bool:if x y < z:return Falseif x 0 or y 0:return z 0 or x y zreturn z % math.gcd(x, y) 0

Alembic:python中数据库迁移的瑞士军刀

Alembic 简介 Alembic 是由 SQLAlchemy 的创始人 Mike Bayer 设计的一个数据库迁移工具。它不仅支持自动迁移脚本生成&#xff0c;还允许开发者手动编辑迁移脚本来满足特定的需求。Alembic 通过提供一个环境来跟踪数据库模式的变更历史&#xff0c;确保数据库的版本与应用代码…