突发!凌晨4点某制造业大厂国产数据库集群故障...

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

文章目录

  • 前言
    • 1.故障现象
    • 2.故障处理
      • 2.1 单节点启动
      • 2.2 全库备份
    • 3.备机重建
    • 4.cm_ctl集群工具
    • 5.总结

前言

某制造业大厂,企业核心的生产系统使用openGauss国产数据库集群,集群无法启动,修复过程分享给大家。

1.故障现象

通过现场沟通了解到,客户机房由于异常掉电,造成一套openGauss集群的备库节点操作系统主异常无法启动,还好主节点正常,启动集群失败,此时只能通过启动单节点方式进行恢复

2.故障处理

2.1 单节点启动

由于备机已经无法访问了,导致om启动不了
通过以下命令启动即可
[omm@node1 ~]$ gs_ctl start -D /u01/opengauss/data/db -M primary

–通过此命令我们查询,集群备节点异常
[omm@node1 ~]$ gs_om -t status --detail

--登陆数据库,业务恢复正常
[omm@node1 ~]$ gsql -d postgres

2.2 全库备份

--全库数据量查询
SELECT d.datname as "Name",
       pg_catalog.pg_get_userbyid(d.datdba) as "Owner",
       pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",
       d.datcollate as "Collate",
       d.datctype as "Ctype",
			 d.datacl AS "Access privileges",
       --pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges",
       CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
            THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))
            ELSE 'No Access'
       END as "Size",
       t.spcname as "Tablespace",
       pg_catalog.shobj_description(d.oid, 'pg_database') as "Description"
FROM pg_catalog.pg_database d
  JOIN pg_catalog.pg_tablespace t on d.dattablespace = t.oid
-- where d.datname = 'database_name'
ORDER BY 1;

--全库备份
gs_dumpall -f /home/omm/bkpall_20240607.sql -p 5432

3.备机重建

如果新的备机Ip改了,需要主备库参数修改后重建整个集群

主机:

gs_guc set -D /u01/opengauss/data/db -c "replconninfo1='localhost=主机ip localport=port+1 localheartbeatport=port+4 localservice=port+5 remotehost=备机IP remoteport=port+1 remoteheartbeatport=port+4 remoteservice=port+5'"
gs_guc set -D /u01/opengauss/data/db -c 'remote_read_mode=off';
gs_guc set -D /u01/opengauss/data/db -c 'replication_type=1';
gs_guc set -D /u01/opengauss/data/db -h "host all omm 主机ip/32 trust"        
gs_guc set -D /u01/opengauss/data/db -h "host all omm 备机IP/32 trust" 
gs_guc set -D /u01/opengauss/data/db -c "port=主机端口"
gs_guc set -D /u01/opengauss/data/db -c "listen_addresses='主机ip'"


备机:
gs_guc set -D /u01/opengauss/data/db -c "replconninfo1='localhost=备机ip localport=port+1 localheartbeatport=port+4 localservice=port+5 remotehost=主机IP remoteport=port+1 remoteheartbeatport=port+4 remoteservice=port+5'"
gs_guc set -D /u01/opengauss/data/db -c 'remote_read_mode=off';
gs_guc set -D /u01/opengauss/data/db -c 'replication_type=1';
gs_guc set -D /u01/opengauss/data/db -h "host all omm 主机ip/32 trust"        
gs_guc set -D /u01/opengauss/data/db -h "host all omm 备机IP/32 trust" 
gs_guc set -D /u01/opengauss/data/db -c "port=备机端口"
gs_guc set -D /u01/opengauss/data/db -c "listen_addresses='备机IP'"

主机启动:
gs_ctl start -D /u01/opengauss/data/db -M primary

备机启动
gs_ctl start -D /u01/opengauss/data/db -M standby
gs_ctl build -D /u01/opengauss/data/db -M standby -b full

如果备机修复好,还可以用,直接建逻辑复制通道后,gs_ctl build -D 数据库目录即可恢复集群

4.cm_ctl集群工具

cm_ctl是openGauss提供的用来控制数据库实例服务的工具。该工具主要供OM调用,及数据库实例服务自恢复时使用。cm_ctl的主要功能有:
● 启动数据库实例服务、AZ的所有实例、单个主机上的所有实例或单独启动某个实例进程。
● 停止数据库实例服务、AZ的所有实例、单个主机上的所有实例或单独停止某个节点实例进程。
● 重启逻辑数据库实例服务。
● 查询数据库实例状态或者单个主机的状态。
● 切换主备实例或重置实例状态。
● 重建备机。
● 查看数据库实例配置文件。
● 设置日志级别,一主多备数据库实例部署下cm_server的仲裁模式、AZ之间的切换模式。
● 获取日志级别,一主多备数据库实例部署下cm_server的仲裁模式、AZ之间的切换模式。
● 检测实例进程状态。

5.总结

本次故障我们发现,其实国产数据库openGauss的集群故障的处理机制还是蛮完善的,尤其备库的重构很不错的

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android开机动画关闭流程

一步一图项目上要加一个开机动画结束的回调,我这边看下如何加 好,老规矩,如何启动动画?动画是谁启动的?怎么关闭的?谁通知关闭的 带着问题看源码 动画的启动流程 开机动画的主入口在哪? 这个…

AI智能客服经验总结

AI智能客服经验总结 在使用OpenAI的API接口来构建人工智能客服系统时,prompt约束是非常重要的。它可以帮助确保生成的回复符合你的期望和需求。以下是一些关于如何设置和管理prompt约束的建议: 1. 明确客服系统的目标 首先,明确你的客服系…

3072. 将元素分配到两个数组中 II

