第99讲:MHA高可用集群配置实战:邮件告警和Binlog服务器搭建详解

文章目录

  • 一、配置当MHA故障切换时发生邮件告警
    • 1.准备发送邮件的脚本
    • 2.配置MHA支持邮箱告警
    • 3.重启MHA
    • 4.模拟主库故障切换观察邮件接收
  • 二、为MHA高可用集群配置Binlog服务器
    • 1.为什么要配置Binlog服务器
    • 2.搭建Binlog服务器
      • 2.1.创建保存主库Binlog的路径
      • 2.2.配置MHA增加Binlog服务器
      • 2.3.自动使Binlog服务器拉取主库的Binlog日志
      • 2.4.重启MHA
      • 2.5.验证Binlog复制的实时性

一、配置当MHA故障切换时发生邮件告警

MHA故障切换是透明的,并且切换完MHA就挂掉了,如果我们不知道,那么在下一次故障时,就无法形成高可用环境了。

因此下面我们来配置当MHA故障切换完成后,就发送一个邮件告警,通知我们去维护MHA。

1.准备发送邮件的脚本

[root@mysql-3 ~]# ll /data/mha/scripts/*
-rwxr-xr-x 1 root root    36 79 17:38 /data/mha/scripts/send
-rwxr-xr-x 1 root root 80213 930 2009 /data/mha/scripts/sendEmail
-rwxr-xr-x 1 root root   203 419 2019 /data/mha/scripts/toemailsend脚本内容是调用toemail这个脚本
[root@mysql-3 ~]# cat /data/mha/scripts/send
#! /usr/bin/perl -w
system"/data/mha/scripts/toemail"toemail脚本内容
[root@mysql-3 ~]# cat /data/mha/scripts/toemail
#!/bin/bash
/data/mha/scripts/sendEmail -o tls=no -f xxx@163.com -t xxx@163.com -s smtp.163.com:25 -xu user  -xp password  -u "MHA故障告警" -m "The primary and secondary MySQL replication clusters are abnormal. The MHA switchover has been completed. Repair the MHA in time!" &>/tmp/sendmail.log
#改成自己的邮箱发送方和接收方#我的如下
/data/mha/scripts/sendEmail -o tls=no -f 15910468023@163.com -t 15910468023@163.com -s smtp.163.com:25 -xu 15910468023  -xp MYLOITHAOPLEAAUR  -u "MHA故障告警" -m "The primary and secondary MySQL replication clusters are abnormal. The MHA switchover has been completed. Repair the MHA in time!" &>/tmp/sendmail.log

2.配置MHA支持邮箱告警

[root@mysql-3 ~]# vim /data/mha/app1.cnf 
[server default]
······
report_script=/data/mha/scripts/send

3.重启MHA

[root@mysql-3 ~]# masterha_stop --conf=/data/mha/app1.cnf 
[root@mysql-3 ~]# nohup masterha_manager --conf=/data/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover  < /dev/null> /data/mha/logs/manager.log 2>&1 &

4.模拟主库故障切换观察邮件接收

1)模拟主库故障

1.主库是mysql-2
[root@mysql-3 ~]# masterha_check_status --conf=/data/mha/app1.cnf
app1 (pid:13746) is running(0:PING_OK), master:192.168.20.122.模拟主库故障
[root@mysql-2 ~]# systemctl stop mysqld

2)正常收到邮件

image-20220709181631579

二、为MHA高可用集群配置Binlog服务器

1.为什么要配置Binlog服务器

在高可用环境中,如果主库故障宕机,从库们无法SSH到主库,如果主从延时较大,可能就会导致数据丢失,因为从库被选举为新的主库后,会获取新主库与故障主库差异的Binlog日志,如果SSH无法连接,此时差异的Binlog就无法获取,就会导致数据丢失。

因此我们可以搭建一个Binlog服务器,专门实时同步主库产生的Binlog日志文件,当主库故障宕机后,MHA直接从Binlog服务器中读取主库的Binlog日志。

2.搭建Binlog服务器

由于服务器有限,直接在mysql-3中搭建一个Binlog服务器。

2.1.创建保存主库Binlog的路径

搭建Binlog服务器,需要在此服务器中准备mysqlbinlog命令工具,这台服务器可以是一个很低配的服务器。

[root@mysql-3 ~]# mkdir /data/mysql_master_binlog
[root@mysql-3 ~]# chown -R mysql.mysql /data/mysql_master_binlog

2.2.配置MHA增加Binlog服务器

[root@mysql-3 ~]# vim /data/mha/app1.cnf 
[binlog1]
no_master=1											#此服务器不进行选举
hostname=192.168.20.13								  #Binlog服务器的地址
master_binlog_dir=/data/mysql_master_binlog				#Binlog日志的路径

2.3.自动使Binlog服务器拉取主库的Binlog日志

通过mha账号,指定从哪个Binlog日志文件开始复制,后面产生的新的Binlog日志文件以及指定的Binlog文件都会持续不断的复制过来,实时复制。

#必须进入到自己创建好的目录
[root@mysql-3 ~]# cd /data/mysql_master_binlog#主库地址一定要指对
[root@mysql-3 mysql_master_binlog]# mysqlbinlog  -R --host=192.168.20.12 --user=mha --password=123456 --raw  --stop-never mysql-bin.000002 &--stop-never mysql-bin.000002:这个参数表示从mysql-bin.000002这个Binlog开始,包含这个Binlog,以及后面产生了新的Binlog日志都复制到当前路径
从哪个Binlog日志开始复制,一般都是查看从库的状态,看看从库当前读取了主库哪个Binlog日志,从这个Binlog文件开始,包含这个Binlog以及后面产生新的Binlog都会复制过来。

