理解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 grep
     1  23267  23267  23267 ?            -1 Ss      26   0:02 /usr/pgsql-14/bin/postgres
 23267  23268  23268  23268 ?            -1 Ss      26   0:00  \_ postgres: logger
 23267  23270  23270  23270 ?            -1 Ss      26   0:00  \_ postgres: checkpointer
 23267  23271  23271  23271 ?            -1 Ss      26   0:03  \_ postgres: background writer
 23267  23272  23272  23272 ?            -1 Ss      26   0:03  \_ postgres: walwriter
 23267  23273  23273  23273 ?            -1 Ss      26   0:02  \_ postgres: autovacuum launcher
 23267  23274  23274  23274 ?            -1 Ss      26   0:00  \_ postgres: archiver
 23267  23275  23275  23275 ?            -1 Ss      26   0:04  \_ postgres: stats collector
 23267  23276  23276  23276 ?            -1 Ss      26   0:00  \_ postgres: logical replication launcher
 23267  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代传人)
职业太极拳教练,兼任北京陈式太极拳研究会副秘书长。
如果想通过习练陈式太极拳改善体质,也可以联系我。

 

最近更新

  1. TCP协议是安全的吗?

    2024-04-08 13:58:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-08 13:58:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-08 13:58:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-08 13:58:01       18 阅读

热门阅读

  1. 力扣-图论

    2024-04-08 13:58:01       12 阅读
  2. web蓝桥杯真题:图片水印生成

    2024-04-08 13:58:01       12 阅读
  3. 面经 (24-4)

    2024-04-08 13:58:01       14 阅读
  4. 力扣-搜索二维矩阵

    2024-04-08 13:58:01       14 阅读
  5. 3GPP-LTE Band26标准定义频点和信道(V17.3.0 (2022-09)

    2024-04-08 13:58:01       14 阅读
  6. Python基于Tkinter的加法游戏

    2024-04-08 13:58:01       12 阅读