通过配置文件
postgresql配置文件在$PGDATA 数据目录下的postgresql.conf中
主服务进程接收到SIGHUP信号后会重新读取配置文件。可以通过命令pg_ctl reload 或者 SQL pg_reload_conf()触发信息。 主服务进程会广播信号给所有当前运行的服务进程中。所以存在的会话也会采用新的值。
打开postgresql.conf修改配置min_wal_size = 100MB
并执行如下命令
zhangliang[postgres@localhost /usr/local/pgsql/data]$ pg_ctl reload
server signaled
2023-04-17 16:42:19.875 CST [112069] LOG: received SIGHUP, reloading configuration files
zhangliang[postgres@localhost /usr/local/pgsql/data]$ 2023-04-17 16:42:19.876 CST [112069] LOG: parameter "min_wal_size" changed to "100MB"
在psql查看生效情况
postgres=# show min_wal_size;
min_wal_size
--------------
100MB
(1 row)
通过SQL命令
PostgreSQL提供了三个命令修改配置,新会话生效
- ALTER SYSTEM 系统级别 eg:
alter system set work_mem='8MB';
- ALTER DATABASE 数据库级别 eg:
alter database <数据库名> set work_mem='16MB';
- ALTER ROLE 用户级别 eg:
alter role <用户名> set work_mem='8MB';
查看配置SQL命令
show 参数名
可以检查当前参数值select * from current_setting('参数名');
select * from pg_settings
修改配置SQL命令
set 参数名=参数值
update pg_settings set setting=<参数值> where name = '<参数名>'
通过shell命令
-
数据库启动时通过-c命令 ,如下:
postgres -c log_connections=yes -c log_destination='syslog'
, 优先级高于postgresql.conf 和 ALTER SYSTEM -
psql链接时通过PGOPTIONS指定,如下:
env PGOPTIONS="-c geqo=off -c statement_timeout=5min" psql
文件相关变量说明:
- data_directory 数据文件目录
- config_file 服务配置文件
- hba_file 主机认证文件
- ident_file 用户名映射配置文件
postgres=# show data_directory;
data_directory
-----------------------
/usr/local/pgsql/data
(1 row)
postgres=# show config_file;
config_file
---------------------------------------
/usr/local/pgsql/data/postgresql.conf
(1 row)
postgres=# show hba_file;
hba_file
-----------------------------------
/usr/local/pgsql/data/pg_hba.conf
(1 row)
postgres=# show ident_file;
ident_file
-------------------------------------
/usr/local/pgsql/data/pg_ident.conf
(1 row)