2017-08-04 56 views
2

有沒有辦法讓pgbouncer強制重新讀取/etc/hosts文件而不重啓?我已將一臺新服務器添加到/etc/hosts,並且我希望pgbouncer能夠以最少的麻煩連接到新服務器。pgbouncer可以在不重啓的情況下重新讀取/ etc/hosts文件

我知道發出RELOAD;命令會強制重新讀取配置文件,但看起來這不適用於/etc/hosts。同時運行命令SHOW DNS_HOSTS(配置更改後和/etc/hosts)新增主機名值會出現,但addrs值留空。

pgbouncer版本:1.7.2在Ubuntu 14.04運行

+0

我想重裝應該讀取/ etc/hosts中解決。如果'dns_max_ttl'沒有設置太長的值,它應該重新讀取它自己...'SHOW DNS_HOSTS'讀取dns緩存 - 如果addrs爲空,那麼'/ etc/hosts'中的值可能不正確? –

+0

@VaoTsun'/ etc/hosts'中的條目是有效的,因爲我可以使用主機名將'ssh' /'psql'放入它中。在我的情況下,'dns_max_ttl'被設置爲默認的15秒。 – GregD

+0

'主機名在連接時解析,結果是根據dns_max_ttl參數緩存的。'您是否嘗試連接到該主機名上的數據庫?.. –

回答

1

請不要看這是爲使用的指令。這是更大專院校興趣 - 你需要怎樣做才能使pgbouncer 1.7重讀/etc/hosts無需重啓:

第一演示:

pgbouncer=# show dns_hosts; 
hostname | ttl | addrs 
----------+-----+------------- 
one  | 6 | 127.0.0.3:0 
(1 row) 

pgbouncer=# \! sudo sed -i 's/127.0.0.3/127.0.0.2/' /etc/hosts 
pgbouncer=# pause test; 
PAUSE 
pgbouncer=# kill test; 
KILL 
pgbouncer=# resume test; 
RESUME 
pgbouncer=# \! psql -p 6432 -h 127.0.0.1 -U vao -d test -c "\! tail -1 /etc/hosts" 
Password for user vao: 
127.0.0.2 one 
pgbouncer=# show dns_hosts; 
hostname | ttl | addrs 
----------+-----+------------- 
one  | 7 | 127.0.0.2:0 
(1 row) 

pgbouncer=# \! sudo sed -i 's/127.0.0.2/127.0.0.12/' /etc/hosts 
pgbouncer=# pause test; 
PAUSE 
pgbouncer=# kill test; 
KILL 
pgbouncer=# resume test; 
RESUME 
pgbouncer=# \! psql -p 6432 -h 127.0.0.1 -U vao -d test -c "\! tail -1 /etc/hosts" 
Password for user vao: 
127.0.0.12 one 
pgbouncer=# show dns_hosts; 
hostname | ttl | addrs 
----------+-----+-------------- 
one  | 10 | 127.0.0.12:0 
(1 row) 

現在爲什麼: RELOAD重讀配置,從而不會在這裏幫助。 dns_max_ttl控制drou返回的幾個自己之間的roundroubin,因此不會在這裏玩。回顧

主機名是在連接時間分辨

我做一個假設,爲了重新發起連接,我需要放棄現有的連接(這樣的連接不會被從庫中取出) - 兩路來這樣做 - 重新啓動pgbouncer或KILL db - 將影響從pgbouncer.ini [databases]部分中分離出來只有一個分區。所以我添加

test = host=one port=5432 dbname=t 

它和

127.0.0.3 one 

/etc/hosts。其餘的在演示。

我會將此答案解釋爲作弊 - 我不重新啓動pgbouncer,但所有現有連接都需要刪除。 (當然,我們不影響其他數據庫客戶端連接,但仍然)。所以答案就是 - 是的,你可以在不重新啓動的情況下做到這一點,但是與該數據庫的所有連接都將被刪除,因此如果不刪除已更改的主機的現有連接,則無法執行此操作。只是PAUSE + RESUME組合不會幫助這裏

主機名是在連接時

相關問題