亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 貢獻(xiàn)一個mysql replication出錯自動檢測的腳本 [打印本頁]

作者: 平凡的香草    時間: 2005-01-05 11:13
標(biāo)題: 貢獻(xiàn)一個mysql replication出錯自動檢測的腳本
需要DBIX及Mail等perl模塊
注意,雖然能夠自動修復(fù),但是可能造成slave的數(shù)據(jù)條目少于master的條目!使用的時候自己注意些好了
本腳本是修改版,原作者是Jeremy Zawodny

  1. #!/usr/local/bin/perl -w
  2. #
  3. # fix mysql replication if it encounters a problem
  4. # Useage:perl fix_repl.pl ip1 ip2 ip3

  5.         $|=1;      # unbuffer stdout
  6.         use strict;
  7.         use DBIx::DWIW;
  8.         use Mail::Mailer;
  9.         my $ip;
  10. foreach $ip (@ARGV) {
  11.         &fixdb($ip);
  12. }

  13. exit;

  14. sub fixdb()
  15. {
  16.         my $host = shift || 'localhost';
  17.         my $conn = DBIx::DWIW->;Connect(
  18.                 DB   =>; "test",
  19.                 User =>; "sqlmon",
  20.                 Pass =>; '!@#$%^&*()',
  21.             Host =>; $host,
  22.                 Port  =>; 3306) or die "Couldn't connect to database!";

  23.         print "checking $host ... \n";
  24.         my $info = $conn->;Hash("SHOW SLAVE STATUS") or die $@;
  25.         my @version = $conn->;Array("SHOW VARIABLES LIKE 'Version'");
  26.         my $fix_cmd;
  27.         my $start_cmd;
  28. # slave not start
  29.         if ($info->;{Slave_IO_Running} eq 'No' and $info->;{Slave_SQL_Running} eq 'No')
  30.         {
  31.                 $fix_cmd = "SET SQL_SLAVE_SKIP_COUNTER = 1";
  32.                 $start_cmd = "SLAVE START";
  33.         }
  34. # 4.0.0 - 4.0.2
  35.         elsif ($version[1] =~ /^4\.0\.[012]/ and $info->;{Slave_SQL_Running} eq 'No')
  36.         {
  37.                 $fix_cmd = "SET SQL_SLAVE_SKIP_COUNTER = 1";
  38.                 $start_cmd = "SLAVE START SQL_THREAD";
  39.         }
  40. # 4.0.3 - 4.0.xx, 4.1.xx.  Don't know what 5.0 will be like.
  41.         elsif ($version[1] =~ /^4\.[01]\./ and $info->;{Slave_SQL_Running} eq 'No')
  42.         {
  43.                 $fix_cmd = "SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1";
  44.                 $start_cmd = "SLAVE START SQL_THREAD";
  45.         }
  46. # things are okay or unknown version?
  47.         else
  48.         {
  49.                         print "GOOD\n";
  50.         }
  51.         if ($info->;{Slave_IO_Running} eq 'No'  or  $info->;{Slave_SQL_Running} eq 'No' ){
  52.         &mailtoadmin($info,$host);
  53.         print "FIXING ... ";
  54.         $conn->;Execute($fix_cmd);
  55.         $conn->;Execute($start_cmd);
  56.         print "DONE\n";
  57.         }

  58. }

  59. sub mailtoadmin(){
  60.         my $body=shift;
  61.                 my $host = shift;
  62.         my @MailTo=("xxxx\@yyyy.com");
  63.         my $subject = "Mysql Self fix replication on $host ";
  64.                 my $mailer = Mail::Mailer->;new() or die $@;
  65.                 $mailer->;open({ From    =>; $host,
  66.                 To      =>; \@MailTo,
  67.                 Subject =>; $subject,
  68.                 })or die "Can't open: $!\n";
  69. #    while ( my ($key, $value) = each(%$body) ) {
  70. #        print $mailer "$key =>; $value\n";
  71. #    }
  72.         print $mailer <<MAILCONTENT;

  73.         *************************** show slave status***************************

  74.         Master_Host                        =>;  $body->;{'Master_Host'}
  75.         Master_User                        =>;  $body->;{'Master_User'}
  76.         Master_Port                        =>;  $body->;{'Master_Port'}
  77.         Connect_retry                =>;  $body->;{'Connect_retry'}
  78.         Master_Log_File        =>;  $body->;{'Master_Log_File'}
  79.         Read_Master_Log_Pos =>;$body->;{'Read_Master_Log_Pos'}
  80.         Relay_Log_File                =>;  $body->;{'Relay_Log_File'}
  81.         Relay_Log_Pos                =>;  $body->;{'Relay_Log_Pos'}
  82.         Relay_Master_Log_File =>;$body->;{'Relay_Master_Log_File'}
  83.         Slave_IO_Running =>;$body->;{'Slave_IO_Running'}
  84.         Slave_SQL_Running =>;$body->;{'Slave_SQL_Running'}
  85.         Replicate_do_db        =>;   $body->;{'Replicate_do_db'}
  86.         Replicate_ignore_db =>;$body->;{'Replicate_ignore_db'}
  87.         Last_errno                                =>;    $body->;{'Last_errno'}
  88.         Last_error                                =>;    $body->;{'Last_error'}
  89.         Skip_counter                        =>;    $body->;{'Skip_counter'}
  90.         Exec_master_log_pos =>; $body->;{'Exec_master_log_pos'}
  91.         Relay_log_space        =>;    $body->;{'Relay_log_space'}
  92. MAILCONTENT
  93.         $mailer->;close();
  94. }

