對於配置服務器,,太多時候我們在Linux中做的操作是,配置*.conf文件,然后重啟服務。而很多服務都具有reload功能,而但是具體到某個配置,有時候直接說出需不需要重啟服務而使得配置生效,這並不是一件容易的事情。
但是,postgresql卻講這部分能用在數據表中顯式的告訴了我們:
postgres# select name, context from pg_settings;
name | context |
archive_command | sihup |
archive_mode | postmaster |
block_size | internal |
log_connections | backend |
log_min_duration_statement | superuser |
search_patch | user |
-
internal: 編譯期間的設置,只有重新編譯才能生效。
-
postmaster: 只有服務重啟才能生效。
-
sighup: 給服務器發送HUP信號會是服務器重新加載postgresql.conf配置,可以立即生效。
-
backend: 與sighup類似,但是不影響正在運行的會話,只在新會話中生效
-
superuser: 使用superuser(如postgres)才能更改,不用重新加載所有配置即可生效。
-
user: 單個會話用戶可以在任意時間做修改,只會影響該會話。
重新加載數據庫配置的方法有三種:
1. 用超級用戶運行
postgres=# SELECT pg_reload_conf();
2. 用UNIX的kill手動發起HUP信號
$kill -HUP PID
3.使用pg_ctl命令觸發SIGHUP信號
$pg_ctl reload