2017-08-04 55 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组合不会帮助这里

主机名是在连接时

相关问题