参数文件
postgresql.conf
文件的作用主要是控制数据库的通用信息,位于$PGDATA目录下,文件中参数生效的优先级是从后到前。
此外PostgreSQL9.6之后支持了alter system来修改配置参数,修改后的参数会保存在
$PGDATA/postgresql.auto.conf下,$PGDATA/postgresql.auto.conf文件是Postgresql.conf的辅
助配置文件,一般不会手动修改,该参数文件会覆盖postgresql.conf文件中相同的参数,参数修改后需要重启或者重载,可以reload或者 restart来使之生效。
listen_addresses = 'localhost'
它指定数据库用来监听客户端连接的TCP/IP地址。默认是值是localhost,表示数据库只能接受本地的客户端连接请求,不能接受远程的客户端连接请求。如果被设成*,表示数据库在启动以后将在运行数据的器上的所有的IP地址上监听用户请求。可以写成主机名,也 可以写成IP地址,不同的值用逗号分开,例如,’PCA001’, ’192.168.10.188, 192.168.10.119’
port (integer)
它指定数据库监听户端连接的TCP端口。默认值是5432。
max_connections (integer)
它决定数据库可以同时建立的最大的客户端连接的数目。默认值是100。
superuser_reserved_connections (integer)
它表示预留给超级用户的数据库连接数目。它的值必须小于max_connections。 普通用户可以在数据库中建立的最大的并发连接的数目是max_connections- superuser_reserved_connections, 默认值是3。
wal_level = replica # minimal, replica, or logical
wal 日志等级。
minimal 仅包含数据库恢复必需的最小信息。
replica 除了包含 minimal 级别的所有信息外,还会包含用于复制的额外信息。
logical在 replica 级别的基础上,还会包含更多信息,例如事务 ID、完整的行数据(包括被更新的旧值和新值),以及支持发布 - 订阅模式所需的元数据
archive_mode = off | on
默认值是off。它决定数据库是否打开归档模式
archive_command = ''
该参数值是一个 shell 命令,用设定存放归档事务日志文件的目录,可以按天进行存储,也可以直接放到一个目录里。
log_directory = 'log'
这个参数在postgresql.conf文件中被设置。它决定存放数据库运行日志文件的目录。默认
值是log。可以是绝对路径,也可是相对路径(相对于数据库文件所在的路径)。
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
决定数据库运行日志文件的名称。默认值是postgresql-%Y-%m-%d_%H%M%S.log。它的
值可以包含%Y、%m、%d、%H、%M和%S这样的字符串,分别表示年、月、日、小时、分和
秒。 如果参数的值中没有指定时间信息(没有出现%Y、%m、%d、%H、%M和%S中的任何
一个),系统会自动在log_filename值的末尾加上文件创建的时间作为文件名
synchronous_commit = on # off, local, remote_write, remote_apply, or replica
用于控制事务提交时的同步级别,直接影响数据安全性和性能。
当 synchronous_commit 设置为on时,事务提交时,WAL 日志必须写入磁盘并刷新缓存,确保奔溃后数据不丢失。安全性最高。
当设置为 off 时,事务提交时,WAL 日志仅写入操作系统缓存,不强制刷盘。安全性最低
如何查看参数
查询pg_settings系统表:SELECT name,setting FROM pg_settings where name ~ ‘xxx’;
SELECT current_setting('work_mem');
通过show (show all)命令查看
使参数生效的常用方法
SELECT pg_reload_conf();
pg_ctl -D $PGDATA reload
pg_hba.conf
决定 哪些主机可以连接数据库实例,客户端使用什么连接方式和认证方式
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
host all all 0.0.0.0/0 md5
一共是有五部分组成连接方式,访问那个数据库,用户名,访问访问(IP),认证方式,其中比较重要的时连接方式和认证方式,我们着重讲一下。
连接方式(TYPE):local,host,hostssl,hostnossl
local匹配使用Unix域套接字的连接,如果没有TYPE为local的条目则不允许通过Unix域套接字连接
host匹配使用TCP/IP建立的连接,同时匹配SSL和非SSL连接缺省安装只监听本地环回地址localhost的连接,不允许使用TCP/IP远程连接,启用远程连接需要修改postgresql.conf中的listen_addresses参数。
hostssl匹配必须是使用SSL的TCP/IP连接客户端和服务器端都安装OpenSSL编译PostgreSQL的时候指定configure参数--with-openssl打开SSL支持在postgresql.conf中配置ssl = on
hostnossl只匹配使用非SSL的TCP/IP连接
认证方式:trust, reject, md5, password, scram, gss, sspi, ident, peer, pam, ldap, radius or cert
trust无条件地允许连接。这种方法允许任何可以与PostgreSQL数据库服务器连接的用户以他们期望的任意PostgreSQL数据库用户身份登入,而不需要口令或者其他任何认证。
reject无条件拒绝连接。常用于从一个组中“过滤出”特定主机,例如一个reject行可以阻塞一个特定的主机连接,而后面一行允许一个特定网络中的其余主机进行连。
md5md5认证方式为双重md5加密
password口令认证,password指明文密码,所以不能在非信任网络使用password方式
peer从操作系统获得客户端的操作系统用户,并且检查它是否匹配被请求的数据库用户名。这只对本地连接可用。
pg_ident.conf
用户映射配置文件,控制PostgreSQL用户名映射。它映射外部用户名转换为相应的PostgreSQL用户名。结合pg_hba.conf中,method为ident可以用特定的操作系统用户和指定的数据库用户登录数据库。
评论