我已经使用PGpool成功配置了我们的应用程序,我必须说,它非常棒。我试图在我们的应用程序中公开有关PGPool集群的信息,并且我在使用postgres驱动程序对JDBC使用'SHOW'命令时遇到问题。
驱动:
postgresql-9.3-1101-jdbc41.jar
当我尝试执行查询“SHOW pool_nodes”时,我收到此错误:
ERROR: unrecognized configuration parameter "pool_nodes"
我很确定我已经连接到pgpool而不是postgres,因为故障转移效果很好。我的猜测是postgres司机正在进行一些检查。有没有人建议在我的java应用程序中保存这些数据?
答案 0 :(得分: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,则表明主机已关闭。