题目 给你一个下标从 1 开始、长度为 n 的整数数组 nums 。 现定义函数 greaterCount ,使得 greaterCount(arr, val) 返回数组 arr 中 严格大于 val 的元素数量。 你需要使用 n 次操作,将 nums 的所有元素分配到两个数组 arr1 和 arr2 中。在第一次操…

09-数组的含义以及零长数组变长数组与多维数组

09-数组的含义以及零长数组变长数组与多维数组 文章目录 09-数组的含义以及零长数组变长数组与多维数组一、数组名的含义1.1 表示整个数组的首地址1.2 表示整个数组首元素的首地址 二、数组下标字符串常量 三、零长数组3.1 示例 四、变长数组4.1 示例 五、多维数组5.1 定义与初…

C++学习/复习14--list的模拟实现(节点类/迭代器封装成类/list类/测试)

一、节点类 1.匿名对象 **在C中,匿名对象主要是通过构造函数直接生成的未命名对象实例,通常产生于以下三种情况:将对象作为值传递给函数、进行类型转换以及在函数需要返回一个对象时**。以下是对这三种情况的详细介绍: 1. **传…

【动态规划-BM78 打家劫舍(一)】

题目 描述 你是一个经验丰富的小偷,准备偷沿街的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家,就不能再偷第二家;如果偷了第二家&…

AI大模型时代,帆软引领对话式业务分析变革

大数据产业创新服务媒体 ——聚焦数据 改变商业 试想一下,假如用户完全不用懂技术,也不需要懂什么数据分析技巧,就可以随心所欲的进行数据分析,该多好。现在,有一个工具可以实现这个设想,那就是基于大模型…

嵌入式Linux系统编程 — 3.3 chown、fchown 和 lchown 函数更改文件属主

目录 1 文件属主 1.1 文件属主概念 1.2 如何查看文件属主 1.3 有效用户 ID 和有效组 ID 2 chown 函数 2.1 chown命令 2.2 chown函数 2.3 getuid 和 getgid函数 3 fchown函数 3.1 fchown函数简介 3.2 示例代码 4 lchown函数 1 文件属主 1.1 文件属主概念 Linux…

高通SDX12:Voice Over USB 功能调试

一、功能概述及使用环境 Linux PC 作为上位机,内置 SLIC基于高通 SDX12 平台的设备作为从设备,通过USB连接到 Linux PC 上,在 PC 上枚举 UAC 设备从设备进行 MO/MT Call 时,上位机使用 arecord 进行录音,音频数据通过 USB 传至上位机,上位机停止录音后再使用 aplay 进行播…

idea debug时提示”Method breakpoints may dramatically slow down debugging“的解决办法

问题现象 今天同事喊我过去看一个问题,项目正常启动的时候没问题,debug模式就卡住了,很久不动。我推测是哪个断点导致的,一看断点果然有情况。在方法上打了断点。 解决方式(Android Studio一样的解决) 1、View Brea…

责任链模式(行为型)

目录 一、前言 二、责任链模式 三、总结 一、前言 责任链模式(Chain of Responsibility Pattern)也叫职责链模式,是一种行为型设计模式,职责链模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦…

机器学习--损失函数

损失函数(Loss Function),也称为代价函数(Cost Function)或误差函数(Error Function),是机器学习和统计学中的一个重要概念。它用于量化模型预测值与真实值之间的差异。损失函数的值…

毫米波雷达深度学习技术-1.6目标识别2

1.6.4 自动编码器和变体自动编码器 自编码器包括一个编码器神经网络,随后是一个解码器神经网络,其目的是在输出处重建输入数据。自动编码器的设计在网络中施加了一个瓶颈,它鼓励原始输入的压缩表示。通常,自编码器旨在利用数据中的…

Spring boot项目

一. Spring boot 安装地址 https://start.spring.io/ 二. 选择 三. idea配置 找到下载的文件解压缩,打开pom.xml(选择从idea打开)

Shell以及Shell编程

Shell的任务 ①分析命令; ②处理通配符、变量替换、命令替换、重定向、管道和作业控制; ③搜索命令并执行。 内部命令:内嵌在Shell中。 外部命令:存在于磁盘上的独立可执行文件。 #!/bin/bash #! 称为一个幻数&…

【Vue3】理解toRef() 和 toRefs()

历史小剧场 知道可能面对的困难和痛苦,在死亡的恐惧中不断挣扎,却仍然能战胜自己,选择这条道路,这才是真正的勇气。----《明朝那些事儿》 前言 toRef 和 toRefs 是Vue3中的响应式转换工具函数 toRef: 不影响源对象的情况下&#x…

DIO控制卡,IRIG-B码卡,PCI-E总线接口卡,百兆数据采集卡

DIO控制卡 ● 4路继电器输出(5A250VAC) ● 4路开关量输入(24VDC) ● 1路IDE接口 ● 端口浪涌保护 IRIG-B码卡 ● 1路IRIG-B对时接口(RS485/光纤) ● 1路IEEE1588 V2对时接口(RJ45/光纤&#…

Python在股票交易分析中的应用:布林带与K线图的实战回测

引言 在股票交易的世界中,技术分析是投资者们用来预测市场动向的重要工具。布林带(Bollinger Bands)作为一种动态波动范围指标,因其直观性和实用性而广受欢迎。本文将通过Python代码,展示如何使用布林带结合K线图来分…

数据结构之计数排序算法【图文详解】

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 博主主页:LiUEEEEE                        …

【python报错】TypeError: dict.get() takes no keyword arguments

【Python报错】TypeError: dict.get() takes no keyword arguments 在Python中,字典(dict)是一种非常灵活的数据结构,用于存储键值对。dict.get()方法是用来从字典中获取与给定键(key)相关联的值&#xff0…