mysql高可用之MHA(补充2)--邮件报警

当mha进行failover 完成或由于错误停止时,我们可以使用send_report以邮件报警的方式来获得failover报告,以便我们及时了解现在的数据库状态。

首先需要修改脚本:

[[email protected] 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='[email protected]';
my $mail_user='[email protected]';
my $mail_pass='password';
#my $mail_to=['[email protected]','[email protected]'];
my $mail_to='[email protected]';

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

我们收到的邮件如下:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 22:37:00

mysql高可用之MHA(补充2)--邮件报警的相关文章

mysql高可用之MHA(补充3)--管理多组主从复制

前面我们了解了mha管理一组主从,然而在实际生产环境中不同的应用会使用不同的数据库,因此会有多组主从复制,我们可以使用一个mha manager 来管理多组主从复制数据库.我们只需要创建一个全局配置文件,你可以将这几组中相同的配置信息写到全局配置文件中,如用户名.密码等,而其他的配置信息单独写到每个app*.cnf中. 官网介绍: https://code.google.com/p/mysql-master-ha/wiki/Configuration 下面我们就来介绍下: mha架构: 如上:我

mysql高可用之mha(补充1)

1.masterha_conf_host自动添加/删除数据库 在某些情况下我们需要在配置文件中添加mysql服务器实现对现有数据的扩展或者有故障的master已经修复好需要在现有环境中当做slave继续使用,那么我们就可以使用masterha_conf_host来实现. 在前面我们讲到rd-mysql-test1的master有问题导致启动failover,现在rd-mysql-test2成为新的master,现在rd-mysql-test1已经修复,我们将其作为slave继续使用: 现在的配置

MySQL高可用方案MHA自动Failover与手动Failover的实践及原理

集群信息 角色                             IP地址                 ServerID      类型 Master                         192.168.244.10   1                 写入 Candicate master          192.168.244.20   2                 读 Slave                           192.168.244.

MySQL高可用之MHA

MySQL高可用之MHA MHA简介 MHA是由日本人yoshinorim(原就职于DeNA现就职于FaceBook)开发的比较成熟的MySQL高可用方案.MHA能够在30秒内实现故障切换,并能在故障切换中,最大可能的保证数据一致性.目前淘宝也正在开发相似产品TMHA,目前已支持一主一从. MHA架构MHA由MHA Manager和MHA Node组成,如下图所示: MHA Manager:运行一些工具,比如masterha_manager工具实现自动监控MySQL Master和实现maste

MySQL 高可用之MHA

目录 MySQL高可用之MHA MHA简介 MHA工作流程 HMA架构 MHA工具介绍 部署MHA MySQL环境准备 配置GTID主从复制 配置关闭relaylog自动删除 安装MHA Node 安装MHA Manager 测试故障切换 修复主从和MHA 配置VIP漂移 配置binlog-server 故障排错 MySQL高可用之MHA MHA简介 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshima

MySQL高可用之MHA的搭建

MySQL MHA架构介绍: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正的高可用. 该软件由两部分组成:MHA Manag

MySQL高可用之MHA—MHA介绍

MHA简介 MHA是由日本人yoshinorim(原就职于DeNA现就职于FaceBook)开发的比较成熟的MySQL高可用方案.MHA能够在30秒内实现故障切换,并能在故障切换中,最大可能的保证数据一致性.目前淘宝也正在开发相似产品TMHA,目前已支持一主一从. MHA架构 MHA由MHA Manager和MHA Node组成.如下图 MHA Manager 运行一些工具,比如masterha_manager工具实现自动监控MySQL Master和实现master故障切换,其它工具实现手动实

MySQL高可用架构-MHA环境部署记录

一.MHA介绍 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是日本的一位 MySQL专家采用Perl语言编写的一个脚本管理工具,该工具仅适用于MySQLReplication(二层)环境,目的在于维持Master主库的高可用性.是一套优秀的作为MySQL高可用性 环境下故障切

MySQL高可用之MHA部署

MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用. MHA里有两个角色一个是MHA Node(数据节点)另一个是MHA Manager(管理节点). MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台sla