Как проверить, если сервер PGSQL еще жив с 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 ответ
Решение
Вы можете вручную выполнить запрос, как
select 1 as is_alive
как ping()
также утверждают, что делают что-то подобное,
Метод ping выдает пустой запрос и проверяет состояние результата.