理解PostgreSQL中的postmaster.pid

在PG中,一个简要的体系结构图可以大致画成下边的样子:

Server端基本上分成backend process和若干background process。这些process都是一个名为postmaster进程的子进程。而postmaster则是postgres进程的别名。

进程概况

[14:42:08-postgres@centos1:/pgccc]$ ps -axjf | grep 23267 | grep -v grep1  23267  23267  23267 ?            -1 Ss      26   0:02 /usr/pgsql-14/bin/postgres23267  23268  23268  23268 ?            -1 Ss      26   0:00  \_ postgres: logger23267  23270  23270  23270 ?            -1 Ss      26   0:00  \_ postgres: checkpointer23267  23271  23271  23271 ?            -1 Ss      26   0:03  \_ postgres: background writer23267  23272  23272  23272 ?            -1 Ss      26   0:03  \_ postgres: walwriter23267  23273  23273  23273 ?            -1 Ss      26   0:02  \_ postgres: autovacuum launcher23267  23274  23274  23274 ?            -1 Ss      26   0:00  \_ postgres: archiver23267  23275  23275  23275 ?            -1 Ss      26   0:04  \_ postgres: stats collector23267  23276  23276  23276 ?            -1 Ss      26   0:00  \_ postgres: logical replication launcher23267  46791  46791  46791 ?            -1 Ss      26   0:00  \_ postgres: postgres mydb [local] idle

系统启动以后,我们会发现一个特殊的文件:postmaster.pid。它的内容有什么含义呢?

Postmaster.pid包含了哪些信息

在PG成功启动完以后,postmaster父进程会生成一个postmaster.pid文件,其基本内容如下:

01  236002  /var/lib/pgsql/14/data03  165973786804  555505  /var/run/postgresql06  0.0.0.007  52527898     008  ready

总行8行,各自含义如下:

1、行1:2360,就是父进程的进程号pid,可以通过ps -axjf | grep postgres来查询

2、行2:/var/lib/pgsql/14/data PGDATA实例的数据目录

3、行3:1659737868**, 数据库的启动时间,需要转换 (转换后不是很准确)(自1970-01-01 00:00:00 UTC算起经历的秒数)

postgres=# select pg_postmaster_start_time(); 
pg_postmaster_start_time
----------------------------- 
2022-08-06 06:17:49.0841+08(1 row)
postgres=# select extract(epoch from pg_postmaster_start_time());   extract
------------------- 
1659737869.084100
(1 row)
postgres=# select to_timestamp(1659737869.084100);    
to_timestamp
----------------------------- 
2022-08-06 06:17:49.0841+08(1 row)

4、行4:实例运行监听的端口号: 5555

5、行5:实例 运行时使用的Unix Socket缺省目录: /var/run/postgresql

postgres=# show unix_socket_directories; 
unix_socket_directories--------------------------- /var/run/postgresql, /tmp(1 row)

6、行6:实例监听可接受的有效IP地址,这里是只接受IPv4: 0.0.0.0

postgres=# show listen_addresses ; 
listen_addresses------------------ 
0.0.0.0(1 row)

7、行7:52527898 0 记录着共享段的key和shmid值

[06:56:57-postgres@centos1:/var/lib/pgsql]$ 
ipcs -m
------ Shared Memory Segments --------
key    shmid   owner   perms   bytes   nattch   status
0x0321831a 0     postgres  600    56     7
postgres=# select x'0321831a'::bigint;  
int8
---------- 
52527898
(1 row)
postgres=# select to_hex(52527898); 
to_hex
--------- 
321831a
(1 row)

关于共享内存段,有趣的博文:

https://www.eygle.com/archives/2005/11/whats_mean_linux_shmmax.html

and:

Linux上shmmax 参数的设置及含义: https://www.modb.pro/db/16511

另一个:samples:

[01:49:37-postgres@sean-rh4:/var/lib/pgsql]$ ipcs -a
------ Message Queues 
--------
key    msqid   owner   perms   used-bytes  messages
------ 
Shared Memory Segments 
--------
key    shmid   owner   perms   bytes   nattch   status
0x0003e325 9     postgres  600    56     6
------ Semaphore Arrays --------
key    semid   owner   perms   nsems

8、行8:ready 实例目前的状态, 表示server已经准备就绪

[06:22:30-postgres@centos1:/var/lib/pgsql]$ pg_isready/var/run/postgresql:5555 
- 
accepting connections

 

