第97讲:MHA高可用集群模拟主库故障以及修复过程

news2024/11/20 6:25:52

文章目录

    • 1.分析主库故障后哪一个从库会切换为主库
    • 2.模拟主库故障观察剩余从库的状态
      • 2.1.模拟主库故障
      • 2.3.当前主从架构
    • 3.修复故障的主库
      • 3.1.修复主库
      • 3.2.当前主从架构
      • 3.3.恢复MHA

1.分析主库故障后哪一个从库会切换为主库

在模拟MHA高可用集群主库故障之前,我们先来分析一下,主库故障后,谁会切换为新主库。

Manager组件选举新主库的过程:

Manager组件选举新主库有三种算法:

  • 当主库故障后,如果配置文件中有声明哪个节点强制为主库,该节点会强制提升为新的主库。
  • 当主库故障后,判断剩余从库谁的数据最新(根据Position或者GTID来判断),谁复制主库的数据最多,最多的节点提升为新主库。
  • 当主库故障后,如果剩余从库的Position或者GTID都一一致,也就意味着剩余从库复制的数据都一样多,那么此时就会根据配置文件中的书写顺序,从上到下,最上面的那个节点会成为新主库。

我们并没有在MHA中配置强制主库的参数,因此第一个算法不会生效,根据所有从库的信息来看,和主库的数据是一模一样的,不存在数据差异,因此第二个算法也不会生效,而在MHA的配置文件中,是根据主从从节点的顺序来书写的,mysql-1、mysql-2、mysql-3,根据第三个算法,那么当主库故障后,mysql-2这个节点的从库会提升为主库。

image-20220709161120631

在模拟故障之前,一定要保证MHA是运行的,否则不会切换主从。

2.模拟主库故障观察剩余从库的状态

2.1.模拟主库故障

1)模拟主库故障

[root@mysql-1 ~]# systemctl stop mysqld

2)观察mysql-2中的从库是否会成为新主库

mysql-2中的从库已经成为新的主库了,当查看slave的状态时,没有任何输出,就表示它是主库。

[root@mysql-2 ~]# mysql -uroot -p123456
mysql> show slave status \G;
Empty set (0.00 sec)

ERROR: 
No query specified

image-20220709161813983

3)观察mysql-3从库的状态信息

此时mysql-3上的从库已经开始复制mysql-2这个新主库了,MHA故障切换成功,保障了高可用

image-20220709161853375

故障切换完成后,MHA会自动自杀,一次性高可用故障切换。

image-20220709161948336

故障切换的过程可以在MHA的日志中看到。

image-20220709163248361

2.3.当前主从架构

主库已经故障,mysql-2成为了新主库,mysql-3复制mysql-2的数据。

image-20220709163033574

3.修复故障的主库

3.1.修复主库

当我们得知主库故障,并且顺利进行故障切换,使从库成为主库,重新设置了主从关系,保证业务的高可用之后,我们就需要去修复主库了,MHA已经将mysql-2这个从库提升为新的主库了,我们也不需要去改变现有的主从关系,直接让恢复的主库复制现有的主库即可,避免破坏现有主从关系,导致业务中断。

MHA切换主库,就好比某个皇帝(大明战神 明堡宗)御驾亲征,最后被俘虏了(主库故障),他的弟弟临危受命当了皇帝(mysql-2成为了新主),结果哥哥重新回来后(主库修复),居然夺门,废了弟弟的皇位(想重新成为主),实在不地道了。

1)修复主库

[root@mysql-1 ~]# systemctl start mysqld

2)配置故障的主库复制新主库mysql-2

关于复制参数,我们可以从mha的日志中获取。

[root@mysql-3 ~]# grep 'CHANGE MASTER TO' /data/mha/logs/manager.log
Sat Jul  9 16:15:20 2022 - [info]  All other slaves should start replication from here. Statement should be: CHANGE MASTER TO MASTER_HOST='192.168.20.12', MASTER_PORT=3306, MASTER_AUTO_POSITION=1, MASTER_USER='replicas', MASTER_PASSWORD='xxx';

配置故障主库复制新主库。

mysql> CHANGE MASTER TO
  MASTER_HOST='192.168.20.12',
  MASTER_USER='replicas',
  MASTER_PASSWORD='123456',
  MASTER_PORT=3306,
  MASTER_AUTO_POSITION=1;
