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

mysql高可用架构之MHA部署(三)——故障转移后邮件告警配置(保姆级)

本教程基于前面两篇
mysql高可用架构之MHA部署(一)(保姆级)
mysql高可用架构之MHA部署(二)VIP漂移(保姆级)
实现了HMA发邮件提醒,QQ邮箱
【注意】
以下所有操作均在MHA管理节点【10.0.0.62】执行

1、前提条件

前提条件:主从架构正常、MHA启动,请按下面操作进行环境检查

  1. 检查 SSH 免密登录
masterha_check_ssh --conf=/etc/mha/mysql_cluster.cnf
  1. 检查主从复制
masterha_check_repl --conf=/etc/mha/mysql_cluster.cnf
  1. 检查 MHA 状态
masterha_check_status --conf=/etc/mha/mysql_cluster.cnf
  1. MHA 启动
nohup masterha_manager   --conf=/etc/mha/mysql_cluster.cnf   --remove_dead_master_conf   --ignore_laster_failover   > /var/log/mha/mysql_cluster/manager.log 2>&1 &
  1. MHA 停止
masterha_stop  --conf=/etc/mha/mysql_cluster.cnf

2、MHA故障提醒

怎么实现HMA发邮件提醒?QQ邮箱
要通过 MHA(Master High Availability)实现 QQ 邮箱的邮件提醒,需配置 MHA 调用邮件工具发送邮件,并解决 QQ 邮箱强制 SSL 加密的问题。以下是完整步骤:

2.1、准备工作

安装邮件工具,在 MHA 管理节点安装 mailx(用于发送邮件):

CentOS/RHEL

yum install -y mailx

Ubuntu/Debian

apt-get install -y heirloom-mailx

2.2 开启 QQ 邮箱 SMTP 服务并获取授权码

登录 QQ 邮箱 → 「设置」→「账户」→ 开启「POP3/SMTP 服务」;
完成安全验证后,获取 16 位授权码(非登录密码,用于保存)。

2.3 配置 QQ 邮箱 SMTP 连接(关键)

创建或修改邮件配置文件,确保支持 QQ 邮箱的 SSL 加密连接:

vi /etc/mail.rc

添加以下内容(替换为你的信息):

set from=你的QQ号@qq.com              # 发件人邮箱(如123456@qq.com)
set smtp=smtps://smtp.qq.com:465      # QQ邮箱SSL端口(必须用465)
set smtp-auth-user=你的QQ号@qq.com    # 与发件人一致
set smtp-auth-password=你的16位授权码  # 刚获取的授权码(无引号)
set smtp-auth=login                   # 认证方式
set nss-config-dir=/etc/pki/nssdb/    # SSL证书库路径
set ssl-verify=off                    # 关闭证书验证(避免QQ证书识别问题)

3、创建 MHA 邮件通知脚本

MHA 通过脚本触发邮件发送,创建脚本 masterha_send_report
脚本内容(实现接收 MHA 事件并发送邮件):
可以用我这个,也可以自己写一个,功能实现即可,我这个也不全面,参考即可,

vim /usr/local/bin/masterha_send_report #!/bin/bash
# MHA 故障转移邮件通知脚本(彻底消除dead.letter提示)
# 脚本路径:/usr/local/bin/masterha_send_report# 1. 基础配置
TO="你的QQ号@qq.com"                     # 邮件接收人
CLUSTER_NAME="mysql_cluster"            # MHA集群名称
MANAGER_LOG_DIR="/var/log/mha/mysql_cluster"  # MHA日志目录
DEAD_LETTER="/root/dead.letter"         # 死信文件路径(固定)# 2. 解析MHA参数
for arg in "$@"; docase "$arg" in--orig_master_host=*) ORIG_MASTER_IP="${arg#*=}" ;;--orig_master_port=*) ORIG_MASTER_PORT="${arg#*=}" ;;--new_master_host=*) NEW_MASTER_IP="${arg#*=}" ;;--new_master_port=*) NEW_MASTER_PORT="${arg#*=}" ;;--new_slave_hosts=*) NEW_SLAVE_IP="${arg#*=}" ;;--conf=*) MHA_CONF="${arg#*=}" ;;--subject=*) EVENT_TYPE="Master 故障转移成功" ;;esac
done# 3. 端口默认值
ORIG_MASTER_PORT=${ORIG_MASTER_PORT:-3306}
NEW_MASTER_PORT=${NEW_MASTER_PORT:-3306}# 4. 邮件主题与内容
SUBJECT="【MHA 告警】$CLUSTER_NAME 集群故障转移完成(原主:$ORIG_MASTER_IP:$ORIG_MASTER_PORT → 新主:$NEW_MASTER_IP:$NEW_MASTER_PORT)"BODY=$(cat <<EOF
MHA 集群故障转移通知【1. 核心事件信息】
- 事件类型:$EVENT_TYPE(failover_succeeded)
- 集群名称:$CLUSTER_NAME
- 故障原主节点:IP: $ORIG_MASTER_IP端口: $ORIG_MASTER_PORT状态:已下线(Master is down)
- 新主节点:IP: $NEW_MASTER_IP端口: $NEW_MASTER_PORT状态:已激活(已应用所有日志、已绑定主节点 IP)【2. 从节点同步状态】
- 从节点 IP:$NEW_SLAVE_IP
- 同步状态:正常(已启动,正在从新主节点 $NEW_MASTER_IP:$NEW_MASTER_PORT 同步数据)【3. 日志与配置信息】
- MHA 配置文件路径:$MHA_CONF
- 故障转移日志路径:$MANAGER_LOG_DIR/manager.log(查看完整过程)
- 管理节点主机名:$(hostname)【4. 故障转移过程摘要】
1. 启动自动非交互式故障转移
2. 失效原主节点 $ORIG_MASTER_IP:$ORIG_MASTER_PORT 的 IP 绑定
3. 选择 $NEW_MASTER_IP:$NEW_MASTER_PORT 作为新主节点并应用日志
4. 激活新主节点 IP 绑定
5. 从节点 $NEW_SLAVE_IP 启动并同步新主节点
6. 重置新主节点的从节点信息,故障转移完成【5. 后续操作建议】
1. 排查原主节点 $ORIG_MASTER_IP:$ORIG_MASTER_PORT 故障原因
2. 验证新主节点 $NEW_MASTER_IP:$NEW_MASTER_PORT 运行状态
3. 确认从节点 $NEW_SLAVE_IP 同步状态
4. 修复原主节点后配置为新从节点
EOF
)
# 5. 发送邮件(关键优化:屏蔽错误+发送后立即清理死信文件)
echo -e "$BODY" | mailx -s "$SUBJECT" "$TO" >/dev/null 2>&1 && \
# 无论发送成功与否,强制删除空的死信文件(解决提示问题)
if [ -f "$DEAD_LETTER" ] && [ $(stat -c %s "$DEAD_LETTER") -eq 0 ]; thenrm -f "$DEAD_LETTER" >/dev/null 2>&1
fiexit 0

