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

2024-08-23 04:04

本文主要是介绍【达梦数据库】shell脚本获取集群内确认监视器地址,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 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

在这里插入图片描述

这篇关于【达梦数据库】shell脚本获取集群内确认监视器地址的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1098295

相关文章

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

C#实现获取电脑中的端口号和硬件信息

《C#实现获取电脑中的端口号和硬件信息》这篇文章主要为大家详细介绍了C#实现获取电脑中的端口号和硬件信息的相关方法,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 我们经常在使用一个串口软件的时候,发现软件中的端口号并不是普通的COM1,而是带有硬件信息的。那么如果我们使用C#编写软件时候,如

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

C#实现WinForm控件焦点的获取与失去

《C#实现WinForm控件焦点的获取与失去》在一个数据输入表单中,当用户从一个文本框切换到另一个文本框时,需要准确地判断焦点的转移,以便进行数据验证、提示信息显示等操作,本文将探讨Winform控件... 目录前言获取焦点改变TabIndex属性值调用Focus方法失去焦点总结最后前言在一个数据输入表单

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

python中os.stat().st_size、os.path.getsize()获取文件大小

《python中os.stat().st_size、os.path.getsize()获取文件大小》本文介绍了使用os.stat()和os.path.getsize()函数获取文件大小,文中通过示例代... 目录一、os.stat().st_size二、os.path.getsize()三、函数封装一、os

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

python写个唤醒睡眠电脑的脚本

《python写个唤醒睡眠电脑的脚本》这篇文章主要为大家详细介绍了如何使用python写个唤醒睡眠电脑的脚本,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 环境:win10python3.12问题描述:怎么用python写个唤醒睡眠电脑的脚本?解决方案:1.唤醒处于睡眠状