微信公众号:数据库杂记   个人微信: _iihero
大家好,我是[Sean], iihero@CSDN
iihero@CSDN (https://iihero.blog.csdn.net) 
Sean@墨天轮 (https://www.modb.pro/u/16258)
数据库领域的资深爱好者一枚。SAP数据库技术专家与架构师,PostgreSQL ACE.
水木早期数据库论坛发起人db2@smth. 早期多年水木论坛数据库版版主。
曾长期担任CSDN相关数据库版版主。
国内最早一批DB2 DBA。前后对Sybase, PostgreSQL, HANA, 
Oracle, DB2, SQLite均有涉猎。
三本著作:<<Java2网络协议内幕>> <<Oracle Spatial及OCI高级编程>> 
<<Sybase ASE 15.X全程实践>>
兴趣领域:数据库技术及云计算、OpenAI业余专长爱好:中国武术六段 陈式太极拳第13代传人(北京陈式太极拳第5代传人)
职业太极拳教练,兼任北京陈式太极拳研究会副秘书长。
如果想通过习练陈式太极拳改善体质,也可以联系我。

 

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

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

相关文章

Docker 引擎离线安装包采集脚本

文章目录 一、场景说明二、脚本职责三、参数说明四、操作示例五、注意事项 一、场景说明 本自动化脚本旨在为提高研发、测试、运维快速部署应用环境而编写。 脚本遵循拿来即用的原则快速完成 CentOS 系统各应用环境部署工作。 统一研发、测试、生产环境的部署模式、部署结构、…

【Linux】进程间通信——匿名管道|命名管道

目录 什么是进程间通信 管道 匿名管道 什么是进程间通信 进程间通信&#xff0c;顾名思义就是两个进程互相通信。 可是进程是独立的&#xff0c;该如何通信呢&#xff1f; 类比你和你的朋友在网上聊天&#xff0c;你们两个人也是独立的&#xff0c;是如何通信的呢&#xf…

openharmony launcher 调研笔记(01)数据初始化

最近在看launcher&#xff0c;把自己调研的点做个笔记&#xff0c;持续修改更新中&#xff0c;个人笔记酌情参考。 初始化MainAbility ● common 等 包以 三方库形式 被引入使用 在每个包中的oh-package.json5 文件有配置 { "devDependencies": {}, "n…

docker 部署 Epusdt - 独角数卡 dujiaoka 的 usdt 支付插件

部署 部署说明 部署之前必须注意的几点事项,该教程不一定适合所有用户: 本教程主要是使用 docker 部署,宝塔用户或宿主机直接安装的用户请直接参考官网教程.本教程是独立部署 epusdt,使用独立的mysql和redis,与dujiaoka项目分开. 在研究的过程中发现 epusdt 也需要用到 mys…

SpringCloud Alibaba Sentinel 规则持久化

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第十七篇&#xff0c;即使用 Sentinel 实现规则持久化。 二、概述 从前面我们做的实验可知&#xff0c;…

SpringCloud Alibaba Sentinel 创建流控规则

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第十四篇&#xff0c;即介绍 SpringCloud Alibaba Sentinel 创建流控规则。 二、基本介绍 我们在 senti…

uniapp vue2 时钟 循环定时器

效果展示&#xff1a; 时钟 写在前面&#xff1a;vue2有this指向&#xff0c;没有箭头函数 实验操作&#xff1a;封装一个时钟组件 uniapp vue2 封装一个时钟组件 核心代码&#xff1a; this指向的错误代码&#xff0c;在下&#xff1a; start() { this.myTimer setInterval(…

ctfshow web入门 文件包含 web151--web161

web151 打算用bp改文件形式(可能没操作好)我重新试了一下抓不到 文件上传不成功 改网页前端 鼠标右键&#xff08;检查&#xff09;&#xff0c;把png改为php访问&#xff0c;执行命令 我上传的马是<?php eval($_POST[a]);?> 查看 web152 上传马 把Content-Type改为…

js 数组 按列循环二维数组

期待效果&#xff1a; 核心代码&#xff1a; //js function handle(array) {var result [];for (let i 0; i < array[0].length; i) {var item []; for (let j 0; j < array.length; j) {item.push(array[j][i])} result.push(item);} return result; } 运行代码&a…

全面解析十七种数据分析方法,具象数据分析思维

一、介绍 在当今数据驱动的商业环境中&#xff0c;数据分析已经成为了企业获取竞争优势的关键工具。无论是为了优化运营效率&#xff0c;提高客户满意度&#xff0c;还是推动产品创新&#xff0c;企业都需要通过分析大量数据来做出明智的决策。数据分析方法多种多样&#xff0c…

Android详细介绍POI进行Word操作(小白可进)

poi-tl是一个基于Apache POI的Word模板引擎&#xff0c;也是一个免费开源的Java类库&#xff0c;你可以非常方便的加入到你的项目中&#xff0c;并且拥有着让人喜悦的特性。 一、使用poi前准备 1.导入依赖&#xff1a; 亲手测过下面Android导入POI依赖的方法可用 放入这个 …

3D桌面端可视化引擎HOOPS Visualize如何实现3D应用快速开发?

HOOPS Visualize是一个开发平台&#xff0c;可实现高性能、跨平台3D工程应用程序的快速开发。一些主要功能包括&#xff1a; 高性能、以工程为中心的可视化&#xff0c;使用高度优化的OpenGL或DirectX驱动程序来充分利用可用的图形硬件线程安全的C和C#接口&#xff0c;内部利用…