概述
pg数据库和mysql数据库的安装目录结构很类似,程序和数据是分开的,在启动时候可以自行指定不同的数据目录来做到启动不同的数据库。
目录
下面表格来解释pg数据目录下,每个文件夹以及文件名的作用。
目录名 | 作用 |
---|---|
base | 该目录包含了数据库中各个数据库,每个数据库都是由一个文件夹组成,文件名是该数据库的oid,这个可以通过数据字典pg_database来查看对应的数据库名(select oid,datname from pg_database)。 |
pg_xlog/pg_wal | 该目录包含wal(预写)日志。注意在10版本后,该目录重命名为"pg_wal"。 |
global | 该目录包含集群范围的各个表和相关视图。 ( pg_database、 pg_tablespace ) |
pg_clog | 该目录包含事务提交状态数据。 |
pg_multixact | 该目录包含多事务状态数据(等待锁定的并发事务) |
pg_notify | 该目录包含LISTEN/NOTIFY状态数据。 |
pg_serial | 该目录包含了已经提交的序列化事务的有关信息。 |
pg_snapshots | 该目录包含导出的快照。 |
pg_stat_tmp | 该目录包含统计子系统的临时文件。 |
pg_subtrans | 该目录包含子事务状态数据。 |
pg_tblspc | 该目录包含表空间的符号链接。 |
pg_twophase | 该目录包含预备事务的状态文件。 |
pg_commit_ts | 该目录包含已提交事务的时间。 |
pg_dynshmem | 该目录包含动态共享内存子系统使用的件。 |
pg_logical | 该目录包含逻辑解码的状态数据。 |
pg_replslot | 该目录包含复制槽数据。 |
pg_stat | 该目录包含统计子系统的永久文件。 |
文件名 | 作用 |
---|---|
pg_hba.conf | 数据库访问控制文件,一般新安装的数据库都需要进行配置,在流复制中也需要配置。 |
pg_ident.conf | 将数据库用户映射到本地用户的一种认证方式,使用比较少,在特殊场景下需要配置(控制哪一个本地用户可以连接到哪一个数据库)。 |
postgresql.conf/postgresql.base.conf | 主要配置文件,在数据库安装完后,需要手动更改里面的监听地址,否则默认只能本地连接。 |
PG_VERSION | 包含版本信息。 |
postmaster.pid | 启动后pg主进程ID。 |
总结
了解各个数据库的文件的作用对于理解数据库的逻辑结构非常有用,这方面需要不断的学习。