openGauss通过VIP实现的故障转移

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 📣 ## 1.文章前言
    • 📣 ## 2.CM管理两节
      • ✨ 2.1 何为CM
      • ✨ 2.2 CM的特点
      • ✨ 2.3 XML配置文件
    • 📣 ## 3.集群VIP管理
      • ✨ 3.1 增加sudo权限
      • ✨ 3.2 添加VIP
      • ✨ 3.3 配置参数
      • ✨ 3.4 重启集群
    • 📣 ## 4.测试故障转移

前言

本文详细阐述了openGauss通过CM管理,实现的VIP故障转移全过程

📣 ## 1.文章前言

随着目前信创产业的发展,应项目的需求,通过高可用的方式实现数据库的故障转移。于是花了点时间研究,通过CM管理,实现了VIP故障转移全过程,在经历了这次故障转移之后,我觉得有必要分享我在此过程中获得的见解

📣 ## 2.CM管理两节

✨ 2.1 何为CM

CM(Cluster Manager)是一款数据库管理模块。支持自定义资源监控,提供了数据库主备的状态监控、网络通信故障监控、文件系统故障监控、故障自动主备切换等能力。提供了丰富的数据库管理能力,如节点、实例级的启停,数据库实例状态查询、主备切换、日志管理等。提供了通过REST接口远程查询和接收集群状态的能力。

✨ 2.2 CM的特点

高可用:CM易用性提升支持一键式关闭CM集群服务;支持和内核的安装部署解耦;支持按事件调用用户自定义脚本;支持CM组件单独升级,增强数据库集群可靠性;CM根据配置信息,支持用户自定义组件的监控和管需要注意的是,一主一备模式下,CM只支持基本的安装,启停,检测能力,其他功能不支持。高可用:CM支持VIP管理通过VIP可以直接找到主机,连接重连更准更快(毫秒级别);支持主机故障,CM选出新主时,VIP漂移到新的主上;当出现双主时,依然可以通过VIP访问到唯一一个主机,降低了双主丢数据的风险。

✨ 2.3 XML配置文件

<?xml version="1.0" encoding="UTF-8"?>
<ROOT><!-- openGauss整体信息 --><CLUSTER><!-- 数据库名称 --><PARAM name="clusterName" value="opengauss" /><!-- 数据库节点名称(hostname) --><PARAM name="nodeNames" value="opengauss51m,opengauss51b" /><!-- 数据库安装目录,与数据库所需其它路径相互独立,没有包含关系--><PARAM name="gaussdbAppPath" value="/openGauss/app" /><!-- 日志目录--><PARAM name="gaussdbLogPath" value="/openGauss/log/omm" /><!-- 临时文件目录--><PARAM name="tmpMppdbPath" value="/openGauss/tmp"/><!-- 数据库工具目录--><PARAM name="gaussdbToolPath" value="/openGauss/om" /><!-- 数据库core文件目录--><PARAM name="corePath" value="/openGauss/corefile"/><!-- 节点IP,与数据库节点名称列表一一对应 --><PARAM name="backIp1s" value="192.168.6.11,192.168.6.12"/> </CLUSTER><!-- 每台服务器上的节点部署信息 --><DEVICELIST><!-- 节点1上的部署信息 --><DEVICE sn="opengauss51m"><!-- 节点1的主机名称 --><PARAM name="name" value="opengauss51m"/><!-- 节点1所在的AZ及AZ优先级 --><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --><PARAM name="backIp1" value="192.168.6.11"/><PARAM name="sshIp1" value="192.168.6.11"/><!-- cm主 --><PARAM name="cmsNum" value="1"/><PARAM name="cmDir" value="/openGauss/cm"/><PARAM name="cmServerPortBase" value="15300"/><PARAM name="cmServerListenIp1" value="192.168.6.11,192.168.6.12"/><PARAM name="cmServerHaIp1" value="192.168.6.11,192.168.6.12"/><!-- cmServerlevel目前只支持1 --><PARAM name="cmServerlevel" value="1"/><!-- cms主及所有备的hostname --><PARAM name="cmServerRelation" value="opengauss51m,opengauss51b"/><!--dn--><PARAM name="dataNum" value="1"/><PARAM name="dataPortBase" value="15400"/><PARAM name="dataNode1" value="/openGauss/data/dn,opengauss51b,/openGauss/data/dn"/><PARAM name="dataNode1_syncNum" value="0"/></DEVICE><!-- 节点2上的节点部署信息,其中"name"的值配置为主机名称 --><DEVICE sn="opengauss51b"><!-- 节点2的主机名称 --><PARAM name="name" value="opengauss51b"/><!-- 节点2所在的AZ及AZ优先级 --><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><!-- 节点2的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --><PARAM name="backIp1" value="192.168.6.12"/><PARAM name="sshIp1" value="192.168.6.12"/><!-- cm --><PARAM name="cmDir" value="/openGauss/cm"/><PARAM name="cmServerPortStandby" value="15300"/></DEVICE></DEVICELIST>
</ROOT>

