postgresql启动故障【已解决】

故障原因

暂时未知,电脑重启后postgresql无法正常运行,尝试重启遇到如下错误

本地计算机 上的 postgresql-x64-12 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。

排查过程

  1. 查看系统日志,发现pid已存在【计算机管理——系统工具——事件查看器——Windows日志
  2. 尝试kill 5432端口,再次启动还是失败
  3. 查看系统日志,发现连接超时????
  4. 奇怪了woc,果断重启电脑,不行玄学失败!!!
  5. ...

解决过程

1、使用pg_resetwal命令重置 WAL日志

首先进入postgresql\bin目录

然后执行以下命令

注:D:\ABC\postgresql\data为自己postgresql下的data目录!!!

pg_resetwal.exe -D D:\ABC\postgresql\data

2、既然他说存在了,那就删,删除之后再执行刚才的命令

查5432端口???行

wocl啥也没有!!!

3、用-f重置得了

pg_resetwal.exe -f D:\ABC\postgresql\data

4、完事,启动试试

pg_ctl start -D D:\ABC\postgresql\data

结局是好的!!!

人是懵逼的,为什么突然会启动不了?

GPT说

重置预写日志(Write-Ahead Logging,WAL)通常是在需要修复或恢复 PostgreSQL 数据库时进行的操作。WAL 是一种持久化技术,用于确保数据库在发生故障时能够保持一致性。在 PostgreSQL 中,WAL 日志记录了对数据库进行的所有更改操作,例如插入、更新和删除。这些日志使得数据库可以在崩溃或断电等突发情况下快速地恢复到一致的状态,从而避免数据丢失或损坏。

重置 WAL 日志可能会在以下情况下使用:

  1. 数据库损坏修复:当 PostgreSQL 数据库遇到损坏或不一致的情况时,例如某些 WAL 文件损坏或丢失,可以尝试通过重置 WAL 日志来修复数据库并使其恢复到一致的状态。
  2. 性能调优:有时,WAL 日志文件可能会变得过大,导致磁盘空间不足或性能下降。在这种情况下,重置 WAL 日志可以清除旧的日志文件,从而释放磁盘空间并改善性能。
  3. 数据库复制:在数据库复制过程中,可能需要重置 WAL 日志以重新启动复制过程并确保主从数据库之间的一致性。

尽管重置 WAL 日志在某些情况下可能是必要的,但要注意它可能会导致数据丢失或数据库状态不一致。因此,在执行此操作之前,请确保已经进行了充分的备份,并且了解其可能的影响。最好在非生产环境中测试此操作,以避免意外情况的发生。

得得得,我悟了!!!