復(fù)制代碼

作者: yejr    時間: 2005-01-05 17:14
標(biāo)題: 貢獻(xiàn)一個mysql replication出錯自動檢測的腳本
呵呵,謝謝樓主,其實如果用shell來做的話,是粉簡單的,而且以前也已經(jīng)有現(xiàn)成的了.
作者: odin_free    時間: 2005-01-06 10:18
標(biāo)題: 貢獻(xiàn)一個mysql replication出錯自動檢測的腳本
不錯~~~保留
作者: qinshiling    時間: 2005-03-29 17:11
標(biāo)題: 貢獻(xiàn)一個mysql replication出錯自動檢測的腳本
看你的腳本作用不錯,能高訴我怎么用嗎?
作者: qinshiling    時間: 2005-03-29 17:14
標(biāo)題: 貢獻(xiàn)一個mysql replication出錯自動檢測的腳本
看你的腳本作用不錯,能高訴我怎么用嗎?
作者: king1981    時間: 2006-10-28 18:50
yejr 你中文的MYSQL 手冊能打個包給我嗎?
先謝謝拉.
ba20000@163.com
作者: qlks    時間: 2006-10-29 10:36
不錯
不過生產(chǎn)環(huán)境中還是shell腳本來的方便
作者: grfjs    時間: 2007-01-09 16:54
原帖由 yejr 于 2005-1-5 17:14 發(fā)表
呵呵,謝謝樓主,其實如果用shell來做的話,是粉簡單的,而且以前也已經(jīng)有現(xiàn)成的了.


請版主幫幫忙,能提供shell腳本的連接嗎? 我翻了好久以前的帖子都沒翻到啊
作者: yejr    時間: 2007-01-09 20:24
http://imysql.cn/?q=node/77
中的 mysql日常維護(hù) 里頭有類似的
作者: yueliangdao0608    時間: 2007-01-10 09:04
你可以把perl的翻譯成shell
作者: Jeff_z    時間: 2007-01-11 00:17
不錯,頂一下
作者: cnhero    時間: 2009-07-28 21:23
謝謝啊
作者: Coolriver    時間: 2009-07-29 14:16
不錯頂一下.
Perl和Shell比有一個好處,可以保證會話在同一個會話中.所以推薦用Perl吧.
作者: freeterman    時間: 2011-11-29 17:36
mysql 如果有批處理可以這樣搞 有好了




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2