openGauss 6.0高可用测试,系统上线前很关键

作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验,
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主,全网粉丝10万+
擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理

文章目录

    • 前言
    • 📣 1.实例switchover切换
    • 📣 2.CM两节点特性
      • ✨ 2.1 CM状态
      • ✨ 2.2 VIP添加
      • ✨ 2.3 查询VIP
    • 📣 3.实例failover切换
    • 📣 4.备库写重定向

前言

openGauss 6.0高可用测试,系统上线前很关键,这里分享一下测试的结果

📣 1.实例switchover切换

主备切换为维护操作,确保openGauss状态正常,所有业务结束后,再进行切换操作。

操作步骤如下:

1.以操作系统用户omm登录数据库任意节点,执行如下命令,查看主备情况。

[omm@gaussdb1 ~]$ gs_om -t status --detail
[  CMServer State   ]node        node_ip         instance                     state
----------------------------------------------------------------
1  gaussdb1 192.168.3.10    1    /openGauss/cm/cm_server Standby
2  gaussdb2 192.168.3.11    2    /openGauss/cm/cm_server Standby
3  gaussdb3 192.168.3.12    3    /openGauss/cm/cm_server Primary[   Cluster State   ]cluster_state   : Normal
redistributing  : No
balanced        : Yes
current_az      : AZ_ALL[  Datanode State   ]node        node_ip         instance                       state            
----------------------------------------------------------------------------
1  gaussdb1 192.168.3.10    6001 15400  /openGauss/data/dn P Primary Normal
2  gaussdb2 192.168.3.11    6002 15400  /openGauss/data/dn S Standby Normal
3  gaussdb3 192.168.3.12    6003 15400  /openGauss/data/dn S Standby Normal

2.以操作系统用户omm登录准备切换为主节点的备节点,执行如下命令。

[omm@gaussdb2 ~]$ gs_ctl switchover -D /openGauss/data/dn/
[2024-06-17 19:09:22.259][49407][][gs_ctl]: gs_ctl switchover ,datadir is /openGauss/data/dn 
[2024-06-17 19:09:22.259][49407][][gs_ctl]: switchover term (1)
[2024-06-17 19:09:22.270][49407][][gs_ctl]: waiting for server to switchover........
[2024-06-17 19:09:27.561][49407][][gs_ctl]: done
[2024-06-17 19:09:27.561][49407][][gs_ctl]: switchover completed (/openGauss/data/dn)

注意:/openGauss/data/dn/为备数据库节点的数据目录。
须知: 对于同一数据库,上一次主备切换未完成,不能执行下一次切换。当业务正在操作时,发起switchover,
可能主机的线程无法停止导致switchover显示超时,实际后台仍然在运行,等主机线程停止后,switchover即可完成。
比如在主机删除一个大的分区表时,可能无法响应switchover发起的信号。

主机故障时,可以在备机执行如下命令。
gs_ctl failover -D /openGauss/data/dn/

3.switchover或failover成功后,执行如下命令记录当前主备机器信息,备机执行

[omm@gaussdb2 ~]$ gs_om -t refreshconf
Generating dynamic configuration file for all nodes.
Successfully generated dynamic configuration file.

📣 2.CM两节点特性

高可用:CM支持VIP管理
通过VIP可以直接找到主机,连接重连更准更快(毫秒级别);
支持主机故障,CM选出新主时,VIP漂移到新的主上;
当出现双主时,依然可以通过VIP访问到唯一一个主机,降低了双主丢数据的风险。

高可用:CM磁盘只读检测能力增强
只读状态从数据库获取,保证准确性;
只读仲裁只仲裁当前超过阈值的实例,其他节点不受影响;
主机只读保护后自动主备切换,选可用备机升主保证集群能正常提供工作。

高可用:CM易用性提升
支持一键式关闭CM集群服务;
支持和内核的安装部署解耦;
支持按事件调用用户自定义脚本;
支持CM组件单独升级,增强数据库集群可靠性;
CM根据配置信息,支持用户自定义组件的监控和管

✨ 2.1 CM状态

