副问题[/!--empirenews.page--]
本日本文首要从日记文件、参数文件、节制文件、数据文件、redo日记(WAL)、靠山历程这六个方面来先容一下PostgreSQL的架构。
架构
PostgreSQL的首要架构如下:

一、日记文件
1. 日记文件种类
- $PGDATA/log 运行日记(pg10之前为$PGDATA/pg_log)
- $PGDATA/pg_wal 重做日记(pg10之前为$PGDATA/pg_xlog)
- $PGDATA/pg_xact 事宜提交日记(pg10之前为$PGDATA/pg_clog)
- 处事器日记,可以在启动的时辰指定,好比pg_ctl start -l ./alert.log
2. 运行日记
运行日记首要相干的参数如下,默认没有开启的话没有log目次,开启后会自动天生。


3. 事宜日记pg_xact
pg_xact是事宜提交日记,记录了事宜的元数据。默认开启。内容一样平常不能直接读。
4. 处事器日记
假如用pg_ctl启动的时辰没有指定-l参数来指定处事器日记,错误也许会输出到cmd前台。处事器日记记录了数据库的重要信息。
lsof或者可以过滤出在写的日记文件
- $lsof -c postgres| grep REG | grep -v /usr | grep -v /dev | grep -v /SYS
二、参数文件
1. postgresql.conf
pg的首要参数文件,有很具体的声名和注释,和Oracle的pfile,MySQL的my.cnf相同。默认在$PGDATA下。许多参数修改后都必要重启。9.6之后支持了alter system来修改,修改后的会存在$PGDATA/postgresql.auto.conf下,可以reload可能 restart来使之见效。
首要的参数如下:


2. pg_hba.conf
这个是利害名单的配置。文件里有具体的参数声名,默认参数如下:
- type 列有local,host,hostssl,hostnossl四种。local是当地认证
- database 可所以all,可能指定的数据库
- user列可所以all,可能详细的用户
- address 可所以ip可能网段
- method较量重要,有"trust", "reject", "md5", "password", "scram-sha-256", "gss", "sspi", "ident", "peer", "pam", "ldap", "radius" or "cert"这么多可选。trust是免密登录;reject是黑名单拒绝;md5是加密的暗码;password是没有加密的暗码;ident是Linux下PostgreSQL默认的local认证方法,往往能正确登录处事器的操纵体系用户(注:不是数据库用户)就能行使本用户映射的数据库用户不需暗码登录数据库
3. pg_ident.conf
pg_ident.con是用户映射设置文件。团结pg_hba.connf中,method为ident可以用特定的操纵体系用户和指定的数据库用户登录数据库。如下:
pg_ident.conf如下:

pg_hba.conf如下:

三、节制文件
1. 节制文件位置
- $PGDATA/global/pg_control
节制文件在数据库目次的global目次下。节制文件记录了数据库的重要信息。
2. 查察节制文件
pg_controldata可以查察节制文件的内容
- $ pg_controldata $PGDATA
- pg_control version number: 1100
- Catalog version number: 201809051
- Database system identifier: 6684270596680436587 #dbid
- Database cluster state: in production # primary
- pg_control last modified: Thu 16 May 2019 02:26:37 PM CST
- Latest checkpoint location: 0/48812A0
- Latest checkpoint's REDO location: 0/4881268 #redo 位置
- Latest checkpoint's REDO WAL file: 000000010000000000000001 #wal文件号
- Latest checkpoint's TimeLineID: 1
- Latest checkpoint's PrevTimeLineID: 1
- Latest checkpoint's full_page_writes: on
- Latest checkpoint's NextXID: 0:572 #下一个事宜id
- Latest checkpoint's NextOID: 16388 #下一个OID
- .....
controlfile记录了数据库运行的一些信息,好比数据库id,是否open,wal的位置,checkpoint的位置,等等。controlfile是很重要的文件,数据库陈设和调解。
四、数据文件
1. page
pg中,每个索引和表都是一个单独的文件,pg中叫做page。默认是每个大于1G的page会被支解pg_class.relfilenode.1这样的文件。
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|