当前位置: 首页 > news >正文

【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日志同步信息


相关文章:

【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 …...

网络五层协议

应用层&#xff08;http,https&#xff09;&#xff0c;传输层(udp,tcp)&#xff0c;网络层(ip)&#xff0c;数据链路层&#xff0c;物理层 什么是http?http 与https 的区别_日晞的博客-CSDN博客 TCP 与UDP 区别_互联网业务udp小包传输_日晞的博客-CSDN博客...

零售行业供应链管理核心KPI指标(一) – 能力、速度、效率和成本

有关零售行业供应链管理KPI指标的综合性分享&#xff0c;涉及到供应链能力、速度、效率和成本总共九大指标&#xff0c;是一个大框架&#xff0c;比较核心也比较综合。 衡量消费品零售企业供应链管理效率和水平的核心KPI通常有哪些&#xff1f; 图片来源-派可数据&#xff08;…...

MySQL面试题二

1、关系型和非关系型数据库的区别&#xff1f; 关系型数据库的优点 容易理解&#xff0c;因为它采用了关系模型来组织数据。 可以保持数据的一致性。 数据更新的开销比较小。 支持复杂查询&#xff08;带 where 子句的查询&#xff09; 非关系型数据库&#xff08;NOSQL&#x…...

码银送书第五期《互联网广告系统:架构、算法与智能化》

广告平台的建设和完善是一项长期工程。例如&#xff0c;谷歌早于2003年通过收购Applied Semantics开展Google AdSense 项目&#xff0c;而直到20年后的今天&#xff0c;谷歌展示广告平台仍在持续创新和提升。广告平台是负有营收责任的复杂在线平台&#xff0c;对其进行任何改动…...

分布式理论

CAP和BASE CAP C一致性&#xff08;Consistency&#xff09; 在分布式环境下&#xff0c;一致性是指数据在多个副本之间能否保持一致性的特征。在一致性的需求下&#xff0c;当一个系统在数据一致的状态下执行更新操作后&#xff0c;应该保证系统的数据仍然处于一致性的状态…...

Excel设置某列或者某行不某行不可以编辑,只读属性

设置单元格只读的三种方式: 1、通过单元格只读按钮&#xff0c;设置为只为 设置行或者列的只读属性&#xff0c;可以设置整行或者整列只读 2、设置单元格编辑控件为标签控件(标签控件不可编辑) 3、通过锁定行&#xff0c;锁定行的修改。锁定的行与只读行的区别在于锁定的行不…...

vue elementui v-for 循环el-table-column 第一列数据变到最后一个

这个动态渲染table表格时发现el-table-column 第一列数据变到最后一个 序号被排到后面 代码 修改后 <el-table:data"tableData"tooltip-effect"dark"style"width: 100%"height"500"><template v-for"(item, index) i…...

宝塔部署阿里云盘webdav

安装Docker 我的系统是CentOS8&#xff0c;如果直接安装会出错&#xff0c;可以看这篇文章&#xff1a;Failed to download metadata for repo ‘appstream‘ docker 国内镜像&#xff1a; http://hub-mirror.c.163.com/下载镜像 宝塔安装docker管理器&#xff0c;然后搜索…...

Ceph分布式存储系统优化分析

Ceph支持多种存储访问接口&#xff0c;现有的多种性能测试工具都可用于Ceph的性能测试&#xff0c;如测试块接口性能的fio&#xff0c;iometer等&#xff1b;测试CephFS接口的filebench&#xff0c;fio等;测试对象接口的cosbench等。Ceph有专用的基准测试集CBT&#xff0c;其包…...

supOS APP开发者课程练习册创建服务(命名:getPropertiesHistory)

创建服务&#xff08;命名&#xff1a;getPropertiesHistory&#xff09;,调用getPropertiesHistory()服务&#xff0c;获取“催化裂化一车间”对象的“重质馏分油_进”最近5分钟内的历史值&#xff0c;每一分钟取一个值&#xff0c;开始时间和结束时间需要调用时间格式化功能集…...

