openGauss一主两备集群异常断电后不能正常启动的解决过程简记

背景

因异常断电后opengauss 5.0.0版本,一主两备集群启动失败。

报错不是主机,由于当时没有截图,查看日志后发现报错是:

定位过程

Day1

1. 尝试用另外两台机器启动每台机器

发现都报错自己不是主机,像极了唐僧被妖怪抓走后互相帅锅的猴子哥仨。

2.手动启动

于是向openGauss交流群里的大佬求助,@半夏提供了一个手动启动的命令。

gs_ctl start -D /opt/huawei/install/data/dn -M primary

执行的时候提示已经有服务在,建议用restart,于是改为用restart执行。

gs_ctl restart -D /opt/huawei/install/data/dn -M primary

同时在两台备机上面执行手动启动,模式为standby。

gs_ctl restart -D /opt/huawei/install/data/dn -M standby

 继续:

执行完后查看集群状态,仍然是不可用。

3.连接上了

尝试本地连接数据库,是可以连接上了。

4. 导出数据

于是第一时间用gs_dump命令把数据先导出来了一份,这样最差的情况也可以卸载重装来恢复。

5. 改成单机版

但是虽然本地能连上,却不能创建表,是个只读事务(read-only transaction),业务还是不可用,期间还想着把业务代码改成单机版的数据库连接先应付应用,因为只读作罢。

6. 业务代码及datastudio工具也都连接不上。

起初我还以为是配置文件的问题,检查和确认了postgres.conf及pg_hba.conf的配置。期间还执行过gs_install,以及gs_preinstall,但是install过程提示集群已安装(因未截图所以无法得到确切的提示,大意是已安装)。

Day2

周一和大佬@半夏连线

1. 检查磁盘空间

首先检查了磁盘空间,也检查了互信,互信正常,篇幅起见截图就只截一个服务器的。

2. 修改为自动切换失败

cm_ctl switchover -a

3. 强制升主

因为不可读,于是把123服务器的数据库又执行了一次强制升主。

cm_ctl set --cmsPromoteMode=PRIMARY_F -I 1

执行后确实改为了Primary,但仍然是不可读,远程也无法连接。

4. 断电后操作

后来求助cm的大佬恩哥,恩哥提供了如下断电后需要执行的操作

4.1  kill掉cm和om的相关进程:

gs_ssh -c "pkill -9 om_monitor -U omm; pkill -9 cm_agent -U omm; pkill -9 cm_server -U omm; touch $GAUSSHOME/bin/cluster_manual_start"

4.2. rm掉cmserver下的gstor, dcf_data和bin下面的配置文件

cd $GAUSSLOG
cd /opt/huawei/data/cmserver/cm_server
gs_ssh -c "rm /opt/huawei/data/cmserver/gstor /opt/huawei/data/cmserver/dcf_data $GAUSSHOME/bin/cluster_dynamic_config -rf"

4.3 rm掉bin下的集群手动启动

3. gs_ssh -c "rm $GAUSSHOME/bin/cluster_manual_start"

Day3

1. 执行切换启动模式为AUTO

cm_ctl set --cmsPromoteMode=AUTO -I 1

2. 于是直接拉恩哥上线

2.1 查看dcc日志:

cd $GAUSSLOG/cm/dcc

vim debug/dcc.dlog

命令截图:

日志截图:

 2.2 看到这个日志后,我提出怀疑是防火墙导致的连接建立失败。

于是在三台服务器上都执行了关防火墙的操作(生产环境不建议这样操作,因是测试环境验证问题,所以关掉防火墙,生产环境开放端口白名单)。

systemctl stop firewalldsystemctl disable firewalld

2.查询防火墙状态

systemctl status firewalld

3. 再查询集群状态,状态即为正常:

cm_ctl query -Cvidp

四、成功解决!

紧张焦虑的两天半,问题终于在两位大佬的帮助下得到了解决,趁热打铁流水账先记录下过程,供各位专家同仁指导参考,再次感谢@半夏和恩哥(音)。

五、总 结

影响集群启动的主要因素:

1. 防火墙是否关闭(或者是否打开端口白名单);

2. 删除进程和文件的3步命令,至于手动启动,并不是必须的步骤;

3. 断电前预先stop集群。

附:一些Linux命令总结:

gs_ssh -c "ps x"

echo $GAUSSHOME

cm_ctl start

cm_ctl stop

cm_ctl query -Cvidp

cd $GAUSSLOG

source .bashrc –加载用户的bash配置文件

ps ux

欢迎小伙伴们交流~

本文作者:赵锋

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

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

相关文章

【算法刷题day55】Leetcode:583. 两个字符串的删除操作、72. 编辑距离

文章目录 Leetcode 583. 两个字符串的删除操作解题思路代码总结 Leetcode 72. 编辑距离解题思路代码总结 草稿图网站 java的Deque Leetcode 583. 两个字符串的删除操作 题目:583. 两个字符串的删除操作 解析:代码随想录解析 解题思路 dp数组的含义是&a…

哪款桌面便签app能帮助我提升工作效率

作为上班族,我们每天都要处理大量的工作事项,从策划方案到处理邮件,每一个环节都需高效且有条不紊。在这样的工作环境下,提升效率显得尤为重要。而选择一款优秀的桌面便签app,无疑是提高工作效率的关键。 桌面便签app…

【数据结构】数据结构大汇总 {数据结构的分类总结:定义和特性、实现方式、操作与复杂度、适用场景、相关算法、应用实例}

一、线性结构 1.1 顺序表 定义和特性:顺序表是一种线性表的存储结构,它采用一段地址连续的存储单元依次存储线性表中的元素。顺序表具有随机访问的特性,即可以通过元素的下标直接访问元素。 实现方式:顺序表可以通过数组来实现&…

