pg_reload 如何使用以及注意事項。
阿新 • • 發佈:2019-01-09
不同作業系統平臺,pg_reload的用法:
UBUNTU/DEBIAN pg_ctlcluster 9.0 main reload
RED HAT/FEDORA service postgresql reload
pg_ctl -D /var/lib/pgsql/data reload
SOLARIS pg_ctl -D /var/lib/pgsql/data reload
MAC OS pg_ctl -D /var/lib/pgsql/data reload
FREEBSD pg_ctl -D /var/lib/pgsql/data reload
我們知道,一些引數(其實是看pg_settings 的context欄位),是可以不用重啟postgres cluster 就可以生效的,
如,使用如下命令:
1.作業系統命令列: pg_ctl reload (配置環境變數後)
或者
2.
postgres=# select pg_reload_conf();
pg_reload_conf
----------------
t
(1 row)
究其根本,其實是先給 postmaster 傳送了 signal 訊號,然後該訊號被傳遞給所有的 bakend server process。
當然,也可以通過:
3.
kill -SIGHUP pid
甚至給專門的一個backend process 傳送訊號,不過慎用,不建議在生產庫上做這個操作。
舉例:
1.修改hba檔案
原檔案:
# "local" is for Unix domain socket connections only
local all all trust
...
這時候有兩個session,session1連線的postgres庫,session2連線的benchmarksql庫。
開始修改pg_hba.conf檔案
修改後只能連線postgres庫:
# "local" is for Unix domain socket connections only
local postgres all trust
...
進行pg_reload
這時候session1,進行 \c benmarksql 操作會報錯:
psql: FATAL: no pg_hba.conf entry for host "[local]", user "postgres", database "benchmarksql"
session2 已經連線到benchmarksql庫,儘管已經通過pg_reload 過載了資料庫所有配置檔案,
但是並不影響session2在benchmarksql庫的所有操作,因為提前連上了嘛-
更多關於pg_reload:
By 獅子歌歌