4

我已经成功地使用 PGpool 配置了我们的应用程序,我必须说,它非常棒。我试图在我们的应用程序中公开有关 PGPool 集群的信息,并且在使用 postgres 驱动程序的 JDBC 上使用“SHOW”命令时遇到问题。

司机:

postgresql-9.3-1101-jdbc41.jar

当我尝试执行查询“SHOW pool_nodes”时,出现以下错误:

ERROR: unrecognized configuration parameter "pool_nodes"

我很确定我连接到 pgpool 而不是 postgres,因为故障转移工作得很好。我的猜测是 postgres 驱动程序正在预先进行一些检查。有没有人建议在我的 java 应用程序中获取这些数据?

4

1 回答 1

0

无法从 show 命令获取结果,所以我使用pgadmin并添加了一些 PHP 代码来获取它。

首先你必须安装 pgadmin 并将 getNodeInfo.php 添加到文件夹中,getNodeInfo.php 代码:

<?php

/**
* The status value can refrence:
* http://www.pgpool.net/docs/latest/en/html/pcp-node-info.html
* 
* Status is represented by a digit from [0 to 3].
* 
* 0 - This state is only used during the initialization. PCP will never display it.
* 
* 1 - Node is up. No connections yet.
* 
* 2 - Node is up. Connections are pooled.
* 
* 3 - Node is down.
*/

require_once('common.php');
require_once('command.php');

$_SESSION[SESSION_LOGIN_USER]          = "your_pgadmin_account";
$_SESSION[SESSION_LOGIN_USER_PASSWORD] = "your_pgadmin_password";

$nodeCount = getNodeCount();

$nodeInfo = array();

for($i = 0;$i < $nodeCount; $i++){
    $nodeInfo[$i] = getNodeInfo($i);
}

echo json_encode($nodeInfo);

exit();


如果你的 pgadmin 可以正常工作,你可以调用http://localhost/getNodeInfo.php来获取喜欢

[
  {
    "hostname": "host1 ip",
    "port": "5432",
    "status": "2",
    "weight": "0.500"
  },
  {
    "hostname": "host2 ip",
    "port": "5432",
    "status": "2",
    "weight": "0.500"
  }
]

如果状态 == 3,则主机已关闭。

于 2019-07-16T05:23:36.693 回答