【达梦数据库】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

相关文章

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

springboot的controller中如何获取applicatim.yml的配置值

《springboot的controller中如何获取applicatim.yml的配置值》本文介绍了在SpringBoot的Controller中获取application.yml配置值的四种方式,... 目录1. 使用@Value注解(最常用)application.yml 配置Controller 中

MySQL MHA集群详解(数据库高可用)

《MySQLMHA集群详解(数据库高可用)》MHA(MasterHighAvailability)是开源MySQL高可用管理工具,用于自动故障检测与转移,支持异步或半同步复制的MySQL主从架构,本... 目录mysql 高可用方案:MHA 详解与实战1. MHA 简介2. MHA 的组件组成(1)MHA

MySQL 数据库进阶之SQL 数据操作与子查询操作大全

《MySQL数据库进阶之SQL数据操作与子查询操作大全》本文详细介绍了SQL中的子查询、数据添加(INSERT)、数据修改(UPDATE)和数据删除(DELETE、TRUNCATE、DROP)操作... 目录一、子查询:嵌套在查询中的查询1.1 子查询的基本语法1.2 子查询的实战示例二、数据添加:INSE

通过DBeaver连接GaussDB数据库的实战案例

《通过DBeaver连接GaussDB数据库的实战案例》DBeaver是一个通用的数据库客户端,可以通过配置不同驱动连接各种不同的数据库,:本文主要介绍通过DBeaver连接GaussDB数据库的... 目录​一、前置条件​二、连接步骤​三、常见问题与解决方案​1. 驱动未找到​2. 连接超时​3. 权限不

golang实现nacos获取配置和服务注册-支持集群详解

《golang实现nacos获取配置和服务注册-支持集群详解》文章介绍了如何在Go语言中使用Nacos获取配置和服务注册,支持集群初始化,客户端结构体中的IpAddresses可以配置多个地址,新客户... 目录golang nacos获取配置和服务注册-支持集群初始化客户端可选参数配置new一个客户端 支

MySQL数据库读写分离与负载均衡的实现逻辑

《MySQL数据库读写分离与负载均衡的实现逻辑》读写分离与负载均衡是数据库优化的关键策略,读写分离的核心是将数据库的读操作与写操作分离,本文给大家介绍MySQL数据库读写分离与负载均衡的实现方式,感兴... 目录读写分离与负载均衡的核心概念与目的读写分离的必要性与实现逻辑读写分离的实现方式及优缺点读负载均衡

Go语言中如何进行数据库查询操作

《Go语言中如何进行数据库查询操作》在Go语言中,与数据库交互通常通过使用数据库驱动来实现,Go语言支持多种数据库,如MySQL、PostgreSQL、SQLite等,每种数据库都有其对应的官方或第三... 查询函数QueryRow和Query详细对比特性QueryRowQuery返回值数量1个:*sql

MySQL集群高可用架构的两种使用小结

《MySQL集群高可用架构的两种使用小结》本文介绍了MySQL的两种高可用解决方案:组复制(MGR)和MasterHighAvailability(MHA),文中通过示例代码介绍的非常详细,对大家的学... 目录一、mysql高可用之组复制(MGR)1.1 组复制核心特性与优势1.2 组复制架构原理1.3

Docker + Redis 部署集群的实现步骤

《Docker+Redis部署集群的实现步骤》本文详细介绍了在三台服务器上部署高可用Redis集群的完整流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、环境准备1. 服务器规划(3 台服务器)2. 防火墙配置(三台服务器均执行)3. 安装 docke