当mha进行failover 完成或由于错误停止时,我们可以使用send_report以邮件报警的方式来获得failover报告,以便我们及时了解现在的数据库状态。
首先需要修改脚本:
[html] view plain
- [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即可
[html] view plain
- [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。
[html] view plain
- ----- 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
我们收到的邮件如下: