如何用DBD :: PG检查PGSQL服务器是否还活着?

时间:2014-01-09 10:38:04

标签: perl postgresql dbd-pg

我正在拼命寻找一种简单的方法来定期检查PGSQL服务器是否仍处于perl脚本中。我打算使用pg_ping,但在我的测试中,pg_ping始终返回1,与数据库服务器状态无关。

以下是我尝试过的代码:

#!/usr/bin/perl
use strict;
use warnings;
use DBD::Pg;

my $dbh=DBI->connect("DBI:Pg:dbname=healthcheck;host=vm0484","healthcheck","areyoustillthere");
for (my $i=1;$i<100;$i++) {
print "$i. pg_ping: ".$dbh->pg_ping."\n";
sleep(1);
}

然后我在另一个窗口中使用kill -9手动终止PGSQL服务器,但结果仍然是1。我做错了吗?

如果没有,如果数据库服务器还活着,我该如何最好地检查?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以手动执行类似

的查询
select 1 as is_alive

因为ping()也声称要做类似的事情,

  

ping方法发出一个空查询并检查结果状态。