- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
pgbouncer
有没有办法在不重启的情况下强制重新读取 /etc/hosts
文件?我已经向 /etc/hosts
添加了一个新服务器,我希望 pgbouncer
能够以最少的麻烦连接到新服务器。
我知道发出 RELOAD;
命令会强制重新读取配置文件,但似乎这不适用于 /etc/hosts
。同时运行命令 SHOW DNS_HOSTS
(在更改配置和 /etc/hosts
之后)新的 hostname 值会出现,但是 addrs 值留空。
pgbouncer
版本:1.7.2 运行于 Ubuntu 14.04
最佳答案
请不要将此视为使用说明。这是更学术的兴趣——你需要做些什么来使 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
控制dns返回的几个reselves之间的roundroubin,这里就不玩了。记忆
Hostnames are resolved on connect time
我假设为了重新启动连接我需要删除现有连接(这样连接就不会从池中获取) - 两种方法 - 重启 pgbouncer 或 KILL db
- 从 pgbouncer.ini [databases]
部分将影响隔离到只有一个数据库。所以我加了
test = host=one port=5432 dbname=t
对它和
127.0.0.3 one
到 /etc/hosts
。其余部分在演示中。
我会把这个答案解释为作弊——我没有重新启动 pgbouncer,但是所有现有的到想要的数据库的连接都需要被删除。 (当然我们不会影响连接的其他数据库客户端,但仍然如此)。所以答案是 - 是的,您可以在不重新启动的情况下执行此操作,但是与该数据库的所有连接都将被删除,因此您不能在不删除与已更改主机的现有连接的情况下执行此操作。只是 PAUSE + RESUME
组合在这里无济于事,因为
Hostnames are resolved on connect time
关于linux - pgbouncer是否可以在不重启的情况下重新读取/etc/hosts文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45499817/
尝试在亚马逊上安装 pgbouncer 遇到了这个: [root@somehost ~]# uname -a Linux somehost 4.4.35-33.55.amzn1.x86_64 #1 S
文档将 avg_wait_time 描述为: Time spent by clients waiting for a server in microseconds (average per secon
我在 6432 端口上运行我的 postgres-9.2,在 5432 端口上运行 pgbouncer。我同事的客户端机器很少有服务器机器上 5432 端口的防火墙连接权限。但作为数据库管理员,我想限
我最近为连接池设置了 pgbouncer。我的 pgbouncer.ini 文件包含 [databases] mydb = host=localhost port=5432 user=user dbn
我尝试使用 pgBouncer 来消除短暂的网络断开连接。我做了一个测试,我有 Clinet->pgBouncer->Postgresql。当从客户端建立连接时,我断开网络电缆,如果我比 ~15 秒更
我在 pgBouncer 中设置了这个限制 max_client_conn = 2000 default_pool_size = 40 当我在 phpPgAdmin 中执行此 SQL 时,只出现 2
我在 php 中使用了 PostgreSQL。一段时间后,客户端连接变大,所以我尝试使用 pgbouncer 设置最大连接等。我的数据库端口是 5432,我所有的 php 使用该端口连接到我的数据库。
我们正在考虑在我们的项目中使用 pgbouncer,其中包括动态数据库创建(即添加的每个租户 - 创建一个新数据库) 据我了解,pgbouncer 采用映射数据库的配置文件。 问题是 - 有没有办法在
我需要配置我的 pgbouncer 以处理超过 2000 个客户端连接,我正在阅读一些关于如何使用最大连接数的信息,然后我明白了我必须做什么 max_client_con = 2000在 pgbo
我在 5432 上运行 Postgres 数据库,在 6432 上运行 pgBouncer。 我所有的脚本都指向 6432,但我们有一个指向 5432 的大型遗留代码库,我们也希望它有用户 pgBou
我正在使用 pgbouncer-rr 在 redshift 集群中进行查询重写(pgbouncer 调用 rewrite_query.py 进行重写,这里是有关此项目的更多信息的链接 - https:
我正在尝试尽可能多地了解特定类型的更新查询来自哪个主机。 我的数据库是 PostgreSQL 9.0.23,本地运行 pgbouncer 用于连接池。池化类型为交易池。 数据库中保存来自 pg_sta
我在网络应用程序上使用 pgbouncer,大多数线程以 BEGIN 开始,以 COMMIT 或 ROLLBACK 结束,所以我们使用事务池,一切都很好。 但是,我们也有一些不使用事务的进程:相反,它
我已经设置了 PGBouncer 并将其配置为连接到我的 postgres 数据库,并且一切正常,但我不确定它是否真的有效。 我有一个 php 脚本作为守护进程运行并获取 beantalk 作业。问题
根据 https://pgbouncer.github.io/usage.html运行 KILL db; 应该立即断开给定数据库上的所有客户端和服务器连接。我试图使用 在我的测试环境中停止所有与 po
我在 Django 中使用 pgbouncer。我已经将 test_foo 数据库添加到它的配置中以便能够运行测试,因为显然 Django 不能为测试数据库使用不同的端口。现在测试运行但最后,当 Dj
我在事务模式下使用 pgbouncer 并试图允许接近 500 个事件事务。目的只是对设置进行压力测试 当前设置:[ 'n' 个客户 --->1 个 pgbouncer ----> 1 个 postg
我很难找到关于使用 pgbouncer 进行事务池与 session 池的优点/缺点的良好总结。 这是否意味着事务繁重的工作负载在某种程度上可以更好地实现负载平衡?是为了防止从 pgbouncer 连
我正在尝试使用 pgbouncer 1.7.2 为 Windows 10 上的 PostgreSQL 9.6 设置连接池。 尝试在 cmd 中连接到 pgbouncer psql -p 643
技术细节 转到版本 1.2 go bmizerany/pq 的 postrgres 库 这个问题让我很生气,我希望有人能够提供帮助。 我在 golang 中开发了一个应用程序来从 postgres 数
我是一名优秀的程序员,十分优秀!