Mysql—高可用集群MHA
1:什么是MHA?
MHA(Master High Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。
MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。
MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正意义上的高可用。
2:MHA 的组成
MHA由两部分组成:MHAManager (管理节点) MHA Node (数据库节点)
MHA Manager 可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台 slave 节点上。
MHA Manager 会定时探测集群中的 master 节点。
当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 master, 然后将所有其他的 slave 重新指向新的 master。
3:MHA 的特点
自动故障切换过程中,MHA从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失
使用半同步复制,可以大大降低数据丢失的风险,如果只有一个slave已经收到了最新的二进制日 志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数 据一致性
目前MHA支持一主多从架构,最少三台服务,即一主两从
4.MHA工作原理
目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群必须最少有3台数据库服务器, 一主二从,即一台充当Master,台充当备用Master,另一台充当从库。
MHA Node 运行在每台 MySQL 服务器上
MHAManager 会定时探测集群中的master 节点 当master 出现故障时,它可以自动将最新数据的slave 提升为新的master
然后将所有其他的slave 重新指向新的master,VIP自动漂移到新的master。
整个故障转移过程对应用程序完全透明。
5.MHA部署实施
5.1:搭建主两从架构
准备虚拟机:四台虚拟机:172.25.254.10,172.25.254.20,172.25.254.30,172.25.254.50
准备安装包MHA

172.25.254.50上与172.25.254.10,172.25.254.20,172.25.254.30做免密验证
[root@node4 ~]# ssh-keygen

172.25.254.50上与172.25.254.10做免密验证

[root@node4 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.10
输入密码172.25.254.10主机解析创建成功
172.25.254.50上与172.25.254.20做免密验证
[root@node4 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.20

输入密码172.25.254.20主机解析创建成功
172.25.254.50上与172.25.254.30做免密验证
[root@node4 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.30

输入密码172.25.254.30主机解析创建成功
确定本地解析是否存在
[root@node4 ~]# vim /etc/hosts

5.2:创建半同步模式
还原10,20,30主机的配置文件信息
172.25.254.10与172.25.254.20和172.25.254.30主机创建半同步模式
[root@node1 ~]# vim /etc/my.cnf

停止数据库
[root@node1 ~]# /etc/init.d/mysqld stop
清除mysql数据
[root@node1 ~]# rm -fr /data/mysql/*
对数据库进行初始化
[root@node1 ~]# mysqld --user=mysql --initialize

启动数据库
[root@node1 ~]# /etc/init.d/mysqld start
登录数据库,输入自己的密码
[root@node1 ~]# mysql -uroot -p'LEfu9_uS*B<h'

修改密码'lee'
mysql> alter user root@localhost identified by 'lee';
建立同步用户'lee'
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'lee';
同意远程授权
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
开启半同步模式
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
打开半同步功能
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
mysql> SHOW MASTER STATUS;
mysql> SHOW VARIABLES LIKE 'rpl_semi_sync%';
mysql> SHOW STATUS LIKE 'Rpl_semi_sync%';

同理172.25.254.20也进行相应的配置
[root@node2 ~]# vim /etc/my.cnf

停止数据库
[root@node2 ~]# /etc/init.d/mysqld stop
清除mysql数据
[root@node2 ~]# rm -fr /data/mysql/*
对数据库进行初始化
[root@node2 ~]# mysqld --user=mysql --initialize
[root@node2 ~]# /etc/init.d/mysqld start
[root@node2 ~]# mysql -uroot -p'kird_l5Pkg#0'

修改密码
mysql> alter user root@localhost identified by 'lee';
mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.10', MASTER_USER='repl', MASTER_PASSWORD='lee', MASTER_AUTO_POSITION=1;
开启slave模式
mysql> start slave;
加载半同步模块
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
打开半同步功能
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
mysql> STOP SLAVE IO_THREAD;
mysql> START SLAVE IO_THREAD;
mysql> SHOW STATUS LIKE 'Rpl_semi_sync%';
mysql> SHOW SLAVE STATUS\G


172.25.254.20与172.25.254.10主机建立半同步模式成功
172.25.254.30
[root@node3 ~]# vim /etc/my.cnf

停止数据库
[root@node2 ~]# /etc/init.d/mysqld stop
清除mysql数据
[root@node2 ~]# rm -fr /data/mysql/*
[root@node3 ~]# mysql -uroot -p'1;o0/rSwpg2L'

mysql> alter user root@localhost identified by 'lee';
mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.10', MASTER_USER='repl', MASTER_PASSWORD='lee', MASTER_AUTO_POSITION=1;
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
mysql> start slave;
mysql> SHOW SLAVE STATUS\G

172.25.254.30与172.25.254.10建立半同步模式成功
5.3:安装MHA所需要的软件
[root@node4 ~]# cd MHA-7/
[root@node4 MHA-7]# yum install *.rpm

在172.25.254.50传递软件包到172.25.254.10,172.25.254.20和172.25.254.30主机上
[root@node4 MHA-7]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root@172.25.254.10:/root
[root@node4 MHA-7]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root@172.25.254.20:/root
[root@node4 MHA-7]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root@172.25.254.30:/root

172.25.254.10,172.25.254.20和172.25.254.30主机上对传递的包进行安装
[root@node1 ~]# yum install mha4mysql-node-0.58-0.el7.centos.noarch.rpm
[root@node2 ~]# yum install mha4mysql-node-0.58-0.el7.centos.noarch.rpm
[root@node3 ~]# yum install mha4mysql-node-0.58-0.el7.centos.noarch.rpm
172.25.254.50上生成配置文件并解压压缩包
[root@node4 MHA-7]# mkdir /etc/masterha
[root@node4 MHA-7]# tar zxf mha4mysql-manager-0.58.tar.gz
将底下的文件app1.conf进行拷贝
[root@node4 MHA-7]# cd mha4mysql-manager-0.58/
[root@node4 mha4mysql-manager-0.58]# ls[root@node4 mha4mysql-manager-0.58]# cd samples/conf
[root@node4 conf]# cat masterha_default.cnf app1.cnf > /etc/masterha/app1.cnf

进入新拷贝的文件中修改配置文件
[root@node4 conf]# vim /etc/masterha/app1.cnf


由于172.25.254.10,172.25.254.20,172.25.254.30主机不允许建立远程连接
由于创建主从复制,172.25.254.10上建立远程连接就可以全部建立成功
mysql> CREATE USER root@'%' identified by 'lee';
mysql> grant ALL ON *.* to root@'%';
在172.25.254.50主机上进行检测将其底下文件传递到10,20和30主机上
[root@node4 ~]# cd .ssh/
[root@node4 .ssh]# ls

[root@node4 ~]#scp id_rsa root@172.25.254.10:/root/.ssh/
[root@node4 ~]#scp id_rsa root@172.25.254.20:/root/.ssh/
[root@node4 ~]#scp id_rsa root@172.25.254.30:/root/.ssh/

检测网络及SSH免密验证
[root@node4 ~]# masterha_check_ssh --conf=/etc/masterha/app1.cnf

保证了连接完整性
检测数据主从复制情况
[root@node4 ~]# masterha_check_repl --conf=/etc/masterha/app1.cnf

数据主从复制没有问题
至此MHA的部署完成!!!
相关文章:
Mysql—高可用集群MHA
1:什么是MHA? MHA(Master High Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切…...
MeshGS: Adaptive Mesh-Aligned GaussianSplatting for High-Quality Rendering 论文解读
目录 一、概述 二、相关工作 1、神经渲染 2、基于Mesh的渲染 3、基于点的渲染和高斯溅射 三、前置知识 1、SDF 2、Marching Cubes算法 四、MeshGS 1、初始化Mesh网格 2、基于Mesh的GS溅射 3、损失函数 一、概述 提出一种基于距离的高斯splatting,并且将高…...
JDK-23与JavaFX的安装
一、JDK-23的安装 1.下载 JDK-23 官网直接下载,页面下如图: 2.安装 JDK-23 2.1、解压下载的文件 找到下载的 ZIP 文件,右键点击并选择“解压到指定文件夹”,将其解压缩到您希望的目录,例如 C:\Program Files\Java\…...
LeetCode讲解篇之2266. 统计打字方案数
文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们使用逆向思维发现如果连续按存在三个字母的按键,最后一个按键表示的字母可以是某个字母连续出现一次、两次、三次这三种情况的方案数之和 我们发现连续按存在三个字母的按键,当连续按…...
2025推荐选题|基于MVC的农业病虫害防治平台的设计与实现
作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,…...
Vue 3 的不同版本总结
Vue 3 的不同版本(例如 3.x 系列的多个次版本)在语法和特性上有一些变化和改进。以下是 Vue 3 中随着版本迭代的一些语法变化和新特性的总结。 1. Vue 3.0: 初始发布 主要特性: 组合式 API (Composition API):引入 setup 函数&…...
在wpf 中 用mvvm 的方式 绑定 鼠标事件
在 wpf中, 如果遇到控件的 MouseEnter MouseLeave 属性时, 往往会因为有参数object sender, System.Windows.Input.MouseEventArgs e 很多人选择直接生成属性在后台, 破坏了MVVM, 这其实是不必要的. 我们完全可以用 xmlns:i“http://schemas.microsoft.com/xaml/behaviors” 完…...
TELEDYNE DALSA相机连接编码器
文章目录 对于线阵相机,欲令扫描拍照出来的图像不失真变形,则需要保证横向像素精度纵向像素精度,因此有下列等式成立: 现场的横向视野是650mm,横向实际像素是7663pixel,产线运动线速度为416.667mm/S,则可以计算出行频应…...
每天一个数据分析题(五百零八)- 机器学习模型
逻辑回归和支持向量机(SVM)都是经典的机器学习模型,逻辑回归和SVM的联系与区别,不正确的是? A. 二者都可以处理分类问题 B. 二者都可以增加不同的正则化项 C. 二者都是参数模型 D. SVM的处理方法是只考虑support v…...
leetcode栈与队列(一)-有效的括号
题目 . - 力扣(LeetCode) 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的…...
鸿蒙NEXT开发-知乎评论小案例(基于最新api12稳定版)
注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…...
重学SpringBoot3-集成Redis(十一)之地理位置数据存储
更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(十一)之地理位置数据存储 1. GEO 命令简介2. 项目环境配置2.1. 依赖引入2.2. Redis 配置 3. GEO 数据存储和查询实现3…...
Docker-compose 单节点管理、consul 注册中心、registrator、template
consul是一个基于分布式的服务发现和配置管理工具。它具有快速构建分布式架构,提供服务发现和服务注册功能。consul职能:1、自动发现、注册;2、自动配置;3、自动更新 服务发现:自动检查网络中的服务(如数据…...
制药企业MES与TMS的数据库改造如何兼顾安全与效率双提升
*本图由AI生成 在全球制造业加速数字化转型的浪潮中,一家来自中国的、年营业额超过200亿元的制药企业以其前瞻性的视角和果断的行动,成为该行业里进行国产化改造的先锋。通过实施数据库改造试点项目,该企业实现了其关键业务系统MES࿰…...
Spring Boot比Spring多哪些注解
Spring Boot 是 Spring 框架的扩展,它旨在简化 Spring 应用程序的初始搭建以及开发过程。与 Spring 相比,Spring Boot 提供了许多额外的注解来进一步简化配置和开发工作。以下是 Spring Boot 特有的一些核心注解,这些注解在 Spring 中不可用&…...
985研一学习日记 - 2024.10.17
一个人内耗,说明他活在过去;一个人焦虑,说明他活在未来。只有当一个人平静时,他才活在现在。 日常 1、起床6:00√ 2、健身1个多小时 今天练了二头和背部,明天练胸和三头 3、LeetCode刷了3题 旋转图像:…...
牛客SQL29详解 计算用户的平均次日留存率
牛客SQL29详解 计算用户的平均次日留存率 牛客SQL29详解 计算用户的平均次日留存率 叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧! 牛客SQL29详解 计算用户的平均次日留存率 题目&#x…...
Redis --- 第四讲 --- 常用数据结构 --- 其他类型stream、bitmap……。补充内容scan命令。
通过前面的学习,我们已经学习了Redis最关键的五个数据结构:String、List、Hash、Set、ZSet。这五个数据结构应用广泛,频繁使用。 redis中包含的所有类型,下面将要介绍不常用的类型。 一、streams类型介绍 事件、epoll/IO多路复…...
Java多线程--实现跑马小游戏
线程的实现方式 继承Thread类:void run()方法没有返回值,无法抛异常实现Runnable接口:void run()方法没有返回值,无法抛异常实现Callable接口:V call() throws Exception 返回结果,能够抛异常 实现Callab…...
扫雷(C 语言)
目录 一、游戏设计分析二、各个步骤的代码实现1. 游戏菜单界面的实现2. 游戏初始化3. 开始扫雷 三、完整代码四、总结 一、游戏设计分析 本次设计的扫雷游戏是展示一个 9 * 9 的棋盘,然后输入坐标进行判断,若是雷,则游戏结束,否则…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
