~沉%淀~

一切有为法,如梦幻泡影,如露亦如电,应作如是观

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
当mha进行failover 完成或由于错误停止时,我们可以使用send_report以邮件报警的方式来获得failover报告,以便我们及时了解现在的数据库状态。
首先需要修改脚本:





[root@rd-mysql-test4 mha]# cat /usr/local/bin/send_report   
#!/usr/bin/perl  
  
#  Copyright (C) 2011 DeNA Co.,Ltd.  
#  
#  This program is free software; you can redistribute it and/or modify  
#  it under the terms of the GNU General Public License as published by  
#  the Free Software Foundation; either version 2 of the License, or  
#  (at your option) any later version.  
#  
#  This program is distributed in the hope that it will be useful,  
#  but WITHOUT ANY WARRANTY; without even the implied warranty of  
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
#  GNU General Public License for more details.  
#  
#  You should have received a copy of the GNU General Public License  
#   along with this program; if not, write to the Free Software  
#  Foundation, Inc.,  
#  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA  
  
## Note: This is a sample script and is not complete. Modify the script based on your environment.  
  
use strict;  
use warnings FATAL => 'all';  
use Mail::Sender;  
use Getopt::Long;  
  
#new_master_host and new_slave_hosts are set only when recovering master succeeded  
my ( $dead_master_host, $new_master_host, $new_slave_hosts, $subject, $body );  
  
my $smtp='smtp.163.com';  
my $mail_from='from@163.com';  
my $mail_user='from@163.com';  
my $mail_pass='password';  
#my $mail_to=['to1@qq.com','to2@qq.com'];  
my $mail_to='to@qq.com';  
  
GetOptions(  
  'orig_master_host=s' => \$dead_master_host,  
  'new_master_host=s'  => \$new_master_host,  
  'new_slave_hosts=s'  => \$new_slave_hosts,  
  'subject=s'          => \$subject,  
  'body=s'             => \$body,  
);  
  
# Do whatever you want here  
mailToContacts($smtp,$mail_from,$mail_user,$mail_pass,$mail_to,$subject,$body);  
  
sub mailToContacts {  
    my ($smtp, $mail_from, $mail_user, $mail_pass, $mail_to, $subject, $msg ) = @_;  
    open my $DEBUG, ">/var/log/masterha/app1/mail.log"  
        or die "Can't open the debug    file:$!\n";  
    my $sender = new Mail::Sender {  
        ctype       => 'text/plain;charset=utf-8',  
        encoding    => 'utf-8',  
        smtp        => $smtp,  
        from        => $mail_from,  
        auth        => 'LOGIN',  
        TLS_allowed => '0',  
        authid      => $mail_user,  
        authpwd     => $mail_pass,  
        to      => $mail_to,  
        subject     => $subject,  
        debug       => $DEBUG  
    };  
    $sender->MailMsg(  
        {  
            msg => $msg,  
            debug => $DEBUG  
        }  
    ) or print $Mail::Sender::Error;  
    return 1;  
}  
  
exit 0;  

========================================================================================================================================
========================================================================================================================================
然后修改配置文件,只需添加report_script即可


[server default]  
manager_log=/var/log/masterha/app1/manager.log  
manager_workdir=/var/log/masterha/app1  
master_binlog_dir=/data/mysql  
master_ip_failover_script=/usr/local/bin/master_ip_failover  
master_ip_online_change_script=/usr/local/bin/master_ip_online_change  
password=123456  
ping_interval=1  
remote_workdir=/tmp  
repl_password=123456  
repl_user=rep  
report_script=/usr/local/bin/send_report  
ssh_port=22  
ssh_user=root  
user=mha  
  
[server1]  
hostname=10.10.10.56  
port=3306  
  
[server2]  
hostname=10.10.10.57  
port=3306  
  
[server3]  
hostname=10.10.10.58  
port=3306  


最后开启mha监控,停止master来触发failover,在最后我们可以看到生成了failover报告并send_report。





----- Failover Report -----  
  
app1: MySQL Master failover 10.10.10.57(10.10.10.57:3306) to 10.10.10.56(10.10.10.56:3306) succeeded  
  
Master 10.10.10.57(10.10.10.57:3306) is down!  
  
Check MHA Manager logs at rd-mysql-test4:/var/log/masterha/app1/manager.log for details.  
  
Started automated(non-interactive) failover.  
Invalidated master IP address on 10.10.10.57(10.10.10.57:3306)  
The latest slave 10.10.10.56(10.10.10.56:3306) has all relay logs for recovery.  
Selected 10.10.10.56(10.10.10.56:3306) as a new master.  
10.10.10.56(10.10.10.56:3306): OK: Applying all logs succeeded.  
10.10.10.56(10.10.10.56:3306): OK: Activated master IP address.  
10.10.10.58(10.10.10.58:3306): This host has the latest relay log events.  
Generating relay diff files from the latest slave succeeded.  
10.10.10.58(10.10.10.58:3306): OK: Applying all logs succeeded. Slave started, replicating from 10.10.10.56(10.10.10.56:3306)  
10.10.10.56(10.10.10.56:3306): Resetting slave info succeeded.  
Master failover to 10.10.10.56(10.10.10.56:3306) completed successfully.  
Thu Aug 13 11:27:36 2015 - [info] Sending mail..  
Unknown option: conf  




我们收到的邮件如下:

 

 

 

 

posted on 2020-11-17 12:37  ~沉%淀~  阅读(272)  评论(0编辑  收藏  举报