MHA集群

news2025/3/11 11:14:37

一.MHA集群

MHA master high avavibility 主服务器高可用

如上图所示,我们之前说过,如果在主从复制架构中主服务器出现故障,就需要我们将从服务器作为主服务器,等故障的主服务器修复好之后,再将修好的主服务器作为从服务器连接到主服务器中。

此时我们进行这个操作的时候,会有一个时间间隔。

MHA的作用就相当于是一个监控一样,MHA搭建好之后,就可以实时的监控主服务器的运行状态。

一旦检测到主服务器发生故障之后,MHA就会在现有的从服务器中提升一个从服务器作为主服务器,并且MHA还能将之前的从服务器自动连接到新的主服务器上,MHA主要适用的是一主多从的环境,

应用场景:一主多从的环境

作用:提升主从复制环境中主服务器的可用性,尽量减少故障时间,

周期性检测主服务器的运行状态,一旦检测到主服务器故障后,会在现有的从服务器中选举一个新主服务器,并把其他的从服务器自动连接到新主服务器上,继续维持主从复制的运行,

问题:将来一主多从的环境中主服务器故障的时候,将哪个从服务器提升为主服务器?

在主从复制中一直存在的是时间延迟的问题,将来在数据量很大的情况下,我们就要看哪个从服务器复制的数据最多,我们就将那个从服务器作为新的主服务器,

如上图所示,我们如何去查看哪个从服务器复制的数据多呢?

show slave status\G

我们就去看这行数据,哪个从服务器的这行数据大,就表示复制的数据多,。

同时MHA会尝试记录主服务器的二进制日志信息,将来在新选举出来的主服务器上自动应用二进制日志信息,确保数据的完整性会将其他slave服务器自动连接到新的master服务器对于前端应用程序全是透明的。【如果检测不到旧的主服务器的二进制日志文件,那就需要人为干预了,人为获取旧主服务器二进制日志文件内容,】

MHA也可以做集群,来避免MHA的单点故障。

MHA角色:

1.mha-manager  mha管理者

建议将其部署在独立的服务器上,用于检测主服务器的运行状态

2.mha-node mha客户端

部署所有数据库服务器上,具体作用是mha管理者与所有机器来进行通信。

二.部署MHA集群

环境描述:

192.168.183.10          MHA  Manager  +MHA  node

192.168.183.11           master服务器    mha_node

192.168.183.12           slave服务器    mha_node

192.168.183.13           slave服务器      mha_node

1.关闭防火墙  selinux  时间同步

2.配置免密ssh

如上图所示,在生成密钥以后,将这个公钥文件夹的名字进行修改,改成ssh认证服务要求的名字,随后将整个文件夹拷贝给其他的机器。

在mha 管理者上生成密钥,随后将这个密钥拷贝给其他的机器。

3.添加所有机器上添加所有主机名解析。

如上图所示,在一台mha管理者的机器上添加好主机名解析之后,将这个文件拷贝给其他的机器,。

4.确保所有机器时间同步

如上图所示,检测所有机器时间同步

5.在mha管理机上安装mha相关软件

使用阿里的epel源。

如上图所示,在管理机上安装如上的两个软件。

6.在所有数据库服务器上安装mha4mysql-node软件

7.配置一主两从环境

1)在所有数据库服务器上启用二进制日志

在所有机器上将MySQL数据库安装好,即命令yum  install -y  mariadb-server

如上图所示,第一是在配置一主两从的环境中所有机器必须要启动二进制日志,

如上图所示,给每一个机器去配置server_id以及开启二进制日志,以及开启和自启动数据库。

第二创建允许所有主机远程连接的复制用户

如上图所示,在主服务器上创建好远程复制用户之后,分别在12和13的机器上去建立连接,去链接11这个主服务器。

3)配置从服务器连接主服务器,确保三台服务器都有远程复制用户。

如上图所示,这是在12的机器上创建连接,随后启动复制线程,随后使用show slave status\G 来查看复制线程状态。

如上图所示,如果在 从服务器上创建的连接操作没有错误的话,那么在主服务器上创建的用户就会在从服务器上也创建出来,。

如上图所示,我们也在这个机器上连接与主服务器的连接,然后启动复制线程,去使用命令show slave  status\G来去查看复制线程状态。

8.创建MHA需要的管理用户

如上图所示,这是在主服务器创建4个用户,管理用户需要有4个,允许MHA集群中的任何一个机器去连接他们。

9.创建mha  manager工作目录

10.编辑mha的配置文件

如上图所示,这就是MHA的配置文件。

如上图所示,这是MHA的配置文件。

11.检测免密ssh是否正常

12.检测一主两从环境是否正常

 

如上图所示,可以看到MySQL复制环境是好的,

13.启动MHA集群

14.验证MHA集群

一旦MHA完成一次选举之后MHA进程自己就停止了。

如上图所示,MHA进程停止,

如上图所示,只有当故障的主服务器被修好,作为从服务器连接到主服务器之后,MHA进程才能恢复正常,

15.修复故障的主机,将其作为从服务器连接到主服务器上,

如上图所示,在新主服务器上进行一个完全的数据备份,

随后将这个备份拷贝给11的机器。

如上图所示,在从服务器上建立指向主服务器的连接。

随后在从服务器上启动IO线程和SQL线程,

随后在mha的机器上启动mha线程。

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

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

相关文章

Bazel搭建CUDA工程入门

