воскресенье, 24 апреля 2011 г.

Простой скрипт для проверки состояния репликации mysql


#!/usr/local/bin/perl -w
# usage is ./mysql_replication.pl --user user --password password
use strict;
use DBI;
use Getopt::Long;
my $user   = "";
my $password = "";
GetOptions ("user=s" => \$user,
            "password=s"   => \$password );

my $dsn="DBI:mysql:";
my $dbh=DBI->connect($dsn, $user, $password) or die ($!);
my ($sql_running, $io_running);
my $sth=$dbh->prepare("SHOW SLAVE STATUS") or die($!);
my %status = ();
$sth->execute() or die ($!);
while (my $ref = $sth->fetchrow_hashref()) {
    for (keys %{$ref}) {
        $status{$_}=$ref->{$_} || "n/a" if /Slave_IO_Running/;
        $status{$_}=$ref->{$_} || "n/a" if /Slave_SQL_Running/;
        $status{$_}=$ref->{$_} || "n/a" if /Seconds_Behind_Master/;
    }
}
$sth->finish;
$dbh->disconnect();
printf("%s: %s\n", "Slave_IO_Running", $status{"Slave_IO_Running"});
printf("%s: %s\n", "Slave_SQL_Running", $status{"Slave_SQL_Running"});
printf("%s: %s\n", "Seconds_Behind_Master", $status{"Seconds_Behind_Master"});

Комментариев нет:

Отправить комментарий