3.1 赋予脚本执行权限:

chmod +x /usr/local/bin/masterha_send_report

3.2 配置 MHA 调用邮件脚本

修改 MHA 配置文件(如 /etc/mha/mysql_cluster.cnf),添加邮件脚本路径:

[server default]
#其他配置...
manager_workdir=/var/log/mha/mysql_cluster
report_script= /usr/local/bin/masterha_send_report    # 关键:指定邮件脚本

例如:
在这里插入图片描述

3.3 手动测试邮件脚本

/usr/local/bin/masterha_send_report  \
--orig_master_host=10.0.0.61 \
--orig_master_port=3306 \
--new_master_host=10.0.0.60 \
--new_master_port=3306 \
--new_slave_hosts=10.0.0.62 \
--conf=/etc/mha/mysql_cluster.cnf

然后脚本里面的收件邮箱会有消息,如下
收到告警邮件
具体告警信息
在这里插入图片描述
测试邮件功能正常之后,进行主从故障模拟

4、模拟故障验证自动通知

【注】
由于修改了MHA的配置文件,请停止MHA并重新启动MHA,也可再次检查下标题1里面前提条件是否满足,然后进行下列操作

  • 手动模拟故障(主库执行)
systemctl stop mysqld

在主库执行 systemctl stop mysqld 触发 MHA 故障转移,此时会收到邮件通知,包含故障类型、节点信息等内容。

  • 观测MHA日志
tail -f  /var/log/mha/mysql_cluster/manager.log

在这里插入图片描述
这里可以看到MHA主从故障后出发了故障转移,VIP也进行了漂移,告警邮件发送
建议:可以仔细看下MHA日志,你可以明白MHA主从替换的更详细的过程,这对你理解MHA故障转移的认识会更深一步。
也可参考我的博客,更详细地了解。
MHA Failover 实现流程(核心步骤)

  • 观测VIP脚本日志(可选)
tail -f /var/log/mha/vip_failover.log

在这里插入图片描述
IP漂移也成功了

  • 查看邮件

当然,更重要的是故障转移告警邮件的接收
在这里插入图片描述
邮件告警操作实现。
至此,关于mysql高可用架构MHA相关的部署、应用透明(VIP)、邮件告警都已完结。

http://www.dtcms.com/a/473335.html

相关文章:

  • 做酒的网站有哪些jsp获取网站域名
  • OpenCV(八):NumPy
  • 小微宝安网站建设有哪些做分析图用的网站
  • RabbitMQ 核心概念解析
  • 开发实战 - ego商城 - 2 nodejs搭建后端环境
  • 基于Java Swing的智能数据结构可视化系统 | 支持自然语言交互的AI算法助手
  • QQmusic sign值逆向实战 - Webpack打包分析
  • 城乡建设部网站首页网站建设公司应该怎么做推广
  • Linux环境下Hive4.0.1(最新版本)部署
  • dolphinscheduler之hivecli 任务
  • spark3访问低版本hive填坑记
  • 池化 (Pooling) 学习笔记
  • LeetCode160.相交链表【最通俗易懂版双指针】
  • Neo4j+Gephi制作社区检测染色图
  • 毕业设计代做网站机械工信部网站备案流程
  • aws ec服务器设置密码登录,ec服务器root登录 aws服务器初始化配置
  • Linux - 命令行参数与环境变量
  • 【高并发服务器】四、通用类型容器any
  • linux学习笔记(29)网络编程——服务器客户端 及多进程多线程服务器
  • 边缘服务器 FTP/TFTP 服务搭建与使用(Docker 方式)
  • VMware安装Kali-Linux
  • (6)数据中心、台式(塔式)服务器、机架式服务器、刀片式服务器
  • 为什么 socket.io 客户端在浏览器能连接服务器但在 Node.js 中报错 transport close
  • Arbess CICD实战(10) - 使用Arbess+GitLab实现PHP项目自动化部署
  • 电子商务网站建设的作用广告视频拍摄制作
  • 深圳集团网站建设企业如何快速推广
  • 创新的商城网站建网站建设和优化
  • 学校网站开发背景wordpress 电影 插件
  • 进入官方网站电影网站开发现状
  • 网站建设各模块功能简述如何做网站营销推广