PG数据库导致断电/重启无法正常启动问题排查

news/2024/11/16 6:01:04/文章来源:https://www.cnblogs.com/runnerjack/p/18377822

PG数据库导致断电/重启无法正常启动问题排查

一、问题

数据库断电后,启动PG数据库后无法正常启动,报”psql: could not connect to server: No such file or directory”的错误,错误图片如下:

 

 

二、背景分析

数据库是单机版,使用k8s进行部署运行在指定节点,数据目录挂服务器的指定目录。在数据中心机房部署了两套k8s集群,但是pod网络未规划好,两个集群pod网段有重复导致两个集群之间的pod概率性的发生地址冲突。在发生ip重复了后修改了我方使用的k8s集群的pod网段,并对所有pod进行了重启,在执行重启操作后我方部署pg数据库无法正常提供服务,经过查询容器日志发现了上述问题。

三、解决过程

①   根据日志进入容器查看文件是否存在

kubectl exec -it -n namespace contairnerId /bin/sh

进入容器后发现/var/run/postgresql/.s.PGSQL.5432文件不存在,然后进入一个正常的pg数据库容器,发现该文件是存在的,因此确认pg数据库的进程不正常。

②   查看pg数据库进程是否存在

cat /var/lib/postgresql/11/main/master.pid

                   查看后结果和含义如下:

 

  

          1)154->数据库的主进程号,可以通过ps -ef | grep postgres来查询,同时与/var/run/postgresql/11-main.pid里的值一致。

     2)/var/lib/postgresql/11/main->数据库的数据目录

     3)1724468744->数据库的启动时间,需要进行转换

          4)5432->数据库端口号

     5)/var/run/postgresql->PostgreSQL 的 Unix 域套接字目录

         然后通过执行top命令,发现pg数据库的进程并未启动,因此进一步确认pg数据库未正常启动。

③   重新启动pg数据库进程,发现问题原因

执行以下命令启动数据库:

./usr/lib/postgresql/11/bin/pg_ctl  /var/lib/postgresql/11/main start

执行完以后在当前屏幕输出有“invalid primary checkpoint record”等字样,翻译之后就是检查点损坏的意思。

④   修复检查点

使用数据库自带工具对检查点进行修复,进入数据库容器,切换到postgres用户,使用PG自带工具修复,执行命令如下:

./usr/lib/postgresql/11/bin/pg_resetwal –D /var/lib/postgresql/11/main

          修复完后启动数据库进程:

                   /usr/lib/postgresql/11/bin/pg_ctl -D /var/lib/postgresql/11/main start

 

     再通过navicat工具连可正常访问数据库了。

四、总结

原因定位:异常重启或断电异常了数据文件损坏,pg数据重启后在加载数据文件时发现检查点损坏,无法正常启动。

  解决方法:使用pg自带工具进行检查点修复:

1)  进入数据库容器,切换到postgres用户;

2)  找到pg_resetwal工具,对指定数据文件进行修改,以下是本次修改的命令

./usr/lib/postgresql/11/bin/pg_resetwal –D /var/lib/postgresql/11/main

 

3)  启动数据库

./usr/lib/postgresql/11/bin/pg_ctl -D /var/lib/postgresql/11/main start

 

 

     

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

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

相关文章

【AI+框架】人工智能计算平台安全框架应用参考

原创 网络安全等保测评如图B.1所示,各参与方通过服务接口调用AI计算平台提供的相关机制保护其AI核心资产。 各参与方如何调用安全机制 解决相应安全威胁可具体参考表B.1: a) AI应用运行方:基于本文件中定义的服务接口和安全模块实现的功能,保护AI应用安全运行, 抵御针对运行…

053、Vue3+TypeScript基础,页面通讯之$attrs的使用

01、main.js代码如下:// 引入createApp用于创建Vue实例 import {createApp} from vue // 引入App.vue根组件 import App from ./App.vue// 引入emitter用于全局事件总线 // import emitter from @/utils/emitterconst app = createApp(App);// App.vue的根元素id为app app.mou…

C程序设计语言(第2版新版)练习题1-8

练习1-8 编写一个统计空格、制表符与换行符个数的程序。#include <stdio.h>int main(int argc, char *argv[]) {(void)argc;(void)argv;int c;int space = 0;int tab = 0;int line = 0;while((c = getchar()) != EOF) {if (c == ) {space++;}else if (c == \t) {tab++;}…

CMake构建学习笔记3-libpng库的构建

使用CMake构建libpng库的关键过程libpng是一个用于读取、写入 PNG (Portable Network Graphics) 文件格式的开源软件库,有了上一篇笔记作为基础,构建起来也非常简单。还是在源代码的根目录中创建一个build文件夹,执行如下关键指令: # 配置CMake cmake .. -G "$Gener…

初学Java7

初步学习了容器的知识,大概了解了vector的使用,作为练习,完成了一个简陋的车站模拟系统

wsl损坏,WSLRegisterDistribution Failed with Error 0x8007019e

背景 之前由于关机中断还是什么原因,导致wsl不能用了,今天心血来潮想要用一下wsl,于是找办法修了一下。 过程 根据下面这个文章进行修复的。 https://thegeekpage.com/wslregisterdistribution-failed-with-error-0x8007019e/ 我执行了以下操作:关闭linux子系统,重启;开启…

C程序设计语言(第2版新版)练习题1-6

练习1-6 验证表达式getchar()!=EOF的值是0还是1。#include <stdio.h>int main(int argc, char *argv[]) {(void)argc;(void)argv;int c;printf("请输入:");printf("%d\n", (c = getchar()) != EOF);return 0; }运行结果: 输入1 输入ctrl-z

Jenkins报错

[808]There were errors checking the update sites: SSLHandshakeException: sun.secu解决方案 (1)插件管理页面提示:There were errors checking the update sites:IOException:Unable to tunnel through proxy.Proxy returins “HTTP/1.1 400”image (2)插件管理页面提…

字符串包含了不需要的双引号,导致读取成json文件失败?Python怎么批量修改?

大家好,我是Python进阶者。 一、前言 前几天在Python最强王者交流群【哎呦喂 是豆子~】问了一个Python数据处理的问题。问题如下: 大佬们 请教下这个问题,数据为下载的html文件,写法已经固定,解析成json文件会报错,这种字符串包含了不需要的双引号,导致读取成json文件…

快速排序时间复杂度

首先上结论:快速排序算法的时间复杂度是O(nlogn)。

IDEA更换背景图片

DEA如何更换背景图片 在IDEA编辑器中点击【Help】–》【Find Action…】快捷键为【CTRL+SHILF+A】。在打开的窗口内搜索【Set Background Image】并点击找到的选项。 选择浏览一张要更改成背景的图片,这里可以对背景的透明度,样式进行修改。修改完后点击【OK】按钮。 本文来…

【python教程】打包和发布自己的项目,让别人去pip

@目录1.环境搭建1.1 换源1.2 安装wheel1.3 安装twine1.4 注册PyPI账号2.编写setup.py2.1 项目文件树2.2 编写setup.py文件3.构建4.上传ERROR:The user XXX isnt allowed to upload to project 2024.1.19更新:1.环境搭建 1.1 换源在pip安装时使用-i参数,可以指定源。以下有许…