点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!
postgresql.conf文件
Postgresql.conf文件是PostgreSQL数据库的主要配置文件,它用来控制数据库实例的行为和特性,这个文件包括了许多配置选项,比如内存使用限制、连接设置、日志记录规则等。
当我们打开 postgresql.conf 查看内容,会看到非常多的参数。其他大多数被注释了,意味着自动被赋予缺省值。

以下是一些常见的postgresql.conf 配置参数及其说明,以帮助我们了解如何配置 PostgreSQL:
监听地址(listen_addresses)
指定server使用哪个interface(如IPV4、IPV6)进行监听。我们可以设置为 'localhost' 以便仅接受来自本机的连接,也可以设置为*来接受其他所有可用的IP地址上。
端口(port)
PostgreSQL 服务监听的端口,默认是 5432。
最大连接数(max_connections)
参数指定了数据库服务器支持的最大并发连接数,也就是可以同时与数据库建立的最大客户端连接数。每个连接都需要占用一定的系统资源,包括内存、CPU 时间片和其他系统资源。
共享缓冲区(shared_buffers)
用于配置服务器使用的共享内存缓冲区的大小。这些缓冲区用于存储数据页,以便数据库可以更快地访问磁盘上的数据。
自动清理(autovacuum)
清理表中的过期死元组,防止业务表膨胀,更新表的统计信息以供优化器使用。
pg_hba.conf文件
pg_hba.conf是PostgreSQL的客户端认证配置文件,用于控制如何验证用户连接。通过编辑这个文件,我们可以细致地指定哪些用户可以从哪些主机上以何种方式连接到数据库实例中的哪个数据库。

下面是pg_hba.conf中一些常用的认证方法:
trust
允许直接连接而不用进行密码认证,这是最不安全的认证方法,通常仅在非常安全可信的环境中使用,比如仅限本机访问的配置。
reject
拒绝所有连接。
md5
使用MD5加密的密码进行认证。
password
使用明文密码进行认证(不推荐,除非连接是通过SSL加密)。
peer
基于操作系统的用户身份进行认证(仅适用于本地连接)。
ident
使用ident服务器进行认证(适用于TCP/IP连接)。
scram-sha-256
使用SCRAM-SHA-256进行密码认证。这是一种安全的认证方式,推荐使用。
对pg_hba.conf进行的修改在重新加载配置文件或重启数据库服务后立即生效。我们可以通过PostgreSQL的pg_ctl reload命令或SQL命令SELECT pg_reload_conf();来重新加载配置,无需重启数据库服务。
postgresql.auto.cong文件
PostgreSQL在 9.4及以上版本提供了postgresql.auto.conf 配置文件。在PostgreSQL 9.4版本之前,如果需要对PostgreSQL服务的某些功能进行优化、或是调整默认配置参数,则是修改postgresql.conf配置文件,然后重启PostgreSQL(对于大多数配置参数的修改,均需要重启以生效)服务。
但是从PostgreSQL 9.4版本开始,新引入了postgresql.auto.conf配置文件,它作为postgresql.conf文件的补充,在参数配置格式上,它和postgresql.conf保持一致。
该文件保存最新的配置,当数据库服务重启时,postgresql.auto.conf 配置优先。当手动修改 postgresql.conf 文件时,因为当在两个文件中都存在相同参数,前者修改无效。
当执行 ALTER SYSTEM … 命令时,改变会被自动写入 postgresql.auto.conf 文件,而不是 postgresql.conf文件。通过这种方法,即使几个月或几年之后,也能看到参数修改变化。
对于postgresql.auto.conf配置文件,一开始除了两行文本注释说明之外,没有其他的配置参数。如下图所示:

该文件主要用于存储有 ALTER SYSTEM 命令设置的参数值。所以它不需要像postgresql.conf文件一样,每当调整配置参数时,都手动去打开修改、保存。
3.1 ALTER SYSTEM 语句
ALTER SYSTEM语句是PostgreSQL数据库的一个扩展,它用于在PostgreSQL数据库集群中修改服务器的配置参数。然后修改后的参数将保存在postgresql.auto.conf配置文件中。
ALTER SYSTEM的使用格式如下:
ALTER SYSTEM SET configuration_parameter { TO | = } { value | 'value' | DEFAULT }
ALTER SYSTEM RESET configuration_parameter
当使用ALTER SYSTEM语句修改了某配置参数之后,该文件中的这个参数将覆盖掉postgresql.conf文件中的该参数(但是postgresql.conf文件中这个参数值不会被修改,只是对于PostgreSQL服务,postgresql.auto.conf文件中的该参数具有更高的优先级)。
3.2 ALTER SYSTEM 使用方法
1)show命令查看post参数的值

2)执行alter system命令修改该port端口为8888

3)通过pg_settings视图查看端口号

可以看到,端口仍然为5432,我们修改的并没有生效。
4)使用pg_reload_conf()函数来使服务器进程重新装载配置文件

再通过pg_settings视图查看端口号:

可以看到端口号依然没有修改成功,postgresql.conf文件中对端口配置参数有明确指示说明,必须重启生效。
5)重启PostgreSQL服务
然后通过pg_settings查看端口参数情况,看到已经生效。


本文作者:吴 悔(上海新炬中北团队)
本文来源:“IT那活儿”公众号