[omm@gaussdb1 ~]$ cm_ctl query -Cv
[  CMServer State   ]node        instance state
----------------------------
1  gaussdb1 1        Standby
2  gaussdb2 2        Standby
3  gaussdb3 3        Primary[   Cluster State   ]cluster_state   : Normal
redistributing  : No
balanced        : No
current_az      : AZ_ALL[  Datanode State   ]node        instance state            | node        instance state            | node        instance state
------------------------------------------------------------------------------------------------------------------------
1  gaussdb1 6001     P Standby Normal | 2  gaussdb2 6002     S Primary Normal | 3  gaussdb3 6003     S Standby Normal

image.png

✨ 2.2 VIP添加

1.给omm用户增加sudo权限,3台机器都执行
echo “omm ALL=(ALL) NOPASSWD:ALL”>>/etc/sudoers
echo “Cmnd_Alias COMMAND_FLAG = /usr/sbin/ifconfig” >> /etc/sudoers

2.添加VIP,以端口号标记,便于区分
[root@gaussdb2 ~]# ifconfig ens33:15400 192.168.3.14 netmask 255.255.255.0 up

image.png

3.给集群添加VIP资源 VIP作为openGauss的资源管理
[root@gaussdb1 ~]# su - omm
[omm@gaussdb1 ~]# cm_ctl res --add --res_name=“VIP_az1” --res_attr=“resources_type=VIP,float_ip=192.168.3.14”

image.png

4.将每个实例加到资源中
cm_ctl res --edit --res_name=“VIP_az1” --add_inst=“node_id=1,res_instance_id=6001” --inst_attr=base_ip=192.168.3.10
cm_ctl res --edit --res_name=“VIP_az1” --add_inst=“node_id=2,res_instance_id=6002” --inst_attr=base_ip=192.168.3.11
cm_ctl res --edit --res_name=“VIP_az1” --add_inst=“node_id=3,res_instance_id=6003” --inst_attr=base_ip=192.168.3.12

image.png

执行完成后,建议使用cm_ctl res –-check命令进行检查,自定义资源文件要求每个节点都要有且一致
[omm@gaussdb1 ~]$ cm_ctl res --check
cm_ctl: resource config is valid.
执行check完成后,在cmdataPath/cm_agent/目录下会生成一个自定义资源配置文件cm_resource.json,
检查完成没有错误后,需要手动scp将该文件分发到其他节点
分发完成后需要重启集群才能生效。该配置文件对格式要求比较严格,所以该操作不建议使用直接修改文件的方式配置,
建议配置后使用cm_ctl res –check命令进其他节点校验。
[root@gaussdb1 ~]# find / -name cm_resource.json
/openGauss/cm/cm_agent/cm_resource.json
[omm@gaussdb1 ~]$ scp /openGauss/cm/cm_agent/cm_resource.json gaussdb2:/openGauss/cm/cm_agent/
[omm@gaussdb1 ~]$ scp /openGauss/cm/cm_agent/cm_resource.json gaussdb3:/openGauss/cm/cm_agent/

5.重启集群
[omm@gaussdb1 ~]$ gs_om -t stop
Stopping cluster.
=========================================
Successfully stopped cluster.
=========================================
End stop cluster.[omm@gaussdb1 ~]$ gs_om -t start
Starting cluster.
======================================================================
Successfully started primary instance. Wait for standby instance.
======================================================================
.
Successfully started cluster.
======================================================================
cluster_state      : Normal
redistributing     : No
node_count         : 3
Datanode Stateprimary           : 1standby           : 2secondary         : 0cascade_standby   : 0building          : 0abnormal          : 0down              : 0Successfully started cluster.

✨ 2.3 查询VIP


配置/openGauss/data/dn/pg_hba.conf
在数据库pg_hba.conf文件中以sha256方式添加floatIp
host    all    all    192.168.3.14/32     sha256--此时我们发现主库在节点1[omm@gaussdb1 ~]$ cm_ctl show[  Network Connect State  ]Network timeout:       6s
Current CMServer time: 2024-06-17 19:56:02
Network stat('Y' means connected, otherwise 'N'):
|  \  |  Y  |  Y  |
|  Y  |  \  |  Y  |
|  Y  |  Y  |  \  |[  Node Disk HB State  ]Node disk hb timeout:    200s
Current CMServer time: 2024-06-17 19:56:03
Node disk hb stat('Y' means connected, otherwise 'N'):
|  N  |  N  |  N  |[  FloatIp Network State  ]node        instance base_ip      float_ip_name float_ip     
-------------------------------------------------------------
2  gaussdb2 6002     192.168.3.11 VIP_az1       192.168.3.14 
[omm@gaussdb1 ~]$ 