📣 ## 3.集群VIP管理

✨ 3.1 增加sudo权限

给omm用户增加sudo权限,所有节点都执行
echo "omm ALL=(ALL) NOPASSWD:ALL">>/etc/sudoers
echo "Cmnd_Alias COMMAND_FLAG = /usr/sbin/ifconfig" >> /etc/sudoers

✨ 3.2 添加VIP

ifconfig ens33:15400 192.168.6.14 netmask 255.255.255.0 upens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.6.11  netmask 255.255.255.0  broadcast 192.168.6.255inet6 fe80::a281:1dad:5f3f:1be8  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:56:78:64  txqueuelen 1000  (Ethernet)RX packets 70129  bytes 10190915 (9.7 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 445322  bytes 1129835756 (1.0 GiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0ens33:15400: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.6.14  netmask 255.255.255.0  broadcast 192.168.6.255ether 00:0c:29:56:78:64  txqueuelen 1000  (Ethernet
给集群添加VIP资源 VIP作为openGauss的资源管理
cm_ctl res --add --res_name="VIP_az1" --res_attr="resources_type=VIP,float_ip=192.168.6.14"
将每个实例加到资源中
cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=1,res_instance_id=6001" --inst_attr=base_ip=192.168.6.11
cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=2,res_instance_id=6002" --inst_attr=base_ip=192.168.6.12
[omm@opengauss51m ~]$ cm_ctl res --check
cm_ctl: resource config is valid.执行check完成后,在cmdataPath/cm_agent/目录下会生成一个自定义资源配置文件cm_resource.json,
检查完成没有错误后,需要手动scp将该文件分发到其他节点

✨ 3.3 配置参数

配置/openGauss/data/dn/pg_hba.conf
在数据库pg_hba.conf文件中以sha256方式添加floatIphost    all    all    192.168.6.14/32     sha256--cm集群故障自动切换配置前提条件,通过三方网管实现
cd /openGauss/cm/cm_server
vi cm_server.confthird_party_gateway_ip = 192.168.6.8
cms_enable_failover_on2nodes = true         
cms_network_isolation_timeout = 20  

✨ 3.4 重启集群

[omm@opengauss51m ~]$ gs_om -t stop
Stopping cluster.
=========================================
Successfully stopped cluster.
=========================================
End stop cluster.
[omm@opengauss51m ~]$ gs_om -t start
Starting cluster.
======================================================================
Successfully started primary instance. Wait for standby instance.
======================================================================
.
Successfully started cluster.
======================================================================
cluster_state      : Normal
redistributing     : No
node_count         : 2
Datanode Stateprimary           : 1standby           : 1secondary         : 0cascade_standby   : 0building          : 0abnormal          : 0down              : 0Successfully started cluster.查询VIP在哪个节点
[omm@opengauss51m ~]$ cm_ctl show[  Network Connect State  ]Network timeout:       6s
Current CMServer time: 2023-11-18 21:03:20
Network stat('Y' means connected, otherwise 'N'):
|  \  |  Y  |
|  Y  |  \  |[  Node Disk HB State  ]Node disk hb timeout:    200s
Current CMServer time: 2023-11-18 21:03:21
Node disk hb stat('Y' means connected, otherwise 'N'):
|  N  |  N  |[  FloatIp Network State  ]node            instance base_ip      float_ip_name float_ip     
-----------------------------------------------------------------
1  opengauss51m 6001     192.168.6.11 VIP_az1       192.168.6.14 

📣 ## 4.测试故障转移

##本次实验,我们直接对主库关机,验证高可用
[omm@opengauss51b ~]$ gs_om -t status --detail
[  CMServer State   ]node            node_ip         instance                     state
--------------------------------------------------------------------
1  opengauss51m 192.168.6.11    1    /openGauss/cm/cm_server Down
2  opengauss51b 192.168.6.12    2    /openGauss/cm/cm_server Primary[   Cluster State   ]cluster_state   : Degraded
redistributing  : No
balanced        : No
current_az      : AZ_ALL[  Datanode State   ]node            node_ip         instance                state            
-------------------------------------------------------------------------
1  opengauss51m 192.168.6.11    6001 /openGauss/data/dn P Down    Unknown
2  opengauss51b 192.168.6.12    6002 /openGauss/data/dn S Primary Normal##备库变为主库,VIP也飘逸过来了                                               [omm@opengauss51b ~]$ cm_ctl show[  Network Connect State  ]Network timeout:       6s
Current CMServer time: 2023-11-18 22:41:44
Network stat('Y' means connected, otherwise 'N'):
|  \  |  Y  |
|  Y  |  \  |[  Node Disk HB State  ]Node disk hb timeout:    200s
Current CMServer time: 2023-11-18 22:41:45
Node disk hb stat('Y' means connected, otherwise 'N'):
|  N  |  N  |[  FloatIp Network State  ]node            instance base_ip      float_ip_name float_ip     
-----------------------------------------------------------------
2  opengauss51b 6002     192.168.6.12 VIP_az1       192.168.6.14 ##然后我们启动主库,恢复集群--启动集群
[omm@opengauss51m ~]$ gs_om -t start
[omm@opengauss51b ~]$ gs_om -t status --detail
[  CMServer State   ]node            node_ip         instance                     state
--------------------------------------------------------------------
1  opengauss51m 192.168.6.11    1    /openGauss/cm/cm_server Standby
2  opengauss51b 192.168.6.12    2    /openGauss/cm/cm_server Primary[   Cluster State   ]cluster_state   : Normal
redistributing  : No
balanced        : No
current_az      : AZ_ALL[  Datanode State   ]node            node_ip         instance                state            
-------------------------------------------------------------------------
1  opengauss51m 192.168.6.11    6001 /openGauss/data/dn P Standby Normal
2  opengauss51b 192.168.6.12    6002 /openGauss/data/dn S Primary Normal

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

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

相关文章

机器学习笔记 - Ocr识别中的文本检测EAST网络概述

一、文本检测 文本检测简单来说就是找到图像中可以出现文本的区域。例如,请参见下图,其中在检测到的文本周围绘制了绿色边框。 在进行文本检测时,你可能会遇到两种情况 具有结构化文本的图像:这是指具有干净/均匀背景和常规字体的图像。文本大多密集,行结构正确,…

php连接sqlserver 安装sqlserver 驱动windows系统

第一步下载Windows 上的 Microsoft ODBC Driver for SQL Server ODBC 驱动程序 Microsoft ODBC Driver for SQL Server 直接下载安装即可&#xff0c;安装后可查看安装版本 第二步&#xff1a;下载php_sqlsrv 驱动 安装解压后&#xff0c;会有对应php版本的驱动文件&#xf…

Python hashlib 模块详细教程:安全哈希与数据完整性保护

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是涛哥&#xff0c;今天为大家分享 Python hashlib 模块详细教程&#xff0c;文章6500字&#xff0c;阅读大约17分钟&#xff0c;大家enjoy~~ hashlib模块为Python提供了一种简便的方式来使用各种哈希算法&…

leetcode系列(双语)003——GO无重复字符的最长子串

文章目录 003、Longest Substring Without Repeating Characters个人解题官方解题扩展 003、Longest Substring Without Repeating Characters 无重复字符的最长子串 Given a string s, find the length of the longest substring without repeating characters. 给定一个字符…

【Linux】进程替换|exec系列函数

文章目录 一、看一看单进程版的进程替换二、进程替换的原理三、多进程版——验证各种程序替换接口exec系列函数execlexeclpexecvexecvp tipsexecleexecve 四、总结 一、看一看单进程版的进程替换 #include<stdio.h> #include<unistd.h> #include<stdlib.h>i…

电子学会C/C++编程等级考试2021年12月(一级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:输出整数部分 输入一个双精度浮点数f, 输出其整数部分。 时间限制:1000 内存限制:65536输入 一个双精度浮点数f(0 < f < 100000000)。输出 一个整数,表示浮点数的整数部分。样例输入 3.8889样例输出 3 答案: //参…

vue项目中使用vant轮播图组件(桌面端)

一. 内容简介 vue使用vant轮播图组件(桌面端) 二. 软件环境 2.1 Visual Studio Code 1.75.0 2.2 chrome浏览器 2.3 node v18.14.0 三.主要流程 3.1 安装环境 3.2 添加代码 3.3 结果展示 四.具体步骤 4.1 安装环境 先安装包 # Vue 3 项目&#xff0c;安装最新版 Va…

获取虎牙直播源

为了今天得LOL总决赛 然后想着下午看看 但是网页看占用高 就想起来有个直播源 也不复杂看了大概一个小时 没啥问题 进入虎牙页面只有 直接F12 网络 然后 看这个长条 一直在获取 发送 那就选中这个区间 找到都是数字这一条 如果直接访问的话会一直下载 我这都取消了 然后 打开…

关于新版的Maven创建Maven项目的时候只有Maven Archetype,而找不到Maven的这个问题

问题情况 : 在最近的学习过程中&#xff0c;想要创建一个Maven模块用于分块设计&#xff0c;但是在idea里面创建Maven项目的时候&#xff0c;发现与maven相关的只有Maven Archetype这个模块&#xff0c;然后找不到单纯的Maven模块&#xff1b;就像下面这样 : 解决方案 : 其…

大数据Doris(二十五):数据导入演示和其他导入案例

文章目录 数据导入演示和其他导入案例 一、数据导入演示

【每日一题】—— C. Yarik and Array(Codeforces Round 909 (Div. 3))(贪心)

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…

【STM32】RTC(实时时钟)

1.RTC简介 本质&#xff1a;计数器 RTC中断是外部中断&#xff08;EXTI&#xff09; 当VDD掉电的时候&#xff0c;Vbat可以通过电源--->实时计时 STM32的RTC外设&#xff08;Real Time Clock&#xff09;&#xff0c;实质是一个 掉电 后还继续运行的定时器。从定时器的角度…

科技创新 共铸典范 | 江西卫健办邓敏、飞图影像董事长洪诗诗一行到访拓世科技集团,提振公共卫生事业发展

2023年11月15日&#xff0c;拓世科技集团总部迎来了江西省卫健项目办项目负责人邓敏、江西飞图影像科技有限公司董事长洪诗诗一行的考察参观&#xff0c;集团董事长李火亮、集团高级副总裁方高强进行热情接待。此次多方交流&#xff0c;旨在共同探讨携手合作&#xff0c;激发科…

ClickHouse建表优化

1. 数据类型 1.1 时间字段的类型 建表时能用数值型或日期时间型表示的字段就不要用字符串&#xff0c;全String类型在以Hive为中心的数仓建设中常见&#xff0c;但ClickHouse环境不应受此影响。 虽然ClickHouse底层将DateTime存储为时间戳Long类型&#xff0c;但不建议存储Long…

【Java】ArrayList和LinkedList使用不当,性能差距会如此之大!

文章目录 前言源码分析ArrayList基本属性初始化新增元素删除元素遍历元素 LinkedList实现类基本属性节点查询新增元素删除元素遍历元素 分析测试 前言 在面试的时候&#xff0c;经常会被问到几个问题&#xff1a; ArrayList和LinkedList的区别&#xff0c;相信大部分朋友都能回…

自动化网络图软件

由于 IT 系统的发展、最近向混合劳动力的转变、不断变化的客户需求以及其他原因&#xff0c;网络监控变得更加复杂。IT 管理员需要毫不费力地可视化整个网络基础设施&#xff0c;通过获得对网络的可见性&#xff0c;可以轻松发现模式、主动排除故障、确保关键设备可用性等。 为…

SEnet注意力机制(逐行代码注释讲解)

目录 ⒈结构图 ⒉机制流程讲解 ⒊源码&#xff08;pytorch框架实现&#xff09;及逐行解释 ⒋测试结果 ⒈结构图 左边是我自绘的&#xff0c;右下角是官方论文的。 ⒉机制流程讲解 通道注意力机制的思想是&#xff0c;对于输入进来的特征层&#xff0c;我们在每一个通道学…

阿里云+宝塔部署项目(Java+React)

阿里云服务器宝塔面板部署项目&#xff08;SpringBoot React&#xff09; 1. 上传所需的文件到服务器 比如jdk包和java项目的jar&#xff1a;这里以上传jar 为例&#xff0c;创建文件夹&#xff0c;上传文件&#xff1b; 在创建的文件夹下上传jar包 上传jdk 2. 配置jdk环境 3.…

OpenAI 解雇了首席执行官 Sam Altman

Sam Altman 已被 OpenAI 解雇&#xff0c;原因是担心他与董事会的沟通和透明度&#xff0c;可能会影响公司的发展。该公司首席技术官 Mira Murati 将担任临时首席执行官&#xff0c;但 OpenAI 可能会从科技行业寻找新的首席执行官来领导未来的产品开发。Altman 的解雇给 OpenAI…

实验(二):存储器实验

一、实验内容与目的 实验要求&#xff1a; 利用 CP226 实验仪上的 K16..K23 开关做为 DBUS 的数据&#xff0c;其它开关做为控制信号&#xff0c;实现主存储器 EM 的读写操作&#xff1b;利用 CP226 实验仪上的小键盘将程序输入主存储器 EM&#xff0c;实现程序的自动运行。 实…