【MHA】MySQL高可用MHA源码1-主库故障监控

news2024/12/24 10:06:11

 

1 阅读之前的准备工作

1 一个IDE工具 ,博主自己尝试了vscode安装perl的插件,但是函数 、变量 、模块等都不能跳转,阅读起来不是很方便。后来尝试使用了pycharm安装perl插件,阅读支持跳转,自己也能写一些简单的测试样例,比较推荐。

2 对perl语法的简单了解。我是通过菜鸟教程 和 perl 官网去了解一些关键字,符号等的用法。perl 相比Python等其他语言,网上的资料还是比较少。而且perl语言给我的感觉是语法比较随性,关键字 符号比较多。遇到不是很理解的我都是查下官网然后动手测试下。

2 阅读版本

MHA 0.58

3 源码目录结构

4 脚本命令功能

masterha_check_repl 检查mysql复制关系
masterha_check_ssh 检查服务器免密ssh连通性
masterha_check_status 检查被mha监控的MySQL主库状态
masterha_conf_host 从配置文件中移除host或往配置文件中添加host
masterha_manager 监控mysql主库可用性并在不可用时进行切换
masterha_master_monitor  监控mysql主库可用性 (检测MHA运行状态)
masterha_master_switch 在线切换脚本
masterha_secondary_check 二次检查脚本 
masterha_stop 停止MHA进程

5 源码解读 

启动MHA会使用以下的命令

nohup masterha_manager --conf=/home/mha/conf/app1.cnf &

停止命令

masterha_stop --conf=/home/mha/conf/app1.cnf

所以我们阅读 MHA 源码,可以从 脚本masterha_manager.pl 作为程序的入口 ,本篇文章主要介绍 MHA如何 监控主实例 。

函数调用链如下

执行 masterha_manager  命令启动

         -->MHA::MasterMonitor::main

                -->wait_until_master_is_dead()

                        -->wait_until_master_is_unreachable()

                                -->wait_until_unreachable($)

 

大部分的监控逻辑在函数wait_until_master_is_unreachable中 ,以下是函数的源码阅读的流程图 

整体流程图 

 

源码阅读总结

监控主库故障的函数 是一个无限循环的函数,知道主库宕机或出现连接问题

1探活方式

ping_type (从 0.53 版本开始支持)
  • 默认情况下,MHA 建立到主服务器的持久连接,并通过执行 "SELECT 1"(ping_type=SELECT)检查主服务器的可用性。
  • 但在某些情况下,最好每次连接/断开连接都进行检查,因为它更严格,可以更快地检测到 TCP 连接级别的故障。设置 ping_type=CONNECT 可以实现这一点。
  • 从 0.56 版本开始,添加了 ping_type=INSERT。会创建一个库表,进行数据插入
CREATE DATABASE IF NOT EXISTS infra
INSERT INTO infra.chk_masterha values (1,unix_timestamp()) ON DUPLICATE KEY UPDATE val=unix_timestamp()

2 探活间隔

ping_interval


此参数说明 MHA Manager 多久 ping(执行 ping SQL 语句)一次主服务器。连续错过三个连接间隔后,MHA 管理器确定 MySQL 主服务器已死亡。因此,通过 ping 机制发现故障的最长时间是 ping 间隔的四倍。默认为 3(3 秒)。

如果 MHA Manager 由于太多连接或身份验证错误而无法连接,则不会将主服务器视为已死亡。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

达梦(DM) SQL日期操作及分析函数

达梦DM SQL日期操作及分析函数 日期操作SYSDATEEXTRACT判断一年是否为闰年周的计算确定某月内第一个和最后一个周末某天的日期确定指定年份季度的开始日期和结束日期补充范围内丢失的值按照给定的时间单位查找使用日期的特殊部分比较记录 范围处理分析函数定位连续值的范围查找…

【定制化体验:使用Spring Boot自动配置,打造个性化Starter】

项目结构 Pom <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4…

LabVIEW高效目标跟踪系统

LabVIEW高效目标跟踪系统 随着机器视觉技术的飞速发展&#xff0c;设计和实现高效的目标跟踪系统成为了众多领域关注的焦点。基于LabVIEW平台&#xff0c;结合NI Vision机器视觉库&#xff0c;开发了一种既高效又灵活的目标跟踪系统。通过面向对象编程方法和队列消息处理器程序…

【CTF Crypto】CTFShow 萌新 密码3 Writeup(摩尔斯电码+培根密码)

萌新 密码3 3 题目名称&#xff1a;我想吃培根 题目描述&#xff1a; – — .-. … . …–.- … … …–.- -.-. — — .-… …–.- -… …- - …–.- -… .- -.-. — -. …–.- … … …–.- -.-. — — .-… . .-. …–.- – – -… -… – -… – -… – – – -… -… -……

鸿蒙(HarmonyOS)性能优化实战-Trace使用教程

概述 OpenHarmony的DFX子系统提供了为应用框架以及系统底座核心模块的性能打点能力&#xff0c;每一处打点即是一个Trace&#xff0c;其上附带了记录执行时间、运行时格式化数据、进程或线程信息等。开发者可以使用SmartPerf-Host调试工具对Trace进行解析&#xff0c;在其绘制…

yudao-cloud微服务系统系统模块+后台管理系统成功运行

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 系列文章目录 第一章 芋…

精酿啤酒:酿造工艺的自动化与智能化发展

