Postgres主进程文件—postmaster.pid

注意 本人的博客都迁移到本人自己搭建的博客地址,通过此处可查看。

正如上一篇文章PostgreSQL的核心架构所讲,PostgresSQL的主进程是Postmaster,当我们启动PostgresSQL后,会在PostgreSQL中的数据文件夹下生产一个postmaster.pid的文件,那么这个文件记录了什么信息呢,我通过查阅源代码以及相关文档,对此文件进行内容进行说明:

postmaster内容

使用cat -n 命令可以查看postmaster.pid文件内容:

Postgres主进程文件—postmaster.pid_第1张图片)

根据每一行进行解释,并给出对应的源代码说明

  1. 13795: 代表Postgres主进程的PID

Postgres主进程文件—postmaster.pid_第2张图片

  1. /usr/local/pgsql/data: 代表数据目录

  2. 1529235109: 代表postmaster文件的创建时间。

  3. 5432: 代表数据库监听端口,在postgresql.conf中对应port = 5432

来自源代码说明:

/* The socket number we are listening for connections on */
int			PostPortNumber;
  1. /tmp: 代表是unix socket的监听目录,在postgresql.conf中对应 unix_socket_directory = '/tmp'

来自源代码说明:

/* The directory names for Unix socket(s) */
char	   *Unix_socket_directories;
  1. *** **: 代表数据库监听地址,对应postgresql.conf的listen_addresses = '\* '

来自源代码说明:

/* The TCP listen address(es) */
char	   *ListenAddresses;
  1. 5432001 163840:代表的是共享内存的地址(shared memory segments中的key和shmid)。

输入ipcs可以查看:

Postgres主进程文件—postmaster.pid_第3张图片

注: postmaster.pid显示的是key转成10进制后的数字。

  1. ready 代表主进程状态
typedef enum
{
	PM_INIT,					/* postmaster starting */
	PM_STARTUP,					/* waiting for startup subprocess */
	PM_RECOVERY,				/* in archive recovery mode */
	PM_HOT_STANDBY,				/* in hot standby mode */
	PM_RUN,						/* normal "database is alive" state */
	PM_WAIT_BACKUP,				/* waiting for online backup mode to end */
	PM_WAIT_READONLY,			/* waiting for read only backends to exit */
	PM_WAIT_BACKENDS,			/* waiting for live backends to exit */
	PM_SHUTDOWN,				/* waiting for checkpointer to do shutdown
								 * ckpt */
	PM_SHUTDOWN_2,				/* waiting for archiver and walsenders to
								 * finish */
	PM_WAIT_DEAD_END,			/* waiting for dead_end children to exit */
	PM_NO_CHILDREN				/* all important children have exited */
} PMState;

你可能感兴趣的:(PostgreSQL)