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

news2024/11/26 21:25:52

作者: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 State
    primary           : 1
    standby           : 2
    secondary         : 0
    cascade_standby   : 0
    building          : 0
    abnormal          : 0
    down              : 0

Successfully 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 Normal

2.主库服务器关机
此时我们发现主库挂了之后,备库变为主库,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=# \l
 postgres  | omm   | SQL_ASCII | C       | C     | 
 template0 | omm   | SQL_ASCII | C       | C     | =c/omm           +
           |       |           |         |       | omm=CTc/omm
 template1 | omm   | SQL_ASCII | C       | C     | =c/omm           +
           |       |           |         |       | omm=CTc/omm

openGauss=# create table test(id int);
CREATE TABLE
openGauss=# \d test
 id     | 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:15401

openGauss=# select pg_is_in_recovery();
-[ RECORD 1 ]-----+--
pg_is_in_recovery | t

image.png

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

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

相关文章

示例:WPF中应用Grid的SharedSizeGroup设置整齐的布局

一、目的&#xff1a;应用Grid的SharedSizeGroup设置整齐的布局 二、实现 <ItemsControl ItemsSource"{local:GetStudents Count5}"><ItemsControl.ItemTemplate><DataTemplate><Grid ShowGridLines"True"><Grid.ColumnDefinit…

编程之道:程序员必备的五大职业素养

引言 在数字化时代&#xff0c;程序员的角色变得日益重要。他们不仅是代码的编写者&#xff0c;更是技术变革的推动者。然而&#xff0c;成为一名优秀的程序员&#xff0c;除了技术能力之外&#xff0c;还需要具备一系列职业素养。本文将探讨程序员在职业生涯中应具备的五大职业…

美国犹他州立大学《Nature Geoscience》(IF=18)!揭示草本植物对土壤有机碳的重要贡献!

随着全球变暖的影响越来越显著&#xff0c;碳固定成为了一个备受关注的话题。在这个背景下&#xff0c;热带草原被认为是一个潜在的碳固定区域。然而&#xff0c;目前的研究主要关注于在热带草原中种植树木&#xff0c;以期望增加土壤有机碳含量。但是&#xff0c;热带草原中的…

万字长文详述 - 带你了解Jvm虚拟机运行时数据区

JVM虚拟机&#xff0c;对大部分Java程序员而言&#xff0c;是既熟悉又陌生的存在&#xff0c;Java程序在虚拟机的自动内存管理机制帮助下&#xff0c;减少了绝大部分的内存管理工作。但也正是因为如此&#xff0c;虚拟机如果出现了内存溢出或者泄露的情况&#xff0c;问题排查、…

NettyのEventLoopChannel

Netty的重要组件&#xff1a;EventLoop、Channel、Future & Promise、Handler & Pipeline、ByteBuf 本篇主要介绍Netty的EventLoop和Channel组件。 1、Netty入门案例 服务器端的创建&#xff0c;主要分为以下步骤&#xff1a; 创建serverBootstrap对象。配置服务器的…

10.Docker Compose容器编排

文章目录 Compose简介安装和卸载步骤核心概念compose文件两要素 使用步骤Compose常用命令微服务测试本地编码打包编写Dockerfile文件构建镜像 不使用Compose调试使用Compose调试WordPress测试验证增量更新 Compose简介 ​ docker建议我们每一个容器中只运行一个服务,因为docke…

Misc之图片隐写

前几天忙高数和c考试去了。。。Web毫无进展&#xff0c;学学这个放松一下 一、工具准备 这里目前使用的工具为kali上的工具和安装在电脑上的Winhex&#xff0c;010editor&#xff0c;Stegsolve 二、png图片隐写 这里我就直接用题目学习了&#xff0c;也是参考了csdn上大佬的…

05通讯录管理系统——添加联系人

功能描述&#xff1a;实现添加联系人功能&#xff0c;联系人上限为1000人&#xff0c;联系人信息包括姓名、性别、年龄、联系电话、家庭住址。 添加联系人实现步骤&#xff1a; 1.设计联系人结构体 2.设计通讯录结构体 3.main函数中创建通讯录 4.封装添加联系人函数 5.测…

软考系统规划与管理师伴读脑图第9章

周末发系统规划与管理师的试听视频&#xff0c;占用了发送次数&#xff0c;所以上周的脑图推迟了今天发出。 不知不觉已经发到了第9章&#xff0c;感叹这就是坚持积累下来的力量&#xff0c;其实考试也是一样的道理。

《骑行健身:“柳叶刀”研究揭示的健康与经济双赢策略》