📣 3.实例failover切换

1.主库在节点1
[omm@gaussdb1 ~]$ gs_om -t status --detail
[  CMServer State   ]node        node_ip         instance                     state
----------------------------------------------------------------
1  gaussdb1 192.168.3.10    1    /openGauss/cm/cm_server Standby
2  gaussdb2 192.168.3.11    2    /openGauss/cm/cm_server Standby
3  gaussdb3 192.168.3.12    3    /openGauss/cm/cm_server Primary[   Cluster State   ]cluster_state   : Normal
redistributing  : No
balanced        : Yes
current_az      : AZ_ALL[  Datanode State   ]node        node_ip         instance                       state            
----------------------------------------------------------------------------
1  gaussdb1 192.168.3.10    6001 15400  /openGauss/data/dn P Primary Normal
2  gaussdb2 192.168.3.11    6002 15400  /openGauss/data/dn S Standby Normal
3  gaussdb3 192.168.3.12    6003 15400  /openGauss/data/dn S Standby Normal2.主库服务器关机
此时我们发现主库挂了之后,备库变为主库,VIP也飘逸过来了 

image.png

3.恢复主备恢复OK
[omm@gaussdb2 ~]$ gs_om -t status --detail
[omm@gaussdb2 ~]$ cm_ctl show

image.png

📣 4.备库写重定向

原理是:是通过将备库上的 DML 重定向到主库上执行,然后备库应用 DML 变化数据,至此完成备库 DML 操作。
有个控制参数 enable_remote_excute在所有节点配置即可

vi /openGauss/data/dn/postgresql.conf
enable_remote_excute=on--接着重启集群
[omm@gaussdb1 ~]$ gs_om -t stop
[omm@gaussdb1 ~]$ gs_om -t start

image.png

