【Mariadb高可用MHA】

目录

一、概述

1.概念

2.组成

3.特点

4.工作原理

二、案例介绍

1.192.168.42.3

2.192.168.42.4

3.192.168.42.5

4.192.168.42.6

三、实际构建MHA

1.ssh免密登录

1.1 所有节点配置hosts

1.2 192.168.42.3

1.3 192.168.42.4

1.4 192.168.42.5

1.5 192.168.42.6

1.6 测试

2.主从复制

2.1 master

2.2 slave(两个都要配)

2.3 验证

3.MHA安装

3.1 所有节点安装perl环境

3.2 node

3.2.1 所有节点安装node

3.2.2 验证

3.3 manager

3.3.1 安装

3.3.2 脚本说明

3.3.3 配置文件建立

3.3.4 目录创建

3.3.5 测试MHA

3.3.6 启动命令 

3.3.7 启动时masterIP异常

4.测试

5.故障恢复


一、概述

1.概念

  • MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。
  • MHA 的出现就是解决MySQL 单点的问题。
  • MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。
  • MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正意义上的高可用。

2.组成

  • MHA manager:管理节点
  • MHA node:数据节点(每个节点上都需要安装)

3.特点

  • 自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失
  • 使用半同步复制,可以大大降低数据丢失的风险,如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性
  • 目前MHA支持一主多从架构,最少三台服务,即一主两从

4.工作原理

  • 从宕机崩溃的master 保存二进制日志事件(binlog events);
  • 识别含有最新的更新slave日志
  • 应用差异的中继日志(relay log)到其他的slave
  • 应用从master保存的二进制日志事件
  • 提升一个slave为新的master
  • 使其他的slave连接新的master进行复制

二、案例介绍

1.192.168.42.3

用作manager(MHA),即mgt

2.192.168.42.4

用作master

3.192.168.42.5

用作slave1

4.192.168.42.6

用作slave2

:192.168.42.4 | 5 | 6,为node

三、实际构建MHA

1.ssh免密登录

1.1 所有节点配置hosts

vim /etc/hosts

        192.168.42.3    mgt
        192.168.42.4    master
        192.168.42.5    slave1
        192.168.42.6    slave2

        

1.2 192.168.42.3

ssh-keygen
for i in 4 5 6;do ssh-copy-id root@192.168.42.$i;done

1.3 192.168.42.4

ssh-keygen
for i in 3 5 6;do ssh-copy-id root@192.168.42.$i;done

1.4 192.168.42.5

ssh-keygen
for i in 4 3 6;do ssh-copy-id root@192.168.42.$i;done

 

1.5 192.168.42.6

ssh-keygen
for i in 4 5 3;do ssh-copy-id root@192.168.42.$i;done

1.6 测试

for i in 3 4 5;do ssh 192.168.42.$i hostname;done

2.主从复制

2.1 master

vim  /etc/my.cnf 

        [mysqld]
        server-id = 20
        log-bin = master-bin
        log-slave-updates = true

systemctl restart mariadb

mysql -e "grant replication slave on *.* to 'myslave'@'192.168.42.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.42.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.42.3' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.42.5' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.42.6' identified by '123.com';"

mysql -e "show master status";

2.2 slave(两个都要配)

vim  /etc/my.cnf

        server-id=30
        log-bin=master-bin
        relay-log=relay-log-bin
        relay-log-index=relay-log-bin.index

systemctl restart mariadb

mysql -e "grant replication slave on *.* to 'myslave'@'192.168.42.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.42.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.42.3' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.42.5' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.42.6' identified by '123.com';"

mysql -e "change master to master_host='192.168.42.4',master_user='myslave',master_password='123.com',master_log_file='master-bin.000003',master_log_pos=1002;"

mysql -e "slave start;"

2.3 验证

master
    mysql -e "create database ea;"


slave1
    mysql -e "show databases;"

 

slave2
    mysql -e "show databases;"

3.MHA安装

3.1 所有节点安装perl环境

yum install epel-release -y
yum -y install perl-DBD-MySQL perl-ExtUtils-MakeMaker perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes perl-CPAN

3.2 node

3.2.1 所有节点安装node

tar xf mha4mysql-node-0.57.tar.gz
cd mha4mysql-node-0.57
perl Makefile.PL && make && make install

 

3.2.2 验证

cd /usr/local/bin
看到脚本就OK

 

3.3 manager

3.3.1 安装

