PostgreSQL/配置
主要的配置文件是 postgresql.conf。它根据不同的任务被分成多个部分。第二个重要的配置文件是 pg_hba.conf,其中存储了身份验证定义。
这两个文件都位于特殊目录 $PGDATA(Debian/Ubuntu)或集群主目录(RedHat)中。
一些配置项具有动态特性,可以通过简单的 pg_ctl reload
生效。其他配置项则需要重启实例 pg_ctl restart
。默认配置文件中的注释说明了需要采取哪种操作。
data_directory 的值定义了集群主目录的位置。同样地,hba_file 的值定义了上述 pg_hba.conf 文件(基于主机的身份验证文件)的位置和名称,其中存储了身份验证规则 - 更多详细信息请参见 下面。
在连接部分,您可以定义端口号(默认值:5432),客户端应用程序可以通过该端口号连接到实例。此外,还定义了最大连接数以及 SSL、IP 和 TCP 设置。
资源部分的主要定义是共享缓冲区的尺寸。它决定了在 PostgeSQL 的 RAM 缓冲区中保留多少空间来“镜像”数据文件的内容。预定义的默认值为 128 MB,相对较低。
其次,还定义了工作内存和维护内存。它们决定了排序、创建索引命令等操作使用的 RAM 尺寸。这两个 RAM 区域针对每个连接而存在,并由它们单独使用,而共享缓冲区只针对整个实例存在,并由多个进程并发使用。
此外,还有一些定义涉及 vacuum 和 background writer 进程。
在 WAL 部分,定义了 WAL 机制的行为。
首先,您可以从四种可能性中定义 WAL 级别:minimal、archive、hot_standby 和 logical。根据您要使用的归档或复制类型,WAL 机制将仅向 WAL 文件写入基本信息或包含其他信息。minimal 是基本方法,对于每次崩溃恢复都是必须的。archive 是任何归档操作所必需的,包括 point-in-time-recovery (PITR) 机制。hot_standby 添加了在备用服务器上运行只读查询所需的额外信息。logical 添加了支持逻辑解码所需的信息。
此外,与 WAL 级别 archive 相关联,还有一些定义描述了归档行为。尤其是 'archive_command' 至关重要。它包含一个命令,该命令将 WAL 文件复制到归档位置。
如果您使用复制到不同的服务器,则可以在此部分定义主服务器和备用服务器所需的属性值。主服务器只读取并关注主服务器定义,而备用服务器只关注备用服务器定义(您可以直接从主服务器将此 'postgres.conv' 部分复制到备用服务器)。您必须将 WAL 级别定义为适当的值。
调优部分定义了不同操作的相对成本:顺序磁盘 I/O、随机磁盘 I/O、处理一行、处理一个索引条目、处理一个函数调用或算术运算、每个进程在运行时可用的有效 RAM 页面大小(PostgreSQL + 操作系统)。这些值在查询规划器搜索最佳查询执行计划时使用。从毫秒或 CPU 周期数的角度来看,这些值并非真实值。它们只是查询规划器的一个粗略指南,并且彼此之间是相对的。实际值是在查询执行期间计算的,可能会有很大差异。
还存在一个关于遗传查询优化器成本的子部分,它与标准查询优化器相反,它实现了对最佳计划的启发式搜索。
错误日志记录部分定义了在错误情况下或出于调试目的而报告的日志消息的数量、位置和格式。
在统计信息部分,您可以定义 - 除了其他内容之外 - 解析、规划和执行查询的统计信息收集量。
pg_hba.conf 文件(基于主机的身份验证)包含客户端访问实例的规则。所有不满足这些规则的客户端连接尝试都会被拒绝。这些规则限制了连接类型、客户端 IP 地址、集群中的数据库、用户名和身份验证方法。
主要有两种连接类型:通过套接字的本地连接(local)和通过 TCP/IP(host)的连接。术语 local 指的是客户端程序与实例位于同一台机器上的情况。客户端可以通过使用集群的 TCP/IP 地址语法(例如:'localhost:5432')来覆盖 local 连接并使用 host 连接类型。
客户端 IP 地址是单个 IPv4 或 IPv6 地址,或通过 CIDR 掩码掩盖的网络段。
数据库和客户端用户名必须显式给出,或者可以用关键字 "ALL" 来缩写。
有不同的身份验证方法
- trust:不询问任何密码
- reject:不允许任何访问
- password:询问密码
- md5:与 'password' 相同,但密码传输使用 MD5 加密
- peer:信任客户端,如果他使用的数据库用户名与其操作系统用户名相同(仅适用于本地连接)
由于 pg_hba.conf 记录是按顺序针对每个连接尝试进行检查的,因此记录的顺序很重要。在定义的标准和传入连接请求的属性之间,第一个匹配项命中。