[omm@gaussdb1 ~]$ gs_om -t status --detail
[  CMServer State   ]node        node_ip         instance                     state
----------------------------------------------------------------
1  gaussdb1 192.168.3.10    1    /openGauss/cm/cm_server Standby
2  gaussdb2 192.168.3.11    2    /openGauss/cm/cm_server Standby
3  gaussdb3 192.168.3.12    3    /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  gaussdb1 192.168.3.10    6001 15400  /openGauss/data/dn P Standby Normal
2  gaussdb2 192.168.3.11    6002 15400  /openGauss/data/dn S Primary Normal
3  gaussdb3 192.168.3.12    6003 15400  /openGauss/data/dn S Standby Normal[omm@gaussdb3 ~]$ psql
bash: psql: command not found...
[omm@gaussdb3 ~]$ gsql
gsql ((openGauss 6.0.0-RC1 build ed7f8e37) compiled at 2024-03-31 11:59:31 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.openGauss=# \t
Showing only tuples.
openGauss=# \lpostgres  | omm   | SQL_ASCII | C       | C     | template0 | omm   | SQL_ASCII | C       | C     | =c/omm           +|       |           |         |       | omm=CTc/ommtemplate1 | omm   | SQL_ASCII | C       | C     | =c/omm           +|       |           |         |       | omm=CTc/ommopenGauss=# create table test(id int);
CREATE TABLE
openGauss=# \d testid     | integer | openGauss=#select * from pg_stat_get_wal_receiver(); 
ERROR:  invalid byte sequence for encoding "UTF8": 0xe3 0x73 0x65
openGauss=# select * from pg_stat_get_wal_receiver(); 
receiver_pid               | 60770
local_role                 | Standby
peer_role                  | Primary
peer_state                 | Normal
state                      | Normal
sender_sent_location       | 0/5012BC0
sender_write_location      | 0/5012BC0
sender_flush_location      | 0/5012BC0
sender_replay_location     | 0/5012BC0
receiver_received_location | 0/5012BC0
receiver_write_location    | 0/5012BC0
receiver_flush_location    | 0/5012BC0
receiver_replay_location   | 0/5012BC0
sync_percent               | 100%
channel                    | 192.168.3.12:54532<--192.168.3.11:15401openGauss=# select pg_is_in_recovery();
-[ RECORD 1 ]-----+--
pg_is_in_recovery | t

image.png

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

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

相关文章

5-10位工程师如何共享工作站算力和软件

在当今数字化快速发展的时代&#xff0c;算力共享已经成为工程师们提高工作效率、优化资源配置的重要手段。 在数字化和信息化的推动下&#xff0c;共享工作站的算力和软件正逐渐成为机械工程师们提升工作效率、优化资源配置的重要途径。那么5-10位工程师如何共享工作站算力和…

等保一体机:多种防护机制,让等保合规简单高效!

自1994年国务院颁布《中华人民共和国计算机信息系统安全保护条例》规定计算机信息系统实行安全等级保护以来&#xff0c;等级保护工作经过了近25年的发展历程&#xff0c;成为了我国网络安全保护的重要举措之一。 2019年12月1日等保2.0正式开始实施&#xff0c;我国网络安全行业…

低压电器航空插座端子

低压电器航空插座的定义和功能 低压电器航空插座通常指在交流电压1200V或直流电压1500V以下工作的电器&#xff0c;其主要功能是连接或断开电路&#xff0c;以实现对电路或非电对象的切换、控制、保护、检测、变换和调节。航空插座具有多种芯数和配置&#xff0c;例如2芯、3芯…

2288. 价格减免

题目 给定一个字符串列表 sentence&#xff0c;表示一个句子&#xff0c;其中每个单词可以包含数字、小写字母和美元符号 $。如果单词的形式为美元符号后跟着一个非负实数&#xff0c;那么这个单词就表示一个价格。我们需要在价格的基础上减免给定的 discount%&#xff0c;并更…

原生APP开发的技术难点

原生APP开发是一项复杂的技术工作&#xff0c;需要掌握多种编程语言和技术。原生APP开发的技术难点主要体现在以下几个方面&#xff0c;原生APP开发是一项技术难度较高的工作&#xff0c;需要开发者具备扎实的编程基础和丰富的开发经验。北京木奇移动技术有限公司&#xff0c;专…

Pycharm怎么默认终端连接远程服务器

因为经常需要从宿舍到学校内通勤&#xff0c;期间所有连接都会中断&#xff0c;所以每次开SSH特别麻烦&#xff0c;每次终端自动切换到本地&#xff1a; 每次都得点一下Start SSH Session 想要默认终端连接远程服务器&#xff0c;需要点File->Setting->Tools->SSH T…

铺地地毯B1级防火检测 隔断板A1阻燃测试 氧指数检测

铺地地毯B1级防火检测 铺地地毯的B1级防火检测是指按照国家标准GB 8624-2012《建筑材料及制品燃烧性能分级》进行的测试&#xff0c;该标准将建筑材料及制品的燃烧性能分为A、B1、B2、B3四个等级。B1级表示难燃材料&#xff0c;具有较好的阻燃作用&#xff0c;在空气中遇明火或…

泛微E9开发 查询页面添加按钮,完成特定功能

查询页面添加按钮&#xff0c;完成特定功能 1、关联知识&#xff08;查询页面实现新增按钮&#xff09;2、功能实现2.1. 点击按钮&#xff0c;输出选中的checkbox的值2.2. 点击按钮&#xff0c;打开一个自定义对话框 3、实现方法 1、关联知识&#xff08;查询页面实现新增按钮&…

低代码结合自研项目打包发布

nginx配置 #user nobody; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024; }http {include mime.types;default_type applica…

麒麟Kylin | 操作系统的安装与管理

以下所使用的环境为&#xff1a;VMware Workstation 17 Pro、Kylin-Server-10-SP2-x86-Release-Build09-20210524 一、创建虚拟机 在VMware主机单击【创建新的虚拟机】 **在新建虚拟机向导中选择【自定义】&#xff0c;然后点击【下一步】 ** 保持默认选项&#xff0c;然后…

CorelDRAW Graphics Suite下载2024最新版-CorelDRAW2024详细安装步骤

CorelDRAW​​ Graphics Suite官方版是款很多用户在工作中都会使用的矢量图形设计工具。CorelDRAW Graphics Suite正式版采用量身定制的界面和无与伦比的定制功能&#xff0c;畅享无缝设计经验。并且CorelDRAW Graphics Suite还可以广泛应用于商标设计、标志制作、模型绘制、插…

LangGraph自适应RAG

LangGraph自适应RAG 介绍索引LLMsweb 搜索工具graphgraph stategraph flowbuild graph执行 介绍 自适应 RAG 是一种 RAG 策略&#xff0c;它将 (1) 查询分析 (2) 主动/自校正 RAG 结合起来。 在文章中&#xff0c;他们报告了查询分析到路由获取&#xff1a; No RetrievalSing…

采用PHP语言(医院安全不良事件上报系统源码)医院不良事件 各类事件分析、分类、处理流程

医疗安全不容忽视&#xff01; 医疗安全&#xff08;不良&#xff09;事件是指在临床诊疗活动中以及医院运行过程中&#xff0c;任何可能影响患者的诊疗结果、增加患者的痛苦和负担并可能引发医疗纠纷或医疗事故&#xff0c;以及影响医疗工作的正常运行和医务人员人身安全的因…

什么是隐马尔可夫模型?

文章目录 一、说明二、玩具HMM&#xff1a;5′拼接位点识别三、那么&#xff0c;隐藏了什么&#xff1f;四、查找最佳状态路径五、超越最佳得分对齐六、制作更逼真的模型七、收获 关键词&#xff1a;hidden markov model 一、说明 被称为隐马尔可夫模型的统计模型是计算生物学…

libdrm 2.4.107 needed because amdgpu has the highest requirement

libdrm 2.4.107 needed because amdgpu has the highest requirement 1.问题分析解决 1.问题 Message: libdrm 2.4.107 needed because amdgpu has the highest requirement Run-time dependency libdrm_intel found: YES 2.4.107 Run-time dependency libdrm_amdgpu found: Y…

Day 25:1807. 替换字符串中的括号内容

Leetcode 1807. 替换字符串中的括号内容 给你一个字符串 s &#xff0c;它包含一些括号对&#xff0c;每个括号中包含一个 非空 的键。 比方说&#xff0c;字符串 “(name)is(age)yearsold” 中&#xff0c;有 两个 括号对&#xff0c;分别包含键 “name” 和 “age” 。 你知道…

Ansible介绍

一、Ansible概述 Ansible是一款开源的自动化运维工具&#xff0c;基于Python开发&#xff0c;主要用于批量系统配置、批量程序部署、批量运行命令等功能。它集合了众多运维工具的优点&#xff0c;并通过其高度模块化的特性&#xff0c;实现了灵活、可扩展的自动化运维管理。 …

ARDUINO NRF24L01

连线 5v 3.3皆可 gnd Optimized high speed nRF24L01 driver class documentation: Optimized High Speed Driver for nRF24L01() 2.4GHz Wireless Transceiver 同时下载同一个程序 案例默认引脚ce ces &#xff0c;7&#xff0c;8 可以 修改为 9,10 安装库 第一个示例 两…

Java基础学习-方法

目录 方法基础概念 方法的格式&#xff1a; 案例&#xff1a;最简单方法的定义 案例&#xff1a;带参数的方法调用 案例&#xff1a;求圆的面积 带有返回值的方法&#xff1a; 方法注意点 方法的重载&#xff1a; ​编辑 案例&#xff1a;数组的遍历&#xff1a; 案例…

C++新特性复习1 版本11

参照来自于&#xff1a; cppreference.com 老实说&#xff0c;我是毕业不久就开始用C&#xff0c;原因就是VC&#xff0c;当时用来做界面。还好吧&#xff0c;不是觉得太难&#xff0c;起码对数学底子没有要求&#xff0c;后面偶尔也用用&#xff0c;但是整体还是C居多。现在项…