tar xf mha4mysql-manager-0.57.tar.gz
cd /root/mha4mysql-manager-0.57
perl Makefile.PL && make && make install


cp samples/scripts/master_ip_failover /usr/local/bin/
cp samples/scripts/master_ip_online_change     /usr/local/bin/

3.3.2 脚本说明

master_ip_failover    自动切换时 VIP 管理的脚本
master_ip_online_change    在线切换时 vip 的管理
power_manager    故障发生后关闭主机的脚本
send_report    因故障切换后发送报警的脚本

3.3.3 配置文件建立

mkdir /etc/masterha
vim /etc/masterha/app1.cnf

3.3.4 目录创建

 mkdir /var/log/masterha/app1

 

3.3.5 测试MHA

 vim /usr/local/bin/master_ip_failover

masterha_check_ssh --conf=/etc/masterha/app1.cnf
masterha_check_repl --conf=/etc/masterha/app1.cnf

3.3.6 启动命令 

nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &

3.3.7 启动时masterIP异常

需要工程手动配置VIP

4.测试

停用master的mariadb服务

systemctl stop mariadb

切换到slave1上 

ip a

 成功。

5.故障恢复

修改app1.cnf启动配置:添加master主机配置信息
分别在slave上重新指定master主机及binlog日志同步信息


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

听GPT 讲Prometheus源代码--rules

Prometheus的rules目录主要包含规则引擎和管理规则的文件: engine.go 该文件定义了规则引擎的接口和主要结构,包括Rule,Record,RuleGroup等。它提供了规则的加载、匹配、评估和结果记录的功能。 api.go 定义了用于管理和查询规则的RESTful API,包括获取、添加、删除规则等方法。…

中大型无人机远程VHF语音电台系统方案

方案背景 中大型无人机在执行飞行任务时&#xff0c;特别是在管制空域飞行时地面航管人员需要通过语音与无人机通信。按《无人驾驶航空器飞行管理暂行条例》规定&#xff0c;中大型无人机应当进行适航管理。物流无人机和载人eVTOL都将进行适航管理&#xff0c;所以无人机也要有…

计算机组成与设计 Patterson Hennessy 笔记(二)MIPS 指令集

计算机的语言&#xff1a;汇编指令集 也就是指令集。本书主要介绍 MIPS 指令集。 汇编指令 算数运算&#xff1a; add a,b,c # abc sub a,b,c # ab-cMIPS 汇编的注释是 # 号。 由于MIPS中寄存器大小32位&#xff0c;是基本访问单位&#xff0c;因此也被称为一个字 word。M…

AI搜索引擎助力科学家创新

开发者希望通过帮助科学家从大量文献中发现联系从而解放科学家&#xff0c;让他们专注于发现和创新。 图片来源&#xff1a;The Project Twins 对于专注于历史的研究者Mushtaq Bilal来说&#xff0c;他在未来科技中投入了大量时间。 Bilal在丹麦南部大学&#xff08; Universit…

SpringBoot + Vue 前后端分离项目 微人事(九)

职位管理后端接口设计 在controller包里面新建system包&#xff0c;再在system包里面新建basic包&#xff0c;再在basic包里面创建PositionController类&#xff0c;在定义PositionController类的接口的时候&#xff0c;一定要与数据库的menu中的url地址到一致&#xff0c;不然…

[python爬虫] 爬取图片无法打开或已损坏的简单探讨

本文主要针对python使用urlretrieve或urlopen下载百度、搜狗、googto&#xff08;谷歌镜像&#xff09;等图片时&#xff0c;出现"无法打开图片或已损坏"的问题&#xff0c;作者对它进行简单的探讨。同时&#xff0c;作者将进一步帮你巩固selenium自动化操作和urllib…

部署工业物联网可以选择哪些通信方案?

部署工业物联网有诸多意义&#xff0c;诸如提升生产效率&#xff0c;降低管理成本&#xff0c;保障生产品质稳定&#xff0c;应对长期从业劳动力变化趋势等。针对不同行业、场景&#xff0c;工业物联网需要选择不同的通信方案&#xff0c;以达到成本和效益的最佳平衡。本篇就简…

《HeadFirst设计模式(第二版)》第十章代码——状态模式

如下图所示&#xff0c;这是一个糖果机的状态机图&#xff0c;要求使用代码实现&#xff1a; 初始版本&#xff1a; package Chapter10_StatePattern.Origin;/*** Author 竹心* Date 2023/8/19**/public class GumballMachine {final static int SOLD_OUT 0;final static int…

