postgresql關於postgresql.auto.conf和postgresql.conf的區別

lusklusklusk發表於2020-01-09

postgresql.auto.conf的優先順序高於postgresql.conf,如果一個引數同時存在postgresql.auto.conf和postgresql.conf裡面,系統會先讀postgresql.auto.conf的引數配置。使用alter system set修改的是postgresql.auto.conf檔案的內容,postgresql.conf則是透過文字編輯方式修改。比如執行alter system set max_wal_size=default將引數設回 default 時,postgresql.auto.conf檔案裡的max_wal_size這項配置會被刪除,重新用回postgresql.conf檔案的設定。

postgresql.conf檔案的引數後面有# (change requires restart),表示必須重啟才能生效,使用select pg_reload_conf()或pg_ctl reload不行。



執行alter system set max_wal_size=2500;
發現修改的是postgresql.auto.conf檔案
執行select pg_reload_conf();同樣的引數,優先載入的是postgresql.auto.conf檔案裡面的引數配置
重啟postgresql後,同樣的引數,優先使用的postgresql.auto.conf檔案裡面的引數配置
手工修改postgresql.auto.conf檔案,執行select pg_reload_conf()會載入postgresql.auto.conf檔案
手工修改postgresql.auto.conf檔案,重啟postgresql會載入postgresql.auto.conf檔案



案例1
執行select pg_reload_conf();同樣的引數,優先載入的是postgresql.auto.conf檔案的配置

-bash-4.2$ cat /pgdata/postgresql.conf |grep max_wal_size
max_wal_size = 2GB
-bash-4.2$ vi /pgdata/postgresql.auto.conf
max_wal_size = '2700'

-bash-4.2$ psql
postgres=# show max_wal_size;
 max_wal_size
--------------
 3000MB
(1 row)

postgres=# select pg_reload_conf();
 pg_reload_conf
----------------
 t
(1 row)

postgres=# show max_wal_size;
 max_wal_size
--------------
 2700MB
(1 row)



案例2
重啟postgresql,同樣的引數,優先載入的是postgresql.auto.conf檔案的配置
-bash-4.2$ cat /pgdata/postgresql.conf |grep max_wal_size
max_wal_size = 2GB
-bash-4.2$ vi /pgdata/postgresql.auto.conf
max_wal_size = '5200'

-bash-4.2$ psql
postgres=# show max_wal_size;
 max_wal_size
--------------
 2700MB
(1 row)

-bash-4.2$ pg_ctl restart -D /pgdata/
-bash-4.2$ psql
psql (11.3)
Type "help" for help.

postgres=# show max_wal_size;
 max_wal_size
--------------
 5200MB
(1 row)




案例3
將引數值修改為default,則會清除/pgdata/postgresql.auto.conf中配置,重新載入時會使使用postgresql.conf 配置
-bash-4.2$ cat /pgdata/postgresql.conf |grep max_wal_size
max_wal_size = 2GB
-bash-4.2$ vi /pgdata/postgresql.auto.conf
max_wal_size = '5200'

-bash-4.2$ psql
postgres=# show max_wal_size;
 max_wal_size
--------------
 5200MB
postgres=# alter system set max_wal_size=default;
ALTER SYSTEM
postgres=# show max_wal_size;
 max_wal_size
--------------
 5200MB

postgres=# select pg_reload_conf();
 pg_reload_conf
----------------
 t

postgres=# show max_wal_size;
 max_wal_size
--------------
 2GB

-bash-4.2$ cat /pgdata/postgresql.conf |grep max_wal_size
max_wal_size = 2GB
-bash-4.2$ cat /pgdata/postgresql.auto.conf |grep max_wal_size
-bash-4.2

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2672741/,如需轉載,請註明出處,否則將追究法律責任。

相關文章