首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

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

编程知识
2024年08月24日 14:33

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

 

 

     

From:https://www.cnblogs.com/runnerjack/p/18377822
本文地址: http://shuzixingkong.net/article/1399
0评论
提交 加载更多评论
其他文章 Go 互斥锁 Mutex 源码分析(二)
原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 在 Go 互斥锁 Mutex 源码分析(一) 一文中分析了互斥锁的结构和基本的抢占互斥锁的场景。在学习锁的过程中,看的不少文章是基于锁的状态解释的,个人经验来看,从锁的状态出发容易陷入细节,了解锁的状态转换过一段时间就忘,难以做到真正的理解。想
Go 互斥锁 Mutex 源码分析(二) Go 互斥锁 Mutex 源码分析(二) Go 互斥锁 Mutex 源码分析(二)
线性dp:最长公共子串
最长公共子串 本文讲解的题与leetcode718.最长重复子数组,题意一模一样,阅读完本文以后可以去挑战这题。 力扣链接 题目叙述: 给定两个字符串,输出其最长公共子串的长度。 输入 ABACCB AACCAB 输出 3 解释 最长公共子串是ACC,其长度为3。 与最长公共子序列的区别 公共子串:
线性dp:最长公共子串
折腾 Quickwit,Rust 编写的分布式搜索引擎(专为从对象存储中实现亚秒级搜索而设计)
什么是 Quickwit? Quickwit 是首个能在云端存储上直接执行复杂的搜索与分析查询的引擎,并且具有亚秒级延迟。它借助 Rust 语言和分离计算与存储的架构设计,旨在实现资源高效利用、易于操作以及能够扩展到 PB 级数据量。 Quickwit 非常适合日志管理、分布式追踪以及通常为不可变数
折腾 Quickwit,Rust 编写的分布式搜索引擎(专为从对象存储中实现亚秒级搜索而设计) 折腾 Quickwit,Rust 编写的分布式搜索引擎(专为从对象存储中实现亚秒级搜索而设计)
从网友探秘 《黑神话:悟空》 的脚本说说C#
《黑神话:悟空》千呼万唤始出来。在正式发售后不到24小时,Steam在线玩家峰值突破222万,在Steam所有游戏在线玩家历史峰值中排名第二。第一拨玩家纷纷晒出好评,称这款现象级产品正式开启国产3A游戏(3A 俗称:大量的资源、大量的金钱和大量的时间)元年,黑神话悟空是国内首款3A游戏,画面剧情都很
从网友探秘 《黑神话:悟空》 的脚本说说C#
【Azure Logic App】在逻辑应用中开启或关闭一个工作流是否会对其它工作流产生影响呢?
问题描述 使用标准版的Azure Logic App服务,可以创建多个工作流(workflow),如果在启用/禁用其它的工作流时,是否会对正在运行其它工作流造成影响呢? 问题解答 在实际的测验中,我们得到的答案是:会造成影响!在Disabled/Enabled同一个Logic App中的Workfl
【Azure Logic App】在逻辑应用中开启或关闭一个工作流是否会对其它工作流产生影响呢? 【Azure Logic App】在逻辑应用中开启或关闭一个工作流是否会对其它工作流产生影响呢? 【Azure Logic App】在逻辑应用中开启或关闭一个工作流是否会对其它工作流产生影响呢?
AD(Active Directory )域的搭建与操作
AD 域的搭建与操作 一、准备工作 准备好 VM 虚拟机和 Server 的安装包。 二、安装 Server 2022 选择标准且有图形界面的进行安装。 选择自定义安装方式。 为虚拟机 server2022 安装 VMware tools。 回到桌面,右键个性化把计算机和网络图标放出来。 三、安装
《Programming from the Ground Up》阅读笔记:p103-p116
《Programming from the Ground Up》学习第7天,p103-p116总结,总计14页。 一、技术总结 1.读写文件 (1)linux.s linux.s: #file name:linux.s # system call numbers(按数字大小排列,方便查看) .equ
《Programming from the Ground Up》阅读笔记:p103-p116
线性dp:LeetCode674. 最长连续递增序列
LeetCode674. 最长连续递增序列 阅读本文之前,需要先了解“动态规划方法论”,这在我的文章以前有讲过 链接:动态规划方法论 本文之前也讲过一篇文章:最长递增子序列,这道题,阅读本文的同时可以与“最长递增子序列进行对比”,这样更能对比二者的区别! LeetCode300.最长递增子序列 -