对于一个数据库服务器,参数配置文件对于数据库的影响是非常巨大的,了解参数配置文件的基本使用是很有必要的。
一、配置文件位置
1:
配置文件名称为postgresql.conf
[postgres@oracle11g data]$ ls -l postgresql*.conf
-rw------- 1 postgres postgres 88 Aug 1 20:44 postgresql.auto.conf
-rw------- 1 postgres postgres 22869 Aug 1 20:44 postgresql.conf
[postgres@oracle11g data]$ pwd
/postgre/pgsql/data
配置文件默认位置为数据目录中(如/postgre/pgsql/data)
2:
配置文件postgresql.auto.conf
[postgres@oracle11g data]$ cat postgresql.auto.conf
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
它具有和postgresql.conf相同的格式(不应该被手动编辑),这个文件保存了通过alter system命令提供的设置。
每当postgresql.conf被读 取时这个文件会被自动读取,并且它的设置会以同样的方式生效。 postgresql.auto.conf中的设置会覆盖postgresql.conf 中的设置。
二、通过sql影响参数
alter system改变全局默认值,功效上等同于修改postgresql.conf
alter database命令允许针对一个数据库覆盖其全局设置.
ALTER ROLE命令允许用用户指定的值来覆盖全局设置和数据库设置.
只有当开始一个新的数据库会话时,用ALTER DATABASE和 ALTER ROLE设置的值才会被应用。它们会覆盖从配置文件或服务器命令行 获得的值,并且作为该会话后续的默认值.
三、命令
SHOW命令允许察看所有参数的当前值。对应的函数是 current_setting(setting_name text);
show ssl; 等同于select current_setting('ssl');
[postgres@oracle11g data]$ psql
psql (10.9)
Type "help" for help.
postgres=# show ssl
postgres-# ;
ssl
-----
off
(1 row)
postgres=# select current_setting('ssl');
current_setting
-----------------
off
(1 row)
SET命令允许修改对于一个会话可以本地设置的参数的当前值, 它对其他会话没有影响。对应的函数是 set_config(setting_name, new_value, is_local);
也可以通过查看视图进行查看:
select * from pg_catalog.pg_settings;
postgres=# select * from pg_catalog.pg_settings where name='ssl';
name | setting | unit | category | short_desc | extra_desc | context | vartype | source |
min_val | max_val | enumvals | boot_val | reset_val | sourcefile | sourceline | pending_restart
------+---------+------+--------------------------------------------------------------+--------------------------+------------+---------+---------+---------+
---------+---------+----------+----------+-----------+------------+------------+-----------------
ssl | off | | Connections and Authentication / Security and Authentication | Enables SSL connections. | | sighup | bool | default |
| | | off | off | | | f
(1 row)
set命令:set ssh off;(等效于update pg_catalog.pg_setting set setting='off' where name='ssl';)
四、shell修改
1,服务器启动期间
postgres -c log_connection=yes -c ssl=on
这种方式提供的设置会覆盖通过postgresql.conf或者 ALTER SYSTEM提供的设置,因此除了重启服务器之外无法从全局上改变它们。
2:
libpq启动一个客户端会话时,可以使用PGOPTIONS 环境变量指定参数设置。这种方式建立的设置构成了会话生存期间的默认值,但是不会影响 其他的会话。
env PGOPTIONS="-c ssl=off -c statement_timeout=5min" psql
五、管理配置文件
1:
分解配置文件方式1:
include 'filename'
[postgres@oracle11g data]$ ls
buffer.conf client.conf shared.conf
可以通过包含多个文件的方式,各个文件分别配置不同的参数,便于管理。
2:
分解配置文件方式2:
include_dir 'directory'
注意:配置文件中,末尾的配置文件参数会覆盖前面的配置文件参数。对于目录配置,读取配置文件顺序以参数文件字母顺序为主。
欢迎大家关注以下公众号进行数据库方面知识探讨: