<?xml version="1.0" encoding="windows-1251"?>
<rss version="0.92">
<channel>
<title>Ruslan Bondar Site - RuslanBondar/projects/scripts/mysqlslave</title>
<link>http://rus.leaping.net/RuslanBondar/projects/scripts/mysqlslave</link>
<description>History/revisions of Ruslan Bondar Site/RuslanBondar/projects/scripts/mysqlslave</description>
<language>en-us</language>
<item>
<title>2010-03-09 17:58:09</title>
<link>http://rus.leaping.net/Ruslan_Bondar/projects/scripts/mysqlslave/show?time=2010-03-09+17%3A58%3A09</link>
<description>&lt;a name="h360-1">&lt;/a>&lt;h1>Mysql  Replication Slave Cheacker&lt;/h1>
&lt;br />&lt;a name="p360-1">&lt;/a>&lt;p class="auto" id="p360-1">
&lt;span class="mark">Attension This Script modify /etc/hosts&lt;/span>&lt;br />
&lt;span class="mark">Remember to&amp;nbsp;make backup of&amp;nbsp;/etc/hosts before run&lt;/span>&lt;br />
&lt;span class="mark">Use it&amp;nbsp;on you&amp;nbsp;own risk&lt;/span>&lt;/p>&lt;br />&lt;a name="p360-2">&lt;/a>&lt;p class="auto" id="p360-2">
1. All&amp;nbsp;slave must be&amp;nbsp;marked by&amp;nbsp;add at&amp;nbsp;the end&amp;nbsp;of&amp;nbsp;slave line in&amp;nbsp;/etc/hosts ##SLAVE&lt;br />
2. Move master host after slave hosts in&amp;nbsp;/etc/hosts&lt;br />
3. Add&amp;nbsp;slave host to&amp;nbsp;master host line in&amp;nbsp;/etc/hosts&lt;/p>&lt;br />&lt;a name="p360-3">&lt;/a>&lt;p class="auto" id="p360-3">
Example&lt;/p>&lt;br />&lt;a name="p360-4">&lt;/a>&lt;p class="auto" id="p360-4">
&lt;em>1.2.3.4    slave ##SLAVE&lt;/em>&lt;br />
&lt;em>1.2.3.5    master slave&lt;/em> &lt;/p>&lt;br />&lt;a name="p360-5">&lt;/a>&lt;p class="auto" id="p360-5">
ping slave get&amp;nbsp;1.2.3.4&lt;br />
if&amp;nbsp;slave .4 down script will add&amp;nbsp;coment line lik&amp;nbsp;this:&lt;/p>&lt;br />&lt;a name="p360-6">&lt;/a>&lt;p class="auto" id="p360-6">
&lt;em>#1.2.3.4    slave ##SLAVE&lt;/em>&lt;br />
&lt;em>1.2.3.5    master slave &lt;/em>&lt;/p>&lt;br />&lt;a name="p360-7">&lt;/a>&lt;p class="auto" id="p360-7">
and&amp;nbsp;ping slave get&amp;nbsp;1.2.3.5&lt;/p>&lt;br />&lt;a name="p360-8">&lt;/a>&lt;p class="auto" id="p360-8">
 &lt;!--notypo-->&lt;/p>&lt;div class="code">&lt;pre>&lt;font color="#000080">#!&lt;/font>/usr/bin/perl -w
use strict;
use DBI;

my &lt;font color="#000080">$user&lt;/font> = 'root';
my &lt;font color="#000080">$pass&lt;/font> = '*****';
my &lt;font color="#000080">$error&lt;/font> = 'none';

sub check_slave {
    my &lt;font color="#000080">$dbh&lt;/font> = DBI->connect(&lt;font color="#000000">"dbi:mysql:host="&lt;/font>.shift, &lt;font color="#000080">$user&lt;/font>, &lt;font color="#000080">$pass&lt;/font>) or &lt;b>&lt;font color="#0000CC">return&lt;/font>&lt;/b> &lt;font color="#000080">0&lt;/font>;
    my &lt;font color="#000080">$i&lt;/font> = &lt;font color="#000080">$dbh&lt;/font>->selectrow_hashref(&lt;font color="#000000">"SHOW SLAVE STATUS"&lt;/font>);
    &lt;font color="#000080">$error&lt;/font> = 'Slave SQL not running';
    &lt;b>&lt;font color="#0000CC">return&lt;/font>&lt;/b> &lt;font color="#000080">0&lt;/font> &lt;b>&lt;font color="#0000CC">if&lt;/font>&lt;/b> (exists &lt;font color="#000080">$i&lt;/font>->{Slave_SQL_Running} and &lt;font color="#000080">$i&lt;/font>->{Slave_SQL_Running} eq 'No');
    &lt;font color="#000080">$error&lt;/font> = 'Slave IO not running';
    &lt;b>&lt;font color="#0000CC">return&lt;/font>&lt;/b> &lt;font color="#000080">0&lt;/font> &lt;b>&lt;font color="#0000CC">if&lt;/font>&lt;/b> (exists &lt;font color="#000080">$i&lt;/font>->{Slave_IO_Running} and &lt;font color="#000080">$i&lt;/font>->{Slave_IO_Running} eq 'No');
    &lt;font color="#000080">$error&lt;/font> = 'Unknown error';
    &lt;b>&lt;font color="#0000CC">if&lt;/font>&lt;/b> (exists &lt;font color="#000080">$i&lt;/font>->{Seconds_Behind_Master} and defined(&lt;font color="#000080">$i&lt;/font>->{Seconds_Behind_Master})){
            &lt;b>&lt;font color="#0000CC">return&lt;/font>&lt;/b> &lt;font color="#000080">1&lt;/font> &lt;b>&lt;font color="#0000CC">if&lt;/font>&lt;/b> (&lt;font color="#000080">$i&lt;/font>->{Seconds_Behind_Master}&lt;10);
            &lt;font color="#000080">$error&lt;/font> = 'Slave to far from master['.&lt;font color="#000080">$i&lt;/font>->{Seconds_Behind_Master}.']';
    }
    &lt;b>&lt;font color="#0000CC">return&lt;/font>&lt;/b> &lt;font color="#000080">0&lt;/font>;
}