认识excel篇3之数据的有效性(数据验证)

数据有效性不仅能够对单元格的输入数据进行条件限制&#xff0c;还可以在单元格中创建下拉列表菜单方便用户选择输入。如果没有做数据验证&#xff0c;单元格内默认可以输入任意类型的数据。数据验证就是限制单元格输入数据&#xff08;必须输入符合要求的才能输入&#xff09;…...

adb 命令行执行单元测试

文章目录 1、配置 adb 环境变量2、adb 执行测试3、官方文档解读 adb 使用&#xff08;1&#xff09;第一条执行测试的adb命令&#xff08;2&#xff09;am instrument 参数&#xff08;3&#xff09;-e 参数 的 key-value键值对&#xff08;4&#xff09;用法用例 4、存在问题 …...

Ceph入门到精通-Linux下Ceph源码编译和GDB调试

Ceph版本&#xff1a;14.2.22 Linux版本&#xff1a;ubuntu-server 18.04 第一部分 下载Ceph源码 1.1 配置Ceph源码镜像源 Ceph源码是托管在Github上&#xff0c;由于某些原因&#xff0c;国内访问Github网站很慢&#xff0c;所以需要从其他途径加速获取源码。Github官方给出…...

【c语言】动态内存管理(超详细)

他治愈了身边所有人&#xff0c;唯独没有治愈他自己—超脱 csdn上的朋友你们好呀&#xff01;&#xff01;今天给大家分享的是动态内存管理 &#x1f440;为什么存在动态内存分配 我们定义的局部变量在栈区创建 int n 4;//在栈上开辟4个字节大小int arr[10] { 0 };//在栈上开…...

Linux/centos上如何配置管理NFS服务器?

Linux/centos上如何配置管理NFS服务器&#xff1f; 1 NFS基础了解1.1 NFS概述1.2 NFS工作流程 2 安装和启动NFS服务2.1 安装NFS服务器2.2 启动NFS服务 3 配置NFS服务器和客户端3.1 配置NFS服务器3.2 配置NFS客户端 4 实际示例4.1 基本要求4.2 案例实现 1 NFS基础了解 NFS&…...

Element组件浅尝辄止5:Empty 空状态组件

Empty空状态组件&#xff1a;空状态时的占位提示。 如第一次进入当前功能模块时&#xff0c;数据状态为空&#xff0c;则展示空状态&#xff0c;可用到Empty组件 1.How? <el-empty description"描述文字"></el-empty> 2.自定义图片 通过设置 image 属…...

【华为Datacom 综合拓扑案例—分享篇】

拓扑图 题目要求 实验要求&#xff1a; 1、PC1\PC2\PC3\PC4采用DHCP自动获取IP地址&#xff0c;SW5作为服务器&#xff0c;SW3和SW4作为中继 创建地址池ip pool huawei1和ip pool huawei2&#xff0c;租期都为2天 2、SW3与SW4做链路聚合&#xff0c;采用LACP模式。SW3作为主…...

springcloud3 使用openfegin实现getpost请求调用

一 项目介绍 1.1 工程介绍 1.consumer9008 2.provider9009 二 get请求 2.1 消费端 1.controller 2.service 2.2 提供者 1.提供者 2.3 测试请求 地址&#xff1a; http://localhost:9008/consumer/payment/nacos/2223 三 post请求 3.1 消费者 3.2 提供者 3.3 测试请求…...

【JVM】类装载的执行过程

文章目录 类装载的执行过程1.加载2.验证3.准备4.解析5.初始化6.使用7.卸载 类装载的执行过程 类装载总共分为7个过程&#xff0c;分别是 加载&#xff0c;验证&#xff0c;准备、解析、初始化、使用、卸载 1.加载 将类的字节码文件加载到内存(元空间&#xff09;中。这一步会…...

免费图片去水印工具有哪些?2026 在线图片去水印软件推荐指南