基于51单片机的非接触式无线红外测温

基于51单片机的无线红外测温 (程序+原理图+设计报告) 功能介绍 具体功能: 1.采用红外温度传感器测温并用LCD1602显示; 2.按键为启动按键、保存按键、显示数据按键,可以实现对温度数值的控制…

【制作100个unity游戏之26】unity2d横版卷轴动作类游戏6(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言敌人动画配置撞墙判断敌人基本AI逻辑实现 野猪受伤死亡死亡敌人死亡时,还是会对人物产生伤害有限状态机&抽象类多态 定义不同状态的敌人行为防止野猪在悬崖掉下去野猪的追击状态的转换敌人主动查找玩家 追击状态…

基于微信小程序+JAVA Springboot 实现的【智慧乡村旅游服务平台】app+后台管理系统 (内附设计LW + PPT+ 源码+ 演示视频 下载)

项目名称 项目名称: 基于微信小程序的智慧乡村旅游服务平台的设计与实现 项目技术栈 该项目采用了以下核心技术栈: 后端框架/库: Java SSM框架数据库: MySQL前端技术: 微信开发者工具、uni-app其他技术&#xff1a…

8B10B编码(高速收发器五)

1、8B10B解决的问题 8B10B编码是1983年IBM公司提出的传输编码标准,通常用于高速收发器中,常见的JESD204B、SATA等接口协议,使用查表就可以实现编码和解码。 在这些高速收发器的接收端需要通过CDR技术去恢复时钟与数据的相位关系,在…

Linux day6 yum下载,systemctl,

yum命令 yum [-y] install wget 通过yum下载wget小工具 -y的意思是,如果有询问,自动确认(总是允许)。 yum remove wget 也可以通过这种方式卸载wget

Git版本控制工具的原理及应用详解(四)

本系列文章简介: 随着软件开发的复杂性不断增加,版本控制成为了开发团队中不可或缺的工具之一。在过去的几十年里,版本控制工具经历了各种发展和演变,其中Git无疑是目前最受欢迎和广泛应用的版本控制工具之一。 Git的出现为开发者…

Apache Flink典型应用场景全面解析

Apache Flink作为一个高度灵活且功能强大的开源流处理框架,因其在实时数据处理、大规模数据分析以及事件驱动应用方面的卓越表现而受到广泛青睐。以下是Flink几个典型的使用场景,展示了其在不同行业和业务需求中的应用潜力。 实时数据分析与监控 应用描述…

工作小记2——二周年记

不知不觉,工作已经有二周年, 由于公司电脑不能登录csdn,不能登github,我已经好久没有碰过我的个人博客空间啦。现在从大厂跳到小公司,舒适度翻倍提升!现在我要回归CSDN啦! 总体感受&#xff1a…

playwright 自动化框架python教程(九)

Playwright 提供了一系列API来处理各种浏览器中的特殊操作 Playwright 提供了一系列API来处理各种浏览器中的特殊操作,包括弹窗(如alert、confirm、prompt)、新窗口的打开与管理,以及其他一些高级交互。以下是处理这些情况的一些…

Solon Cloud Event 新的事务特性与应用

1、Solon Cloud Event? 是 Solon 分布式事件总线的解决方案。也是 Solon “最终一致性”分布式事务的解决方案之一2、事务特性 事务?就是要求 Event 有原子性,当多个 Event 发布时,要么全成功,要么全失败。 public …

PyQt5 中的 List View

文章目录 1. 基础概念2. 创建 List View2.1 PyQt5 中一个简单的 List View 实例2.2 代码解释2.3 运行结果 3. 数据模型3.1 标准模型3.2 自定义模型 4. 自定义 List View4.1 使用样式表 (QSS)4.2 设置项委托 (Item Delegate) 5.事件处理6. 与数据交互6.1 添加数据6.2 删除数据6.…

【哈希】Leetcode 205. 同构字符串【简单】

同构字符串 给定两个字符串 s 和 t ,判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上&am…

如何解决 Scrapy 下载图片时的文件名错误问题

在使用 Scrapy 的 ImagesPipeline 下载图片时,有时会遇到因为文件名的问题导致下载失败的情况。本文将详细解释这种错误的原因,并提供一个简单易懂的解决方案,帮助大家避免类似的问题。 问题描述 在下载图片时,如果图片的名字是…

C语言到底怎么学?

C语言到底怎么学? 1、工欲善其事,必先利其器 这里介绍几个华清远见学习C语言必备的工具: VMware、ubuntu。 VMware是一家提供虚拟化软件和解决方案的公司,VMware的旗舰产品是VMware Workstation,这是一种虚拟机软件,…

echers配置项:数据过多时,折叠数据缩放查看

当数据过多时,如上图所示的时间点,会自动折叠,此时鼠标缩放还不起作用,我们配置如下代码 let option {dataZoom: [{startValue: 05:00}, // 这个值需要跟 第一条 时间数据对应上{type: inside}], }配置后,就可以进行…

echers配置项:折线图,折现的颜色修改

如上图所示:红框内的折现颜色修改,并隐藏默认的点 series: [{data: [1, 230, 224, 218, 135, 147, 760,1500,1200,2500,2000],type: line,lineStyle: {color: #00DBFE // 折现颜色},symbol:none, // 不显示点smooth: true, // 折现角度:圆滑…

hadoop生态圈集群搭建(持续更新240513)

Hadoop生态圈 Linux1.修改ip地址2.重启network服务3.安装插件4.关闭防火墙5.创建用户6.创建目录7.修改目录的所属主和所属组为lxy8.修改主机名:hadoop102 (注意名字后面不要加空格)9.修改hosts文件10.等插件都装完后再重启Linux11.把xshell的登录用户换成lxy (注意&…