读书人

postgresql学习札记【2】-pg的文件与目

发布时间: 2013-10-07 19:41:22 作者: rapoo

postgresql学习笔记【2】-pg的文件与目录

打算在刚开始的时候参考《Postgresql数据库内核分析》和PG的文档来学习。先了解了一下安装和启动pg之后,pg会在一台机器上创建那些文件和目录。

了解目录和文件之前,先看了一下pg的架构。pg采用的是常见的C/S架构,服务器端叫做postgres(服务器端的主程序和进程都叫这个名字,启动pg之后在服务器上至少可以看到6个postgres进程,对应于pg的几个主要的模块,并且每增加一个客户端连接,服务器段就会增加一个postgres进程来和客户端交互),管理所有的数据文件、接受客户端的连接、执行客户端提交的操作。客户端则可以是JDBC/ODBC、psql命令行客户端、嵌入式SQL客户端等等。

pg的目录结构很清晰,一个是安装目录,默认在/usr/local/pgsql下。另外一个就是存放数据文件和配置文件的目录,文档中叫做cluster's data directory,内核分析中译作数据集簇。数据集簇通常叫做PGDATA。每个数据库实例都会有一个PGDATA,每台机器上可以并存多个不同的实例。PGDATA下各个文件和子目录的作用详见PG9.3文档58章。其中的postgresql.conf、pg_hba.conf、pg_ident.conf是pg的配置文件,也就是说每个pg实例都有自己的配置,愚以为这一点上MySQL和pg很像。这3个配置文件中,pg_hba.conf配置了pg的访问权限,限制了哪些机器/IP段上的哪些用户对pg有什么样的访问权限,默认配置中只有本地用户可以访问pg。pg_ident.conf定义了操作系统用户名和pg中用户名的映射关系。postgresql.conf中包含了一个pg实例的其他所有配置。postmaster.pid文件是一个锁文件,生命周期和postmaster(pg最主要的一个进程,操作系统中其进程名也是postgres)进程一样,其中记录了postmaster的pid和共享内存段id。postmaster.opts中记录了postmaster上一次启动时的命令行参数。


参考文献:

《内核分析》2.2节

PG9.3文档58、59章

读书人网 >操作系统

热点推荐