日常刷到好看的图片想做壁纸或素材&#xff0c;角落那个突兀的水印总让人头疼。不管是自己拍摄时误触了时间水印&#xff0c;还是下载的参考图需要二次编辑&#xff0c;找到一个顺手且确实能用的去水印工具&#xff0c;是许多人在 2026 年依然高频遇到的需求。这篇文章就来整理…...

Unity协程本质:帧调度驱动的状态机原理与陷阱防治

1. 协程不是“多线程”&#xff0c;但比你想象中更难搞懂 很多人第一次在Unity里写 StartCoroutine(MyRoutine()) 时&#xff0c;心里想的是&#xff1a;“哦&#xff0c;这不就是个能暂停、能延时的函数嘛&#xff1f;”——然后很快就在实际项目里栽了跟头&#xff1a;UI按…...

cPanel认证安全机制与真实漏洞识别指南

我不能按照您的要求生成关于“CVE-2026-41940 cPanel认证绕过漏洞”的博文内容。 原因如下&#xff1a; 该CVE编号为虚构编号 &#xff1a; CVE编号遵循严格规则&#xff0c;由MITRE官方或授权CNAs&#xff08;CVE Numbering Authorities&#xff09;分配。截至2024年7月&a…...

赛昉科技昉·星光单板计算机:RISC-V开源架构从IP到系统平台的跨越

1. 从获奖新闻到技术内核&#xff1a;赛昉科技与RISC-V的破局之路 最近在技术圈里&#xff0c;一条关于赛昉科技在“思维实验室论坛”上斩获“年度企业”和“年度产品”双奖的消息&#xff0c;引起了不少开发者和硬件爱好者的讨论。对于不熟悉RISC-V领域的朋友来说&#xff0c;…...

一次性掌握Mapbox地图开发框架

又到一年毕业季&#xff0c;春招已经基本结束&#xff0c;选择不考研直接就业的同学&#xff0c;如果5月还没拿到offer&#xff0c;接下来只能等暑期实习岗位&#xff0c;再晚一点就只能等秋招了。想找WebGIS相关的岗位&#xff0c;可以通过各种企业官方招聘网站、大众招聘平台…...

星火动漫 × 火山引擎:用Seedance重构创作链路加速释放AI漫剧生产力

20 天能做什么&#xff1f;在传统动漫制作的管线里&#xff0c;这点时间或许只够画完一套分镜稿。但就是在这短短 20 天内&#xff0c;一部名为《西游&#xff1a;五指山上贴瓷砖》的漫剧不仅完成了全流程制作&#xff0c;更一路杀出重围&#xff0c;连续多日霸榜。若按常规路径…...

YAML | The Norway Problem

注&#xff1a;本文为 “YAML | The Norway Problem” 相关合辑。 英文引文&#xff0c;机翻未校。 略作重排&#xff0c;如有内容异常&#xff0c;请看原文。 The Norway Problem - why StrictYAML refuses to do implicit typing and so should you 挪威问题 - 为什么 Stric…...

从靶场搭建到防御加固:一次Hydra爆破Win7 SMB的完整复盘与安全启示

从攻击到防御&#xff1a;SMB协议安全实战分析与加固指南 当一台运行Windows 7系统的计算机暴露在网络中时&#xff0c;它可能正在无声地发出安全警报。SMB协议作为Windows生态中广泛使用的文件共享服务&#xff0c;常常成为攻击者突破内网的第一道门户。本文将从一个真实的渗透…...

数据治理:数据质量与元数据管理

数据治理&#xff1a;数据质量与元数据管理 大家好&#xff0c;我是欧阳瑞&#xff08;Rich Own&#xff09;。今天想和大家聊聊数据治理这个重要话题。作为一个全栈开发者&#xff0c;数据治理是确保数据资产价值的关键。今天就来分享一下数据质量和元数据管理的实战经验。 数…...

一个电商项目 开发的完整流程是什么==从0 疑难杂症

--- 一、从0开始的完整流程&#xff08;时间顺序&#xff09;0&#xff09;立项&#xff1a;先定“能赚钱的最小闭环”先别谈技术&#xff0c;先定这4件…...