sub trim {
    my &lt;font color="#000080">$s&lt;/font> = shift;
    &lt;b>&lt;font color="#0000CC">for&lt;/font>&lt;/b> (&lt;font color="#000080">$s&lt;/font>) { s/^\s+&lt;i>&lt;font color="#006600">//; s/\s+$//; }
&lt;/font>&lt;/i>    &lt;b>&lt;font color="#0000CC">return&lt;/font>&lt;/b> &lt;font color="#000080">$s&lt;/font>;
}

open HOSTS_IN, &lt;font color="#000000">"/etc/hosts"&lt;/font>;
open HOSTS_OUT, &lt;font color="#000000">">/etc/hosts_new"&lt;/font>;
&lt;b>&lt;font color="#0000CC">while&lt;/font>&lt;/b> (&lt;HOSTS_IN>){
    &lt;b>&lt;font color="#0000CC">if&lt;/font>&lt;/b> (/&lt;font color="#000080">#?&lt;/font>([&lt;font color="#000080">0&lt;/font>-&lt;font color="#000080">9&lt;/font>.]+)[\t ]+([a-zA-Z0-&lt;font color="#000080">9&lt;/font>].+) *&lt;font color="#000080">##SLAVE&lt;/font>.*/){
        my &lt;font color="#000080">$ip&lt;/font>    = trim(&lt;font color="#000080">$1&lt;/font>);
        my &lt;font color="#000080">$hosts&lt;/font> = trim(&lt;font color="#000080">$2&lt;/font>);
        &lt;b>&lt;font color="#0000CC">if&lt;/font>&lt;/b> (!check_slave(&lt;font color="#000080">$ip&lt;/font>)){
            print HOSTS_OUT &lt;font color="#000000">"#"&lt;/font>;
            print &lt;font color="#000000">"$ip\t$hosts\t$error\n"&lt;/font>;
        }
        print HOSTS_OUT &lt;font color="#000000">"$ip\t\t$hosts\t##SLAVE\n"&lt;/font>;
    } &lt;b>&lt;font color="#0000CC">else&lt;/font>&lt;/b> {
        print HOSTS_OUT &lt;font color="#000080">$_&lt;/font>;
    }
}
close HOSTS_OUT;
close HOSTS_IN;

`mv /etc/hosts_new /etc/hostss`&lt;/pre>&lt;/div>&lt;a name="p360-9">&lt;/a>&lt;p class="auto" id="p360-9">&lt;!--/notypo-->&lt;/p>&lt;br />&lt;a name="p360-10">&lt;/a>&lt;p class="auto" id="p360-10">
&lt;span class="cite">When you&amp;nbsp;ready change last line to&amp;nbsp;mv to&amp;nbsp;/etc/hosts&lt;/span>&lt;/p></description>
</item>
<item>
<title>2010-03-09 14:39:09</title>
<link>http://rus.leaping.net/Ruslan_Bondar/projects/scripts/mysqlslave/show?time=2010-03-09+14%3A39%3A09</link>
<description>edited by challans.fr</description>
</item>
<item>
<title>2005-10-30 21:20:28</title>
<link>http://rus.leaping.net/Ruslan_Bondar/projects/scripts/mysqlslave/show?time=2005-10-30+21%3A20%3A28</link>
<description>edited by RuslanBondar</description>
</item>
<item>
<title>2005-10-30 15:30:49</title>
<link>http://rus.leaping.net/Ruslan_Bondar/projects/scripts/mysqlslave/show?time=2005-10-30+15%3A30%3A49</link>
<description>edited by RuslanBondar</description>
</item>
<item>
<title>2005-10-30 15:28:34</title>
<link>http://rus.leaping.net/Ruslan_Bondar/projects/scripts/mysqlslave/show?time=2005-10-30+15%3A28%3A34</link>
<description>edited by RuslanBondar</description>
</item>
<item>
<title>2005-10-30 15:23:40</title>
<link>http://rus.leaping.net/Ruslan_Bondar/projects/scripts/mysqlslave/show?time=2005-10-30+15%3A23%3A40</link>
<description>edited by RuslanBondar</description>
</item>
</channel>
</rss>

