postgresql 13安装后启动错误解决

news/2024/7/9 22:32:22 标签: postgresql, 数据库

安装

下载 pg 13 可执行文件,一路next,记住端口号,5432。

启动

D:\Program Files\PostgreSQL\13\bin>.\pg_ctl.exe start -D "D:\Program Files\PostgreSQL\13\data" -w

报错:

2024-01-10 11:52:47.171 CST [2508] 日志:  正在启动 PostgreSQL 13.13, compiled by Visual C++ build 1914, 64-bit
2024-01-10 11:52:47.172 CST [2508] 日志:  正在监听IPv6地址"::",端口 5432
2024-01-10 11:52:47.172 CST [2508] 日志:  正在监听IPv4地址"0.0.0.0",端口 5432
2024-01-10 11:52:47.240 CST [9480] 日志:  数据库上次关闭时间为 2024-01-10 11:52:40 CST
2024-01-10 11:52:47.437 CST [2508] 日志:  数据库系统准备接受连接
2024-01-10 11:55:47.378 CST [2508] 日志:  无法打开文件 "postmaster.pid": No such file or directory
2024-01-10 11:55:47.378 CST [2508] 日志:  由于数据目录锁文件非法而执行立即关闭
2024-01-10 11:55:47.378 CST [2508] 日志:  接收到立即 (immediate) 停止请求
2024-01-10 11:55:47.378 CST [2508] 日志:  无法打开文件 "postmaster.pid": No such file or directory
2024-01-10 11:55:47.389 CST [10824] 警告:  中断联接, 因为其它服务器进程崩溃
2024-01-10 11:55:47.389 CST [10824] 详细信息:  Postmaster 命令此服务器进程回滚当前事物并退出, 因为其它服务器进程不正常的退出可能毁坏了共享内存.
2024-01-10 11:55:47.389 CST [10824] 提示:  一会儿你将可以重联接数据库并且重复你的命令.
2024-01-10 11:55:47.439 CST [2508] 日志:  数据库系统已关闭

排查

是不是端口被占用:

netstat -ano | findstr "5432"

排除,刚学pg,不了解,搜索出解决方案:

pg_resetwal.exe -f ..\data

再次执行, 上面的 start 命令,成功。

总结

pg_resetwal.exe 是 PostgreSQL 数据库管理系统中的一款工具,主要设计用于重置数据库的预写日志(Write-Ahead Logging, WAL)以及其他相关的控制信息。该工具在数据库出现特定故障,需要手动干预恢复时使用。
该工具的 -f 选项是 --force 的简写形式,用于强制执行操作,而 ..\data 指定了数据库的数据目录。具体来说,pg_resetwal -f ..\data 的作用包括:

  1. 清除现有的预写日志: 在执行该命令后,所有的预写日志文件都会被清除。这意味着数据库将不再有当前的 WAL 日志信息。
  2. 重置控制文件: 除了清除 WAL 日志,该命令还会重置 pg_control 文件中的信息。pg_control 文件包含关于数据库状态的重要信息,如最后的检查点位置等。
  3. 重建 WAL 日志:数据库重启后,系统会重新开始生成 WAL 日志。由于之前的 WAL 日志已被清除,新的 WAL 日志将基于最后的检查点位置开始记录。
    应用场景主要包括:
  • 数据恢复:数据库因为某些异常情况(如文件系统损坏)导致无法正常启动时,可以使用 pg_resetwal 来重置数据库状态,为之后的恢复操作创造条件。
  • WAL 日志管理: 在某些情况下,可能需要清空所有的 WAL 日志以减少磁盘空间的占用,或者是因为其他的维护操作。
  • 故障切换: 在多副本的 PostgreSQL 集群中,如果主节点出现故障,备节点接管成为新的主节点后,可能需要使用 pg_resetwal 来确保新的主节点可以正常工作。
    在使用 pg_resetwal 工具时,应该非常谨慎,因为它会改变数据库的状态,并可能导致数据丢失。通常,在使用之前应该进行备份,并在理解了所有后果之后才执行。此外,强制执行(使用 -f--force)会绕过某些检查,因此在非紧急情况下不建议使用。在执行该操作之前,应仔细阅读官方文档,并考虑咨询有经验的数据库管理员。

