補充:如何確定psql配置文件的路徑
①切換至psql用戶,此處為thunisoft。
②確定路徑方法很多,此處介紹常用的幾種。
<1>ps –ef |grep base 輸出結果中 –D后幾位數據目錄。
<2>切換中thunisoft用戶后默認在thunisoft的家目錄/home/thunisoft下。使用公司提供的安裝包,自動安裝psql時會在家目錄下自動生成啟動或停止腳本。
使用命令 more startup.sh或stop.sh。就可看到如下內容。其中-D指明了數據目錄。
<3>第三種一步到位的方法:直接使用工具連接數據庫執行。可以看到sourcefile對應了兩個不同的配置文件。分別是postgresql.conf和postgresql.auto.conf,后者優先級更高。在更改配置前需要在數據庫總先確認其對應的配置文件是哪一個。例如我們自動安裝的abase會有postgresql.auto.conf,而max_connections就在此配置。
一:如何使修改的配置項生效?
1、在查看postgresql.conf配置文件可以看到,port配置后有# (change requires restart),代表使用重載配置並不能使配置生效,需要重啟數據庫。
那么是否所有的配置都需要重啟才生效?該如何確定何種操作才能使配置生效?
2、配置如何生效在pg_settings中可以查找,context共有七個不同字段分別如下。
context |
操作 |
backend |
可以在postgresql.conf中對這些設置進行更改,而無需重新啟動服務器。 但新的配置值只會出現在這之后的連接中,在已有的連接中,這些值不會改變。 |
user |
該類參數表示,普通用戶可以通過set命令來更改參數的配置值。 |
internal |
該類參數是內部參數,也就是說,不可以進行修改,除非重新initdb。 |
postmaster |
該類參數更改配置項后,需要重啟PostgreSQL實例才能生效。 |
superuser |
該類參數可以由超級用戶來改變,改變時,只會影響到自身的session,不會影響到其他的用戶。 |
sighup |
在postgresql.conf配置文件中更改這種類型的參數無須重啟實例,只需要向postmaster進程發送一 個SIGHUP信號,讓其重新讀取配置文件即可。postmaster進程收到信號后,也會向其他子進程發送SIGHUP信號, 讓新的參數值在其他子進程中也生效。該類參數區別於backend類參數。 |
superuser-backend |
該類參數可以由超級用戶來改變,可以在postgresql.conf中對這些設置進行更改,而無需 重新啟動服務器。但新的配置值只會出現在這之后的連接中,在已有的連接中,這些值不會改變。 |
補充:
1、sighup即不重啟服務器直接重載配置即可,重載配置的方法如下
①執行命令:pg_ctl reload [-D DATADIRT]
②在數據庫中使用sql:select pg_reload_conf();
2、postmaster。需要重啟數據庫。
例如修改max_connections(最大連接數)