2.4.重启MHA

[root@mysql-3 ~]# masterha_stop --conf=/data/mha/app1.cnf 
[root@mysql-3 ~]# nohup masterha_manager --conf=/data/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover  < /dev/null> /data/mha/logs/manager.log 2>&1 &

2.5.验证Binlog复制的实时性

主库多刷新几个Binlog,观察Binlog服务器是否会复制过来。

image-20220709213923759

经过我们一点点的深造,目前MHA的架构为:MHA+VIP漂移地址+Send邮件告警+BinlogServer

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/478796.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux中信号机制

信号机制 信号的概念 概念&#xff1a;信号是在软件层次上对中断机制的一种模拟&#xff0c;是一种异步通信方式 所有信号的产生及处理全部都是由内核完成的信号的产生&#xff1a; 1 按键产生 2 系统调用函数产生&#xff08;比如raise&#xff0c; kill&#xff09; 3 硬件…

K8s ingress-nginx根据请求目录不同将请求转发到不同应用

K8s ingress-nginx根据请求目录不同将请求转发到不同应用 1. 起因 有小伙伴做实验想要实现以下需求: 输入www.pana.com/app1访问app1的svc 输入www.pana.com/app2访问app2的svc 2. 实验 2.1 Dockerfile 先准备Dockerfile FROM nginx:1.20ADD index.html /usr/share/ngin…

使用fgetc和fputc完成两个文件的拷贝

#include<myhead.h>int main(int argc, const char *argv[]) {//判断是否进行了外部传参if(argc!3){printf("input file error\n");printf("usage:./a.out srcfile destfile\n");return -1;}//定义文件指针&#xff0c;以只读的形式打开FILE *srcfpN…

ChatGPT如何提供实用且高质量的建议和指导,提高编程效率和准确性

ChatGPT4.0的功能包括&#xff1a; 无限制ChatGPT模型使用 GPT-4模型使用 GPT-4图像分析功能 GPT-4联网功能 GPT-4高级数据分析功能 GPT-4高级插件功能 DALLE-3高级AI绘图功能 如何能高效地处理文本、文献查阅、PPT编辑、编程、绘图和论文写作已经成为您成功的关键。而 …

Mac清理系统垃圾软件CleanMyMac X2025免费版本下载

嘿&#xff0c;Mac用户们&#xff0c;你是否经常感觉你的Mac就像是在背着一个沉重的包袱在跑步&#xff1f;是的&#xff0c;我在说那些堆积如山的系统垃圾。清理这些垃圾不仅可以让你的Mac跑得更快&#xff0c;还能让它“呼吸”更畅快。今天&#xff0c;让我们一起来探索如何M…

C#,入门教程(05)——Visual Studio 2022源程序(源代码)自动排版的功能动画图示

上一篇&#xff1a; C#&#xff0c;入门教程(04)——Visual Studio 2022 数据编程实例&#xff1a;随机数与组合https://blog.csdn.net/beijinghorn/article/details/123533838 新来的徒弟们交上来的C#代码&#xff0c;可读性往往很差。 今天一问才知道&#xff0c;他们居然不…

centos中安装go

安装过程 &#xff08;1&#xff09;源码二进制下载地址 wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz &#xff08;2&#xff09;将下载的二进制包解压至 /usr/local目录。 tar -C /usr/local/ -xzf go1.13.5.src.tar.gz &#xff08;3&#xff09;设置环…

ArcGIS model中分区统计迭代输出文件名

在模型中设置了迭代栅格数据&#xff0c;但输出过程中结果只能显示一个&#xff0c;因此采用提供的解析路径的方法提取出文件名字&#xff0c;不包含后缀名&#xff0c;作为前提条件输入到结果中。 1、首先选择工作空间&#xff0c;即存放ti影像的目录。 2、右键仅模型工具中选…

生产环境下,应用模式部署flink任务,通过hdfs提交

前言 通过通过yarn.provided.lib.dirs配置选项指定位置&#xff0c;将flink的依赖上传到hdfs文件管理系统 1. 实践 &#xff08;1&#xff09;生产集群为cdh集群&#xff0c;从cm上下载配置文件&#xff0c;设置环境 export HADOOP_CONF_DIR/home/conf/auth export HADOOP_CL…

vue实现自动滚动 v-auto-scroll

在项目中&#xff0c;有时候需要实现自动滚动的效果。这时我们直接使用 v-auto-scroll 即可。 也就是当内容超出设置元素的最大高度的时就会出现滚动条。

Kubernetes基础(二十二)-K8S的PV/PVC/StorageClass详解

1 概述 先来个一句话总结&#xff1a;PV、PVC是K8S用来做存储管理的资源对象&#xff0c;它们让存储资源的使用变得可控&#xff0c;从而保障系统的稳定性、可靠性。StorageClass则是为了减少人工的工作量而去自动化创建PV的组件。所有Pod使用存储只有一个原则&#xff1a;先规…

Go应用性能分析实战

Go很适合用来开发高性能网络应用&#xff0c;但仍然需要借助有效的工具进行性能分析&#xff0c;优化代码逻辑。本文介绍了如何通过go test benchmark和pprof进行性能分析&#xff0c;从而实现最优的代码效能。原文: Profiling Go Applications in the Right Way with Examples…