随着科技的不断进步&#xff0c;自动化与智能化已成为啤酒酿造工艺的重要发展方向。Fendi Club啤酒紧跟时代潮流&#xff0c;积极推动酿造工艺的自动化与智能化发展&#xff0c;旨在提高生产效率、确保产品品质和满足市场需求。 Fendi Club啤酒引入自动化生产设备。他们采用自动…

rabbitmq集群配置

1&#xff0c;配置环境变量 MY_POD_NAME&#xff1a;当前Pod的名称 RABBITMQ_ERLANG_COOKIE&#xff1a;设置Erlang Cookie用于节点间通信安全验证&#xff0c;值来自/nfs/rabbitmq/lib/.erlang.cookie文件内容 RABBITMQ_NODENAME&#xff1a;根据Pod名称动态生成了RabbitMQ…

Typora for Mac:轻量级Markdown编辑器

Typora for Mac是一款专为Mac用户设计的轻量级Markdown编辑器&#xff0c;它以其简洁的界面和强大的功能&#xff0c;成为了Markdown写作爱好者的首选工具。 Typora for Mac v1.8.10中文激活版下载 Typora的最大特色在于其所见即所得的编辑模式&#xff0c;用户无需关心复杂的M…

【软件】ERETCAD-Env:在轨空间环境3D动态仿真软件

文章介绍了Extreme-environment Radiation Effect Technology Computer-Aided Design – Environment (ERETCAD-Env)软件&#xff0c;文章的介绍和展示了ERETCAD-Env软件的功能和特点&#xff0c;这是一款用于动态模拟在轨卫星所处空间环境的计算机辅助设计软件。强调了该软件在…

TCP关闭连接时的一些思考

TCP协议是TCP/IP栈中最复杂的协议&#xff0c;它最大的优点是传输的可靠性&#xff0c;这通过面向连接、按序传输、超时重传、流量控制等机制保证其传输的可靠性。但这并不是我们今天要讨论的重点&#xff01; TCP通信的过程分别是三个阶段&#xff1a;建立连接、传输数据、关…

SpringCloud Hystrix 实战

一、配置 1.引入jar包 单独使用hystrix &#xff0c;不配合openFegin使用的话&#xff0c;单独使用hystrix,需要引入spring-cloud-starter-netflix-hystrix包。要使用的hystrix-dashboard 界面的话需要引入spring-boot-starter-actuator 包和spring-cloud-starter-netflix-hy…

SpringBoot中多数据源灵活切换解决方案

本篇内容介绍了“SpringBoot中如何使用Dynamic Datasource配置多数据源”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 源码地址/文档说明 功能特性: 支持 数据源分组…

通信原理(2)--随机过程

通信原理(2)–随机过程 3.1随机过程的基本概念 随机过程{x(t)}由一族时间函数 x i ( t ) x_i(t) xi​(t)&#xff0c;i1,2.3…组成&#xff0c;每一个时间函数 x i ( t ) x_i(t) xi​(t)称为随机过程{x(t)}的一个样本函数&#xff08;一个实现&#xff09; 每个样本函数在时间…

python-opencv实现最近邻插值和双线性插值对图片上采样

使用背景 当我们需要把图像进行放大或者缩小的时候&#xff0c;第一反应是使用resize()实现。很多情况下&#xff0c;我们会调用最近邻插值和双线性插值去放大图片&#xff0c;当然要说没有分辨率的损失那是不可能的&#xff0c;只能说在放大图片的过程中尽可能增加了图片的分…

Hybrid Homomorphic Encryption:SE + HE

参考文献&#xff1a; [NLV11] Naehrig M, Lauter K, Vaikuntanathan V. Can homomorphic encryption be practical?[C]//Proceedings of the 3rd ACM workshop on Cloud computing security workshop. 2011: 113-124.[MJS16] Maux P, Journault A, Standaert F X, et al. To…

Matlab|交直流系统潮流计算(含5种控制模式)

目录 1 主要内容 程序参考流程图 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序参考文献《交直流系统潮流计算及相互关联特性分析》&#xff0c;采用5种交直流潮流控制方式&#xff1a;1.定电流定电压 2.定电流定熄弧角 3.定功率定电压 4.定功率定熄弧角 5.定触发角…

Stable Diffusion 常用放大算法详解

常用放大算法 图像放大算法大致有两种&#xff1a; 传统图像放大算法&#xff08;Lantent、Lanczos、Nearest&#xff09;AI图像放大算法&#xff08;4x-UltraSharp、BSRGAN、ESRGAN等&#xff09; 传统图像放大算法是基于插值算法&#xff0c;计算出图像放大后新位置的像素…

用友政务财务系统 FileDownload 任意文件读取漏洞复现

0x01 产品简介 用友政务财务系统具有多项核心功能,旨在满足各类组织的财务管理需求。首先,它提供了财务核算功能,能够全面管理企业的总账、固定资产、现金、应付应收等模块,实时掌握企业的财务状况,并通过科目管理、凭证处理、报表分析等功能为决策提供有力支持。 0x02 …

Elcomsoft iOS Forensics Toolkit: iPhone/iPad/iPod 设备取证工具包

天津鸿萌科贸发展有限公司是 ElcomSoft 系列取证软件的授权代理商。 Elcomsoft iOS Forensics Toolkit 软件工具包适用于取证工作&#xff0c;对 iPhone、iPad 和 iPod Touch 设备执行完整文件系统和逻辑数据采集。对设备文件系统制作镜像&#xff0c;提取设备机密&#xff08…