Python学习笔记_进阶篇(二)_django知识(一)

本章简介&#xff1a; Django 简介Django 基本配置Django urlDjango viewDjango 模板语言Django Form Django 简介 Django是一个开放源代码的Web应用框架&#xff0c;由Python写成。采用了MVC的软件设计模式&#xff0c;即模型M&#xff0c;视图V和控制器C。它最初是被开发来…

攻防世界-PHP2

原题 解题思路 这题需要查看页面的phps文件&#xff08;这玩意从没见过&#xff09;。phps的文件是存放php的源代码的&#xff0c;但是不是所有网站都有。 只要让传入的idadmin就可以得到key了。 但是直接传入admin不行。用burp编码。 结果还是不行&#xff1a; 那就再…

【C++】做一个飞机空战小游戏(十)——子弹击落炮弹、炮弹与飞机相撞

[导读]本系列博文内容链接如下&#xff1a; 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动【C】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C】做一个飞…

Linux笔试题(4)

67、在局域网络内的某台主机用ping命令测试网络连接时发现网络内部的主机都可以连同,而不能与公网连通,问题可能是__C_ A.主机ip设置有误 B.没有设置连接局域网的网关 C.局域网的网关或主机的网关设置有误 D.局域网DNS服务器设置有误 解析&#xff1a;在局域网络内的某台主…

视频怎么转gif高清动图?分享一款视频转gif工具

许多小伙伴都不知道如何将拍摄的短视频转gif图片&#xff0c;本文将分享一款专业的视频转gif工具&#xff0c;打来浏览器即可将视频在线转gif&#xff08;https://www.gif.cn&#xff09;&#xff0c;操作简单&#xff0c;使用方便&#xff0c;下面是详细的步骤。 打开网站&am…

linux系统服务学习(六)FTP服务学习

文章目录 FTP、NFS、SAMBA系统服务一、FTP服务概述1、FTP服务介绍2、FTP服务的客户端工具3、FTP的两种运行模式&#xff08;了解&#xff09;☆ 主动模式☆ 被动模式 4、搭建FTP服务&#xff08;重要&#xff09;5、FTP的配置文件详解&#xff08;重要&#xff09; 二、FTP任务…

实验一 VMware 17 虚拟机下安装Ubuntu16.04

系列文章目录 文章目录 系列文章目录前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 古人云&#xff1a;“工欲善其事&#xff0c;必先利其器。” 我们在学习分布式数据库原理知识同时少不了实操&#xff0c;在做实验之前&#xff0c;把相关实验…

AI 绘画Stable Diffusion 研究(十二)SD数字人制作工具SadTlaker插件安装教程

免责声明: 本案例所用安装包免费提供&#xff0c;无任何盈利目的。 大家好&#xff0c;我是风雨无阻。 想必大家经常看到&#xff0c;无论是在产品营销还是品牌推广时&#xff0c;很多人经常以数字人的方式来为自己创造财富。而市面上的数字人收费都比较昂贵&#xff0c;少则几…

解决多模块内核心模块有接口打包成jar后被依赖并调用遇到的问题(springcloud集成ruoyi.quartz)

项目准备开发个新功能&#xff0c;刚好很喜欢ruoyi写的任务调度&#xff0c;因此想到了集成ruoyi.quartz模块 &#xff0c;遇到了很多问题: 首先因为ruoyi.quartz模块依赖了ruoyi.common模块&#xff0c;因此第一步我需要把common模块一部分依赖项复制到了quartz模块内&#xf…

Python 的下一代 HTTP 客户端

迷途小书童 读完需要 9分钟 速读仅需 3 分钟 1 环境 windows 10 64bitpython 3.8httpx 0.23.0 2 简介 之前我们介绍过使用 requests ( https://xugaoxiang.com/2020/11/28/python-module-requests/ ) 来进行 http 操作&#xff0c;本篇介绍另一个功能非常类似的第三方库 httpx&…

pointnet C++推理部署--tensorrt框架

classification 如上图所示&#xff0c;由于直接export出的onnx文件有两个输出节点&#xff0c;不方便处理&#xff0c;所以编写脚本删除不需要的输出节点193&#xff1a; import onnxonnx_model onnx.load("cls.onnx") graph onnx_model.graphinputs graph.inpu…

时序预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆神经网络时间序列预测

时序预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆神经网络时间序列预测预测效果基本介绍模型描述程序设计学习总结参考资料 预测效果 基本介绍 时序预测 | MATLAB实现WOA-…