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

本文主要是介绍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

欢迎小伙伴们交流~

本文作者:赵锋

这篇关于openGauss一主两备集群异常断电后不能正常启动的解决过程简记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/994858

相关文章

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav

解决RocketMQ的幂等性问题

《解决RocketMQ的幂等性问题》重复消费因调用链路长、消息发送超时或消费者故障导致,通过生产者消息查询、Redis缓存及消费者唯一主键可以确保幂等性,避免重复处理,本文主要介绍了解决RocketM... 目录造成重复消费的原因解决方法生产者端消费者端代码实现造成重复消费的原因当系统的调用链路比较长的时

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

python运用requests模拟浏览器发送请求过程

《python运用requests模拟浏览器发送请求过程》模拟浏览器请求可选用requests处理静态内容,selenium应对动态页面,playwright支持高级自动化,设置代理和超时参数,根据需... 目录使用requests库模拟浏览器请求使用selenium自动化浏览器操作使用playwright

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499