zoukankan      html  css  js  c++  java
  • X mysql高可用之MHA--邮件报警

    当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:$!
    ";  
        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  
    
    
    
    
    我们收到的邮件如下:
     
  • 相关阅读:
    界面控件DevExpress Blazor UI组件v20.2新版亮点:集成Visual Studio
    如何打印超长图片
    使用you-get库下载视频自动化
    数组求最值和平均数的算法
    如何删除git所有提交历史
    计算机图形学应知应会
    通过终端登录FTP服务器的方式
    局域网内通过ARP欺骗获取他人账号密码
    如何在局域网下用他人的流量上网
    XAMPP下的项目进行内网穿透时的注意点
  • 原文地址:https://www.cnblogs.com/chendian0/p/13993604.html
Copyright © 2011-2022 走看看