PostgreSQL开发与实战(6.3)体系结构3

云的事随心讲 2024-03-19 20:01:38

作者:太阳

四、物理结构4.1 软件安装目录bin //二进制可执行文件include //头文件目录lib //动态库文件share //文档以及配置模版文件4.2 数据目录

4.2.1 参数文件pg_hba.conf //认证配置文件pg_ident.conf //认证方式用户映射文件postgresql.auto.conf //alter system动态修改配置文件postgresql.conf //主配置文件postmaster.optspostmaster.pid //pid

1、pg_hba.conf

pg_hba.conf文件为pg的认证配置文件,无论是我们用户登录还是主从复制,都需要在该文件下填写相关的认证配置,保证可正常联通数据库。

pg_hba.conf主要由5个参数组成:Type(主机类型)、Database(数据库名)、User(用户名)、Address(IP地址和掩码)、 Method(加密方法)

Type : 指定允许的连接方式

"local"表示使用 Unix-domain socket 进行连接;

"host" 表示可以使用 ssl或者非ssl加密的 TCP/IP socket 进行连接;

"hostssl" 表示必须通过ssl加密的 TCP/IP socket 进行连接;

"hostnossl" 表示通过使用非ssl的 TCP/IP socket 进行连接。

Database : 指定允许访问数据库信息

可以为 "all", "sameuser", "samerole", "replication",或者业务数据库名称。"all"并不包括"replication",若需要方通replication需要单独编写放通规则;

多个数据库使用逗号分隔

User : 指定允许用户

表示认证配置的数据库用户信息,可以为"all"也可以指定某个数据库用户,多个用户授权可使用逗号分隔;

可引用外部文件中配置信息信息认证配置,@${filename}

Address : 指定允许主机IP信息

表示认证配置的主机IP信息,可以是一个主机名,也可以是IP+掩码;0.0.0.0/0表示所有主机

Method : 指定认证策略

表示认证策略,可以设置为"trust", "reject", "md5", "password", "scram-sha-256", "gss", "sspi", "ident", "peer", "pam", "ldap", "radius" or "cert";

password表示以明文方式发送密码;

2、postgres.conf

配置参数类别

参数类型

参数类型

internal

内部参数,只读无法修改。postgres程序写死或者是在初始化指定后无法修改的参数

postmaster

修改该类参数需要重启数据库

sighup

不需要重启数据库,重新加载配置文件即可对所有的进程生效

backup

不需要重启数据库,重新加载配置文件后,新的链接可以应用修改后的参数,已存在链接不生效

superuser

必须通过超级用户进行修改

user

普通用户可进行修改

PG数据库所有的参数都在pg_settings表中,具体参数对应什么类别可通过该表进行查询。

连接相关参数

参数

含义

listen_addresses

server端对客户端的Tcp/ip监听地址,默认为"localhost"表示仅允许本地通过嵌套字连接,"*"表示监听所有IP

port

服务器监听TCP端口,默认5432

max_connections

server端允许最大连接数,默认100

superuser_reserved_connections

Server端为超级账号保留的连接数,默认3

unix_socket_directory

Server监听客户端Unix嵌套字目录,默认/tmp

内存相关参数

参数

含义

shared_buffer

共享内存缓存区大小,默认128MB

temp_buffers

每个会话使用的临时缓存区大小,默认8MB

work_mem

内存临时表排序操作或者hash需要使用到的内存缓存大小,默认4MB

maintenance_work_mem

对于维护性操作(vacuum、create index)最大使用内存,默认64M,最小1M。

max_stack_depth

Server端执行堆栈最大安全深度,默认2M,若发现无法执行复杂函数时可适当调整该参数

wal相关参数

参数

含义

wal_level

minimal, replica, or logical

fsync

是否使用fsync()将内存中的脏页刷新到物理磁盘,默认为ON

synchronous_commit

事务提交是否需要等待对应的wal日志刷盘,默认为ON

wal_sync_method

wal日志刷盘方式

full_page_write

在checkpoint之后将第一次发生修改的页面写入到wal日志中,保证数据库奔溃恢复可以wal日志中该保存页面以及wal日志

wal_buffer

wal缓存的大小,默认为-1

错误日志相关参数

参数

含义

logging_collector

是否打开日志

log_rotation_age

超过多少天生产一个新的日志文件

log_rotation_size

超过多少大小生成一个新的日志文件

log_destination

日志目录

log_filename

日志文件名

log_truncate_on_rotation

当日志名已存在时,是否覆盖原文件

4.2.2 日志文件pg_xact //事务提交日志,记录事务提交状态的子目录postgresql-2020-09-10_154100.log //运行日志,打印一些error信息pg_wal //重做日志,wal预写日志文件的子目录4.2.3 其他一些目录文件## $PGDATA下base //默认表空间目录global //共享系统表目录pg_commit_ts //记录事务提交时间的子目录pg_dynshmem //记录使用共享内存文件的子目录pg_logical //包含用于逻辑复制的状态数据的子目录pg_multixact //包含多事务(multi-transaction)状态数据的子目录(用于共享的行锁)pg_notify //包含LISTEN/NOTIFY状态数据的子目录pg_replslot //包含复制槽数据的子目录pg_serial //包含已提交的可序列化事务信息的子目录pg_snapshots //包含导出的快照的子目录pg_stat //包含用于统计子系统的永久文件的子目pg_stat_tmp //包含用于统计信息子系统的临时文件的子目录pg_subtrans //记录事务状态数据的子目录pg_tblspc //指向表空间的符号连接pg_twophase //记录分布式事务状态的子目录PG_VERSION //记录PG版本## 单独的表空间目录下tbs01 //表空间目录4.2.4 关于表空间

在PG数据库中,对于默认使用pg_default表空间的所有数据,都默认存储在$PGDATA下base目录下,对于独立划分出来的表空间,除表空间指定的location外,还需要在$PGDATA下的pg_tblspc进行记录,并利用软连接连接至对应的表空间目录。

所有数据库对象都有各自的oid(object identifiers),oid是一个无符号的四字节整数,相关对象的oid都存放在相关的system catalog表中,比如数据库的oid和表的oid分别存放在pg_database,pg_class表中。

## 表空间目录 /data/pgsql12/tbs01/PG_12_201909212/17096PG_12 表示数据库版本201909212 表示 Catalog 版本16391 表示 该表空间下数据库的oid## 查看数据库Catalog信息$ pg_controldatapg_control version number: 1201Catalog version number: 201909212Database system identifier: 6870373621203487994Database cluster state: in productionpg_control last modified: Thu 10 Sep 2020 09:28:48 PM CST## 查看数据库oidpostgres=# select oid,datname from pg_database; oid | datname-------+----------- 13547 | postgres 16384 | db1 1 | template1 13546 | template0 17096 | db2 //可以看到表空间tbs01其实是被db2使用的(5 rows)

更多技术信息请查看云掣官网

0 阅读:15

云的事随心讲

简介:感谢大家的关注