請不要看這是爲使用的指令。這是更大專院校興趣 - 你需要怎樣做才能使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
組合不會幫助這裏
主機名是在連接時
我想重裝應該讀取/ etc/hosts中解決。如果'dns_max_ttl'沒有設置太長的值,它應該重新讀取它自己...'SHOW DNS_HOSTS'讀取dns緩存 - 如果addrs爲空,那麼'/ etc/hosts'中的值可能不正確? –
@VaoTsun'/ etc/hosts'中的條目是有效的,因爲我可以使用主機名將'ssh' /'psql'放入它中。在我的情況下,'dns_max_ttl'被設置爲默認的15秒。 – GregD
'主機名在連接時解析,結果是根據dns_max_ttl參數緩存的。'您是否嘗試連接到該主機名上的數據庫?.. –