我正在使用pgAdmin III从客户端管理我的数据库。我有一个在流复制模式下运行的master和slave postgreSQL。在他们面前还有另一个pgpool服务器来进行连接池和负载平衡。
当我将pgAdmin连接到pgpool时,我得到了:
Error connecting to the server: ERROR: unable to read message kind
DETAIL: kind does not match between master(52) slot[1] (45)
我之前连接它没有问题,但不知何故pgpool死了,我重新启动它,然后这个错误突然出现在那里。
pgpool和postgreSQL服务器运行良好。我可以使用psql -h hostname database user
访问它们。应用服务器也可以连接到它,并且Web应用程序通常正在运行。我无法从pgAdmin访问它。
答案 0 :(得分:0)
http://www.sraoss.jp/pipermail/pgpool-general/2012-March/000297.html
简而言之:在postgres群集中超出max_connections
。
我假设发生了什么 - 你重新启动了pgpool并且它打开了与postgres的新连接,而旧的连接则留在idle
或idle in transaction
(取决于超时)。因此,在重新启动pgpool后,它消耗了双倍of num_init_children
并达到了实际允许的maximum。
杀死旧的(重启之前)pgpool连接应该修复它。尝试在postgres上运行pg_terminate_backend(pid)
以执行此操作。还要小心杀死正确的连接。至少检查
select pid,query, client_address
from pg_stat_activity where now()-query_start > '1 day'::interval
或类似只捕捉僵尸