在这个物价飞涨、经济压力日益加重的时代&#xff0c;普通人如何在不增加额外负担的情况下提升生活质量&#xff1f;《柳叶刀》的最新研究为我们揭开了一个意想不到的秘密&#xff1a;坚持健身&#xff0c;尤其是骑行&#xff0c;竟等同于每年为自己赚取了一笔不小的财富。这一…

多叉树的DFS深度优先遍历,回溯法的基础算法之一

一、前言 多叉树一般用于解决回溯问题。 想必大家都学过二叉树&#xff0c;以及二叉树的深度优先遍历和广度优先遍历&#xff0c;我们思考&#xff1a;能不能将二叉树的DFS转化为多叉树的DFS&#xff1f; 二、多叉树的结构 多叉树的本质&#xff0c;就是一棵普通的树&#x…

C语言数据存储大小端问题

大小端 什么是大小端 大端模式&#xff08;Big-endian&#xff09;&#xff0c;是指数据的高字节&#xff0c;保存在内存的低地址中&#xff0c;而数据的低字节&#xff0c;保存在内存的高地址中; 小端模式&#xff08;Little-endian&#xff09;&#xff0c;是指数据的高字…

mcms-5.2.8环境部署

1 数据库 1.1 新建数据库 1.2 导入数据表 2 tomcat配置 2.1 在IDEA中tomcat环境并配置 首先添加tomcat服务器并配置 配置Artifacts&#xff08;这里配置不正确的话&#xff0c;在运行时会报错&#xff1a;Error during artifact deployment. See server log for details.&am…

日常销售数据分析为什么重要?三个维度全面分析日常销售数据

在当今电子商务的浪潮席卷全球的时代&#xff0c;网店如雨后春笋般涌现&#xff0c;并且竞争日趋激烈。在这样一个充满挑战与机遇的环境中&#xff0c;如何洞察市场动向&#xff0c;把握消费者需求&#xff0c;实现销售业绩的稳步增长&#xff0c;成为每一位电商运营者必须面对…

【1990-2023】上市公司高新技术企业数据(Excel+stata)+do代码

数据简介&#xff1a;根据《上市公司资质认定信息文件》 数据进行整理。筛选“认定项目类型” 为“高新技术企业”&#xff1b;筛选“认定对象身份”为“上市公司本身”&#xff0c;根据“认定时间”和“有效期限”判断当年是否为高新技术企业。有效期限通常为3年&#xff0c;缺…

4.类,方法,对象

1.1.2. 面向对象程序设计的三大特征 1.1.2.1. 封装 面向对象编程核心思想之一就是将数据和对数据的操作封装在一起&#xff0c;形成一般的概念&#xff0c;比如类的概念。 1.1.2.2. 继承 继承体现了一种先进的编程模式。子类可以继承父类的属性和方法。 1.1.2.3. 多态 多…

CMake从安装到精通

目录 引言 1. CMake的安装 2. CMake的原理 3. CMake入门 3.1 CMakeLists.txt与注释 3.2 版本指定与工程描述 3.3 生成可执行程序 3.4 定义变量与指定输出路径 3.5 指定C标准 3.6 搜索文件 3.7 包含头文件 4. CMake进阶 4.1 生成动静态库 4.2 链接动静态库 4.…

【图像分割】DSNet: A Novel Way to Use Atrous Convolutions in Semantic Segmentation

DSNet: A Novel Way to Use Atrous Convolutions in Semantic Segmentation 论文链接&#xff1a;http://arxiv.org/abs/2406.03702 代码链接&#xff1a;https://github.com/takaniwa/DSNet 一、摘要 重新审视了现代卷积神经网络&#xff08;CNNs&#xff09;中的atrous卷积…

计算机组成原理(四)Cache存储器

文章目录 Cache存储器的基本原理cache命中率、平均访问时间、效率地址映射全相联映射直接映射组相联映射 查找算法cache 存储器替换策略cache 存储器-写操作策略习题 Cache存储器的基本原理 Cache是一种高速缓冲寄存器&#xff0c;是为了解决CPU和主存之间速度不匹配而采用的一…

检索增强生成(RAG)的挑战与优化措施

如何理解检索增强生成&#xff08;RAG&#xff09; 简单来说&#xff0c;RAG就是让LLM通过外部知识源获取额外信息&#xff0c;从而生成更准确、更符合上下文的答案&#xff0c;并减少错误信息&#xff08;或称为“幻觉”&#xff09;的产生。 我们都知道&#xff0c;最先进的…