pg_ctl.exe 是 PostgreSQL 数据库管理系统中用于控制数据库服务的工具。start 选项用于启动 PostgreSQL 数据库服务。-D 选项后跟的是数据目录的路径,而 -w 选项表示在启动过程中如果遇到错误,将等待直到服务可以正常启动。
具体来说,pg_ctl.exe start -D "D:\Program Files\PostgreSQL\13\data" -w 的作用包括:

  1. 启动数据库服务: 这个命令会启动 PostgreSQL 数据库服务,使得数据库开始接受新的连接和查询。
  2. 指定数据目录: -D 选项后面跟着的是数据目录的路径,这样 pg_ctl 就知道数据库文件存放在哪里。
  3. 等待服务启动: -w 选项表示如果服务启动失败,pg_ctl 将等待一段时间后重试,直到服务能够成功启动。这通常用于服务依赖其他服务(如网络服务)的情况,确保数据库服务在所有依赖服务都就绪后才开始。
    应用场景主要包括:
  • 正常启动数据库 当你需要启动 PostgreSQL 数据库服务时,可以使用这个命令。
  • 在脚本中使用: 在自动化脚本中,你可能会在启动数据库服务后执行其他数据库相关的操作,使用 -w 可以确保数据库服务已经启动,不会因为服务未就绪而影响脚本执行。
  • 故障恢复:数据库服务因某些原因停止后,可以使用这个命令来重新启动服务。
  • 服务依赖管理: 如果 PostgreSQL 数据库服务依赖于其他服务(如 SQL Server 服务),使用 -w 可以确保在所有依赖服务启动后再启动数据库服务。
    在使用这个命令时,通常不需要 -w 选项,除非你知道数据库服务需要依赖其他服务或者有其他特定的启动需求。在大多数情况下,简单地使用 pg_ctl.exe start -D "D:\Program Files\PostgreSQL\13\data" 就足够了。

http://www.niftyadmin.cn/n/5326576.html

相关文章

【已解决】c++如何打印变量的类型

本博文源于笔者正在编写的c代码,在c/c中我们经常用auto去接一个变量,这样我们既可以不用知道变量或函数结果的类型,就可以轻松愉快编码,如果想要知道变量的类型呢?那就需要这样一个函数。 问题再现 想要用函数去打印…

理解SIFT/SURF算法原理,并进行关键点检测

SIFT/SURF算法 1.1 SIFT原理 前面两节我们介绍了Harris和Shi-Tomasi角点检测算法,这两种算法具有旋转不变性,但不具有尺度不变性,以下图为例,在左侧小图中可以检测到角点,但是图像被放大后,在使用同样的窗…

S型速度曲线规划(指数函数算法)

S型速度曲线轨迹规划还可以参考下面文章链接: https://rxxw-control.blog.csdn.net/article/details/126335806https://rxxw-control.blog.csdn.net/article/details/126335806带平滑功能的斜坡函数 https://rxxw-control.blog.csdn.net/article/details/128893104

《动手学深度学习》学习笔记 第9章 现代循环神经网络

本系列为《动手学深度学习》学习笔记 书籍链接:动手学深度学习 笔记是从第四章开始,前面三章为基础知识,有需要的可以自己去看看 关于本系列笔记: 书里为了让读者更好的理解,有大篇幅的描述性的文字,内容很…

父组件中 arr.push改变数组,但是子组件监听不到 arr 的变化

目录 一、问题 二、解决方法 三、总结 tiips:如嫌繁琐,直接移步总结即可! 一、问题 1.真是奇怪呀,一般来说通过 push方法改变 数组,是一定会有响应式的,那就可以监听到变化。但是我今天却遇到了一件奇怪的事情。在…

51单片机内部的主要寄存器

51单片机内部的主要寄存器 51单片机(8051系列)内部包含一系列特殊功能寄存器(SFRs),这些寄存器用于控制和管理单片机的各种硬件资源,包括定时器、中断系统、串行通信接口、并行输入输出端口等。以下是51单…

网页屏幕适配通透了

一,如果设计尺寸固定 那就按照固定尺寸开发 一般都是1920*1080 二,需要适配多种像素屏幕(大屏可视化) 可使用媒体查询设置多套css样式或者使用自适应单位,%,vw,vh 最好解决方案rem&#xff…

机器学习平台架构师招聘(ZJ)

[学背] 1、C9、985、211、国内外计算机专业强校优先看 2、普通一本结合公司背景、业务背景看 [专业背景]计算机相关专业科班出身最佳 [其他要求]稳定性好 职位描述 工作内容: 1、负责机器学习平台的设计和开发工作,打造国内领先的聚焦AI开发者体验的…