openGauss集群数据盘迁移,生产实战

2024-09-03 01:12

本文主要是介绍openGauss集群数据盘迁移,生产实战,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

半导体等核心MES制造执行系统是设备数据采集、设备联网管理、质量管理等数字化的制造核心应用软件。这不也就刚刚 ,国产数据库openGauss突发数据磁盘爆满,主备集群宕机,以下是故障紧急处理的全流程,分享给大家!

1.故障现象

由于半导体某制造业产能提升,原有部署的openGauss数据分区空间不足,直接造成openGauss集群宕机,造成核心应用故障,影响生产。

手动启动集群的时候已经发现无法启动,此时排查服务器分区使用情况,发现数据文件所在的磁盘分区/根目录使用已经到达100%

此时发现备库也无法使用,处于修复状态

2.故障处理

此时唯有停机进行数据文件分区的迁移,以下为处理的过程

2.1 挂载新的分区

通过LVM管的方式,在主备库挂在了/u01分区用于openGauss数据盘,后面进行迁移。

LVM 的全名是 Logical Volume Manager,
中文可以翻译作逻辑卷轴管理员。之所以称为“卷
轴”可能是因为可以将 
filesystem 像卷轴一样伸长或缩短之故吧!
LVM 的作法是将几个实体的
partitions或disk
通过软件组合成为一块看起来是独立的大磁盘VG,
然后将这块大
磁盘再经过分区成为可使用分区LV, 
最终就能够挂载使用了

2.2 停集群迁移

--此步操作为停集群
[omm@gaussdb1 ~]$  gs_om -t stop
Stopping cluster.
=========================================
Successfully stopped cluster.
=========================================
End stop cluster.
--此部操作为迁移openGauss数据路径新建/u01分区的数据使用目录,记得授权哈
mkdir -p /u01/openGauss/data/dn
chmod 775 /u01 -R
chown omm:dbgrp /u01 -R--记住omm用户下带权限拷贝
cp /openGauss/data/dn 
/u01/openGauss/data/dn -r

2.3 修改配置文件

openGauss安装前的配置文件非常重要,一定在安装后记得保存,防止后期集群变更使用。

以下只要修改安装部署使用的XML文件配置
红色部分,替换原有的路径/openGauss/data/dn
为现在的/u01/openGauss/data/dn即可

2.4 重构cluster_config配置

因为这套集群是CM管理的方式,需要找到cluster_config配置文件,搬移数据库后修改配置路径再启动。

在主库通过以下命令重构集群配置,并分发给备库
gs_om -t generateconf 
-X XMLFILE --distribute注:XMLFILE就是安装集群的配置文件

以上命令执行后实际文件是修改的
$GAUSSHOME/bin/cluster_static_config
它是一个二进制文件,通过strings可以查看
我们发现主备库的集群配置都更新了
数据文件统一更新为了
/u01/openGauss/data/dn

2.5 重新启动集群

[omm@gaussdb1 ~]$ gs_om -t start
Starting cluster.
======================================================================
Successfully started primary instance. Wait for standby instance.

3.恢复后续工作

3.1 业务连接中断处理

数据库恢复后发现有一些报表业务,
短链接出现页面无法展示数据的问题,后台报以下错误
### Error querying database.  
Cause: org.postgresql.util.PSQLException: 
FATAL: terminating connection due to administrator command
原因如下;
长连接但是长期不用,然后第一次做sql 
就报错会话超时了
确定长连接用的中间件,
有定期空闲后去select做一下
下保活的机制即可。
本次是将
session_timeout 改为 0 关掉后
故障恢复了

3.2 统计信息处理

业务恢复后发现部分查询界面无法出结果,因为是做了数据盘的迁移,需要做一次全库的统计信息即可

openGauss统计信息会自动收集,10min一次,
死元祖超过10%的阈值才会满足触发条件收集统计信息,
生产环境可以改小点。--重点关注的参数如下:
autovacuum_mode
autovacuum_naptime
autovacuum_analyze_scale_factor

处理的办法就是给全库做了一下统计信息的收集

核心的大表数据也根实际吻合了

4.总结

通过这一次故障我们发现,其实在国产库数据库的使用过程中,必不可少的会有一些故障,这是正常的。我们需要的是完善的处理机制,需要的是大量的案例供我们的用户参考使用,希望这次故障的处理能帮助到大家!

这篇关于openGauss集群数据盘迁移,生产实战的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

Redis事务与数据持久化方式

《Redis事务与数据持久化方式》该文档主要介绍了Redis事务和持久化机制,事务通过将多个命令打包执行,而持久化则通过快照(RDB)和追加式文件(AOF)两种方式将内存数据保存到磁盘,以防止数据丢失... 目录一、Redis 事务1.1 事务本质1.2 数据库事务与redis事务1.2.1 数据库事务1.

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

Mybatis拦截器如何实现数据权限过滤

《Mybatis拦截器如何实现数据权限过滤》本文介绍了MyBatis拦截器的使用,通过实现Interceptor接口对SQL进行处理,实现数据权限过滤功能,通过在本地线程变量中存储数据权限相关信息,并... 目录背景基础知识MyBATis 拦截器介绍代码实战总结背景现在的项目负责人去年年底离职,导致前期规