mysql> start slave;

故障的主库已经成功的修复完成,并且已经成为mysql-2新主库的从库。

image-20220709164716067

3.2.当前主从架构

mysql-2是主库,mysql-1是故障主库,恢复后成为了mysql-2的从库。

image-20220709164846865

3.3.恢复MHA

MHA在完成一次故障切换后,会自动杀死自己,因此我们需要去恢复MHA,首先将故障的主库重新添加到配置文件中,因为MHA切换时会将故障的节点从配置文件中删除,然后再启动MHA即可。

1)将故障的主库重新加入到配置文件中

[root@mysql-3 ~]# vim /data/mha/app1.cnf 
[server1]
hostname=192.168.20.11
port=3306

2)启动MHA

[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 &

3)查看状态

[root@mysql-3 ~]# masterha_check_status --conf=/data/mha/app1.cnf
app1 (pid:11050) is running(0:PING_OK), master:192.168.20.12

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

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

相关文章

jenkins 发布远程服务器并部署项目

安装参考另一个文章 配置maven 和 jdk 和 git 注意jdk的安装目录&#xff0c;是jenkins 安装所在服务器的jdk目录 注意maven的目录 是jenkins 安装所在服务器的maven目录 注意git的目录 是jenkins 安装所在服务器的 git 目录 安装 Publish Over SSH 插件 配置远程服务器 创…

C++之函数重载,默认参数,bool类型,inline函数,异常安全

函数重载 在实际开发中&#xff0c;有时候需要实现几个功能类似的函数&#xff0c;只是细节有所不同。如交换两个变量的值&#xff0c;但这两种变量可以有多种类型&#xff0c;short, int, float等。在C语言中&#xff0c;必须要设计出不同名的函数&#xff0c;其原型类似于&am…

DockerUI如何部署结合内网穿透实现公网环境管理本地docker容器

文章目录 前言1. 安装部署DockerUI2. 安装cpolar内网穿透3. 配置DockerUI公网访问地址4. 公网远程访问DockerUI5. 固定DockerUI公网地址 前言 DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基…

如何部署Linux AMH服务器管理面板并结合内网穿透远程访问

文章目录 1. Linux 安装AMH 面板2. 本地访问AMH 面板3. Linux安装Cpolar4. 配置AMH面板公网地址5. 远程访问AMH面板6. 固定AMH面板公网地址 AMH 是一款基于 Linux 系统的服务器管理面板&#xff0c;它提供了一系列的功能&#xff0c;包括网站管理、FTP 管理、数据库管理、DNS 管…

容器和镜像

容器和镜像是现代软件开发和部署中重要的概念&#xff0c;它们通常与容器化技术&#xff08;如Docker&#xff09;相关联。以下是它们的基本定义和关系&#xff1a; 容器(Container): 容器是一种轻量级、可移植的运行环境&#xff0c;其中包含了应用程序及其依赖项&#xff08;…

leet code141. 环形链表(投机取巧法)只要9行代码!!不看后悔!

今天在力扣上做到这个题 当我看到了10000时我突然想到一种很投机取巧的方法&#xff0c;我们直接链表循环&#xff0c;然后当它循环到10001次的时候我们就直接能说明它是循环链表了&#xff01; 代码实现(小学生都能看懂) bool hasCycle(struct ListNode *head) { int add…

【HarmonyOS应用开发】APP应用的通知(十五)

相关介绍 通知旨在让用户以合适的方式及时获得有用的新消息&#xff0c;帮助用户高效地处理任务。应用可以通过通知接口发送通知消息&#xff0c;用户可以通过通知栏查看通知内容&#xff0c;也可以点击通知来打开应用&#xff0c;通知主要有以下使用场景&#xff1a; 显示接收…

黑豹程序员-ElementPlus支持树型组件带图标以及icon避坑

效果 vue代码 参数说明&#xff1a;node当前节点&#xff0c;data当前节点后台传入数据。 el-tree自身不支持图标&#xff0c;需要自己去利于实现&#xff0c;并有个坑&#xff0c;和elementui写法不同。 <el-col :span"12"><el-form-item label"绑定…

Spring Web Header 解析常见错误

