磁盘上的各种数据库文件
一、$PGDATA目录介绍
1.1、目录
cd $PGDATA
tree . -L 1 -d
base:包含数据库用户所创建的各个数据库
global:包含集群范围内各个表和视图,pg_database、pg_tablespace
pg_commit_ts:包含已经提交事务的时间
pg_dynshmem:包含动态共享内存
pg_logical:包含逻辑解码的状态数据
pg_multixact:包含多事务状态的数据
pg_notify:包含监听和通知状态数据
pg_replslot:包含复制槽的数据
pg_serial:包含已经提交的序列化事务的有关信息
pg_snapshots:包含导出的快照
pg_stat:统计信息的永久性文件
pg_stat_tmp:统计信息的临时文件
pg_subtrans:包含子事务的状态数据
pg_tblspc:包含表空间的符号连接
pg_twophase:预备事务状态数据信息
pg_wal:WAL:write ahead logging预写日志,类似Oracle Redo Log、MySQL Binlog
pg_xact:事务提交的状态数据
1.2、文件
cd $PGDATA
# 根据实际环境最后再处理一下grep过滤掉不需要的,如:grep -Ev '^68|logfile'
ls -l | grep -v '^d' | awk -F ' ' '{print $NF}' | grep -Ev '^68|logfile'
pg_hba.conf:用于配置客户端的黑白名单
pg_ident.conf:用于配置哪些操作系统用户可以映射成是数据库用户
postgresql.auto.conf:只保存alter system修改参数值
postgresql.conf:参数文件
postmaster.opts:记录服务器最后一次启动时使用的命令参数
postmaster.pid:主进程文件
PG_VERSION:版本信息
二、文件介绍
2.1、数据文件
用于存储数据,文件名以OID命名
对于超出1G的表数据文件,PG会自动将其拆分为多个文件来存储,而拆分的文件名将由pg_class中的relfilenode字段来决定,也就是说PG单个数据文件大小固定为1G
2.2、日志文件
- 运行日志
默认情况,禁用
各种错误和警告信息、慢查询信息、数据库实例启动和停止,类似Oracle的告警日志
postgresql.conf
# - Where to Log -
log_destination = 'stderr'
logging_collector = off
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
- 事务日志
默认开启,内容一般不能直接读,是事务提交日志,记录了事务的元数据
默认存储在目录$PGDATA/pg_xact/
- 服务器日志
logfile
- 预写日志
WAL - write ahead logging 提前写日志(RDBMS的精髓)
记录的就是客户端提交事务的操作,只要WAL日志写入成功,就算客户端的事务提交成功
目录:pg_wal
日志名字总共设计为24个字符,8个字符为一组
00000001 00000000 00000002
时间线/时间戳 逻辑ID 物理ID
默认:16M
切换WAL日志文件:自动、手动
show wal_segment_size; -- 大小
select * from pg_ls_waldir(); -- 查看信息
select pg_switch_wal(); -- 手动切换wal日志
postgresql.conf
# wal_level = replica -- 默认值
# minimal:不能通过基础备份和WAL预写日志来恢复数据库
# replica:支持日志归档和复制
# logical:在replica的基础上,增加逻辑解码的相关信息
转换获取二进制预写日志文件的信息
pg_waldump pg_wal/000000010000000000000003
2.3、控制文件
记录了数据库运行的一些信息,如:数据库id、是否open、wal的位置、checkpoint的位置等等
controlfile是非常重要的文件,玩Oracle的多少都在集群Control File中掉过坑~
默认保存路径:$PGDATA/global/pg_control
查看控制文件的内容
pg_controldata $PGDATA
2.4、参数文件
- postgresql.conf
PG的主要参数文件,有很详细的说明和注释,和Oracle的pfile、MySQL的my.cnf类似
默认在$PGDATA目录下,有很多参数修改后都需要重启才能生效
从9.6版本以后支持了使用alter system来修改,修改后的会存在$PGDATA/postgresql.auto.conf下,可以reload或者restart来使之生效。
- postgresql.auto.conf
- 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或者cert |
trust是免密登录; reject是黑名单拒绝; md5是加密的密码; password是没有加密的密码; ident是Linux下PG默认的local认证方式, |
- pg_ident.conf
用户映射配置文件,用来配置哪些操作系统用户可以映射为数据库用户
结合pg_hba.conf中,method为ident可以用特定的操作系统用户和指定的数据库用户登录数据库

3219

被折叠的 条评论
为什么被折叠?



