HGDB更改参数确认是否需要重启

在文件中更改配置后,通过重新载入该配置文件可以使参数生效;重新加载可以使用如下命令:
$ pg_ctl reload
或者在psql中执行:
select pg_reload_conf();


通过查询pg_settings,可以了解使参数更改生效是否需要服务器重启:
highgo=# select distinct context from pg_settings;
  context   
------------
 backend
 user
 internal
 postmaster
 superuser
 sighup
(6 rows)

如果context提到了postmaster,那么集群的重启就是需要的;然而如果contexxt包括singup,重新加载pg_ctl即可。例如:
highgo=# select name,context from pg_settings where name in ('archive_command','port');
      name       |  context   
-----------------+------------
 archive_command | sighup
 port            | postmaster
(2 rows)

检查配置文件位置:
highgo=# show config_file;
                 config_file                  
----------------------------------------------
 /hgdata/highgo/HighGoDB/data/postgresql.conf
(1 row)

在某些情况下,设置了一个无效的参数值,postgresql会忽略合格值并继续使用默认值。
postgresql没有自带的验证器。我们必须检查并确保新值已生效。
使用数据库超级用户alter system set 参数=参数值;的方式修改参数后,新的参数(值)记录到postgresql.auto.conf中。
postgresql.conf---- postgresql.auto.conf
PG中没有scope的关键字,并且也没有提示生效的时候,这是不够人性化的地方。
但是只要是需要下次重启生效的,都会写入到auto文件
如果postgresql.conf和postgresql.auto.conf中都有同一参数,但参数值不同,则psotgresql.auto.conf中的参数值时生效;如若修改,也应该修改psotgresql.auto.conf中的参数。

如果postgresql.conf和postgresql.auto.conf中都有同一参数,更改postgresql.conf后重启或者reload不会生效。


各参数含义:
internal;这些参数是只读参数,其中有些参数是postgres程序写死的,或者是用一些不同的编辑选项确定的;有些参数是数据库实例初始化时就确定了的,比如创建实例时在运行initdb,可以使用一些命令行参数选项来确定相应参数的值,比如,可以在initdb中使用-k把参数“data_checksums”初始化为“on”,但之后就不能再改变此参数值了。这些参数 值不能配置在postgresql.conf中,因为它们是由postgres程序和在初始化实例时写死的。

postmaster:改变这些参数值需要重启postgresql实例。在postgresql.conf中改变这些参数后,需要重启数据库实例才能生效。

singup:在postgresql.conf中改变这些参数后,不需要重启数据库实例,只需要向postmaster进程发送SINGUP信号,让其重启装载配置新的参数值就可以了。postmaster进程接收到SINGUP信号后,也会向它的子进程发送SINGUP信号,让新的参数值在所有的进程中都生效。

backend:在postgresql.conf中更改这些设置无需重启数据库服务,只需要向postmaster进程发送SINGUP信号,让其重启装载配置新的参数值就可以了。但新的配置值只会出现在这之后的新的连接中,在已有的连接中,这些参数的值不会改变。这个参数的值也可以在新建连接时,由连接的一些参数改变。例如,通过libpq的PGOPTIONS环境变量就可以改变本连接的配置值。
superuser;这类参数可以由超级用户使用set来改变,比如检测死锁超时时间的参数“deadlock_timeout”。而超级用户改变此参数值时,只会影响自身的session配置,不会影响其他用户。向postmaster进程发送SINGUP信号,也只会影响后续建的连接,不会影响现有的连接。

user:普通用户可以使用set命令通过此参数来改变本链接中配置值。除了普通用户都可以改变外,这类参数与superuser类参数没有区别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值