环境版本: 工程目录: 测试输出: WORKSPACE 参考仓库:CUDA rules for Bazel 及 examples load("bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")http_archive(name "rules_cuda…

QILSTE灯珠:尺寸光电全解析

QILSTE灯珠:尺寸光电全解析 🌟 型号H4-115BGRYA/5M,由QILSTE(HongKong)Technology Co., Ltd精心打造,以其1.6x1.5x0.4mm的紧凑外观尺寸,展现高亮红光、翠绿、蓝的缤纷色彩。 📏 尺寸…

golang从入门到做牛马:第一篇-我与golang的缘分,go语言简介

还记得2018年的夏天,刚毕业的我不知道该做些什么,于是自学了一周的go语言,想要找一份go语言工作的代码,当时的go还没有go mod来管理依赖包,在北京找了一个月的工作,找到了一个小公司做了后端开发,当然使用go语言开发,带着兴奋劲,年轻身体也好,边努力学习,边工作。 时…

用IdleHandler来性能优化及原理源码分析

背景: 经常在做一些app冷启动速度优化等性能优化工作时候,经常可能会发现有时候需要引入一些第三方sdk,或者库,这些库一般会要求我们在onCreate中进行初始化等,但是onCreate属于生命周期的回调方法,如果on…

如何在WPS中接入DeepSeek并使用OfficeAI助手(超细!成功版本)

目录 第一步:下载并安装OfficeAI助手 第二步:申请API Key 第三步:两种方式导入WPS 第一种:本地大模型Ollama 第二种APIKey接入 第四步:探索OfficeAI的创作功能 工作进展汇报 PPT大纲设计 第五步:我的使用体验(体验建议) …

Swagger-01.介绍和使用方式

一.Swagger介绍 有了接口文档,我们就可以根据接口文档来开发后端的代码了。如果我们开发完了某个功能,后端如何验证我们开发的是否正确呢?我们就需要测试,使用Swagger就可以帮助后端生成接口文档,并且可以进行后端的接…

Unity 使用NGUI制作无限滑动列表

原理: 复用几个子物体,通过子物体的循环移动实现,如下图 在第一个子物体滑动到超出一定数值时,使其放到最下方 --------------------------------------------------------------》 然后不停的循环往复,向下滑动也是这…

【并发编程】聊聊定时任务ScheduledThreadPool的实现原理和源码解析

ScheduledThreadPoolExecutor 是在线程池的基础上 拓展的定时功能的线程池,主要有四种方式,具体可以看代码, 这里主要描述下 scheduleAtFixedRate : 除了第一次执行的时间,后面任务执行的时间 为 time MAX(任务执行时…

Java-servlet(三)Java-servlet-Web环境搭建(下)详细讲解利用maven和tomcat搭建Java-servlet环境

Java-servlet(三)Java-servlet-Web环境搭建(下)利用maven和tomcat搭建Java-servlet环境 前言一、配置maven阿里镜像二、利用IDEA创建maven文件创建maven文件删除src文件创建新的src模版删除example以及org文件 三、在第二个xml文件…

如何选择DevOps平台?GitHub、GitLab、BitBucket、Jenkins对比与常见问题解答

本文内容来源github.com,由GitHub中国授权合作伙伴-创实信息进行翻译整理。 欢迎通过021-61210910、customershcsinfo.com联系我们,免费试用GitHub企业版。 软件是当今领先企业的核心,而开发者则是软件的核心。GitHub作为一个完整的开发者平台…

react中的fiber和初次渲染

源码中定义了不同类型节点的枚举值 组件类型 文本节点HTML标签节点函数组件类组件等等 src/react/packages/react-reconciler/src/ReactWorkTags.js export const FunctionComponent 0; export const ClassComponent 1; export const IndeterminateComponent 2; // Befo…

闭包+求解候选码+最小函数依赖集

一、闭包 直接上例题 简单明了 A的闭包ABC ABC的闭包ABCD ABCD的闭包ABCDE ABCDE的闭包ABCDEG 等于集合R的全集 所以A的闭包为ABCDEG AB的闭包为ABC 二、候选码 答案: 三、最小函数依赖集 求F的最小函数依赖集 去掉多余的 然后! 化为最简

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,添加表格空状态提示,带插图的空状态,Table7空状态2

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

Unity Shader 学习15:可交互式雪地流程

本质是 利用顶点变换实现的: 通过一个俯视整个场地的正交摄像机,根据绑定在移动物体身上的粒子系统,来获取物体移动过的位置,记录到一张RenderTexture上作为轨迹图,再通过这张图来对雪地做顶点变换。 1. 由于顶点变换需…

嵌入式开发之串行数据处理

前题 前面几篇文章写了关于嵌入式软件开发时,关于串行数据处理的一些相关内容,有兴趣的可以看看《嵌入式开发:软件架构、驱动开发与串行数据处理》、《嵌入式软件开发之生产关系模型》和《嵌入式开发之Modbus-RTU协议解析》相关的内容。从业十…

Centos的ElasticSearch安装教程

由于我们是用于校园学习,所以最好是关闭防火墙 systemctl stop firewalld systemctl disable firewalld 个人喜欢安装在opt临时目录,大家可以随意 在opt目录下创建一个es-standonely-docker目录 mkdir es-standonely-docker 进入目录编辑yml文件 se…

SyntaxError: Unexpected token ‘xxx‘

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…

Unity自定义区域UI滑动事件

自定义区域UI滑动事件 介绍制作1.创建一个Image2.创建脚本 总结 介绍 一提到滑动事件联想到有太多的插件了比如EastTouchBundle,今天想单纯通过UI去做一个滑动事件而不是基于Box2d或者Box去做滑动事件。 制作 1.创建一个Image 2.创建脚本 using UnityEngine; us…

单链表封装 - 使用JavaScript封装

痛苦就是在蜕变吗 目录 链表:链表的特点:单链表:单链表的封装- JS封装: 单链表的应用:解决回文:解决击鼓传花:十进制进制转换其他进制: 链表: 链表就是一种物理存储单元…

TypeError: Cannot convert object to primitive value

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…