当前位置: 首页 > news >正文

第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/toemail

send脚本内容是调用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.12

2.模拟主库故障
[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

相关文章:

  • NineAi 新版AI系统网站源码 ChatGPT
  • 前端新手Vue3+Vite+Ts+Pinia+Sass项目指北系列文章 —— 第十二章 常用工具函数 (Utils配置)
  • C语言:生成校验码
  • javaSE和javaEE区别
  • HTML 字符实体参考清单
  • Java使用Redis实现消息队列
  • 【算法】约瑟夫环问题解析与实现
  • 【正点原子STM32连载】 第五十二章 串口IAP实验 摘自【正点原子】APM32E103最小系统板使用指南
  • Lag-Llama:第一个时间序列预测的开源基础模型介绍和性能测试
  • PTA | Wifi密码
  • 5G网络eMBB、uRLLC、mMTC
  • “分布式透明化”在杭州银行核心系统上线之思考
  • 前端判断对象为空
  • 掌上新闻随心播控,HarmonyOS SDK助力新浪新闻打造精致易用的资讯服务新体验
  • redis为什么使用跳跃表而不是树
  • 二、ActiveMQ安装
  • Postgresql源码(124)两个事务更新同一行数据时的行为和原理分析
  • django定时任务(django-crontab)
  • notepad++打开文本文件乱码的解决办法
  • PCL常用的点云操作
  • 牛市早报|今年第二批810亿元超长期特别国债资金下达,支持消费品以旧换新
  • 游客曝九寨沟打网约车被出租车围堵,景区回应:当地无合规网约车
  • 贵州茅台一季度净利268亿元增长11.56%,系列酒营收增近两成
  • 百岁太极拳大师、陈氏太极拳第十一代嫡宗传人陈全忠逝世
  • 一季度规模以上工业企业利润由降转增,国家统计局解读
  • 起底网红热敷贴“苗古金贴”:“传承人”系AI生成,“千年秘方”实为贴牌货