在上一章&#xff0c;我们梳理了 URL 相关错误。实际上&#xff0c;对于一个 HTTP 请求而言&#xff0c;URL 固然重要&#xff0c;但是为了便于用户使用&#xff0c;URL 的长度有限&#xff0c;所能携带的信息也因此受到了制约。 如果想提供更多的信息&#xff0c;Header 往往…

对多面体数据进行裁剪和加盖的功能

开发环境&#xff1a; Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example demo解决问题&#xff1a;对多面体数据进行裁剪和加盖的功能。 关键点&#xff1a; 创建了一个平面&#xff0c;并将其定位在输入多面体数据的中心位置&#xff…

Python 数据分析(PYDA)第三版(六)

原文&#xff1a;wesmckinney.com/book/ 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 十二、Python 建模库介绍 原文&#xff1a;wesmckinney.com/book/modeling 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 此开放访问网络版本的《Python 数据分析第三版…

【Vue】3-3、Vue 3.3 新特性 Pinia

一、Vue 3.3 新特性 1、defineOptions 有 <script setup> 之前&#xff0c;如果要定义 props&#xff0c;emits 可以轻而易举地添加一个与 setup 平级的属性 但是用了 <script setup> 后&#xff0c;就没法这么干了&#xff0c;setup 属性已经没有了&#xff0c…

Pyth 预言机: 它们如何影响Hover?

所有链上借贷市场都使用一种称为“oracle&#xff08;预言机&#xff09;”的服务&#xff0c;为dApp提供代币定价。Oracle是一个数据系统&#xff0c;将链下信息&#xff08;例如KuCoin上的BTC/USDT价格&#xff09;传递到链上合约。从那里&#xff0c;应用程序可以支付一小笔…

Matplotlib 绘图实践:从基础到高级技巧【第62篇—python:Matplotlib绘图】

文章目录 Matplotlib绘图模块基础入门大全1. 安装Matplotlib2. 绘制基本图形3. 自定义图形样式4. 多子图布局5. 高级绘图技巧6. 绘制实时动态图7. 图形注释与标记8. 颜色映射与散点图9. 绘制直方图10. 绘制饼图11. 绘制热力图 总结 Matplotlib绘图模块基础入门大全 Matplotlib…

RabbitMQ-1.介绍与安装

介绍与安装 1.RabbitMQ1.0.技术选型1.1.安装1.2.收发消息1.2.1.交换机1.2.2.队列1.2.3.绑定关系1.2.4.发送消息 1.2.数据隔离1.2.1.用户管理1.2.3.virtual host 1.RabbitMQ 1.0.技术选型 消息Broker&#xff0c;目前常见的实现方案就是消息队列&#xff08;MessageQueue&…

深度神经网络中的BNN和DNN:基于存内计算的原理、实现与能量效率

前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言引言内存计算体系结构深度神经网络&#xff08;DNN&#xff09;随机梯度的优…

搭建自己的私服 maven 仓库

申明&#xff1a;本文章所使用docker-compose配置文件纯属学习运用&#xff0c;非商用如有雷同请联系本人协调处理。 一、配置docker-compose.yml文件 # 指定docker-compose的版本 version: 3 services: nexus: container_name: nexus_container image: sonatype/nex…

扩展鸿蒙ArkUI日期组件

鸿蒙ArkUI日期组件使用的是DatePickerDialog.show基础上扩展的表单式输入组件&#xff0c;方便在输入日期方式快速使用及复用。 /*** 日期*/ Component export default struct DiygwDate{//绑定的值Link Watch(onValue) value:string;// 隐藏值State valueField: string valu…

【机器学习】某闯关类手游用户流失预测

Final Project: 某闯关类手游用户流失预测 1 案例简介 手游在当下的日常娱乐中占据着主导性地位&#xff0c;成为人们生活中放松身心的一种有效途径。近年来&#xff0c;各种类型的手游&#xff0c;尤其是闯关类的休闲手游&#xff0c;由于其对碎片化时间的利用取得了非常广泛…

Sui上TVL突破5亿美元,位列DeFi榜单前十名和最活跃链前五名

2023年Sui上DeFi协议迅速增长&#xff0c;2024年这一势头仍在继续&#xff0c;根据DeFiLlama报告Sui上TVL近期超过5亿美元。在不到一年的时间里就达到这个金额&#xff0c;得益于Sui的突破性指标&#xff0c;比如其峰值TPS接近6,000。 Sui TVL突破5亿美元&#xff0c;登上DeFi…