mysql mha高可用

2023-12-19

一、前言

在原本的一主两从数据库架构中,是没有高可用功能的,当主库挂了时不会自动将剩下的从从升级为主库,只能等待主库恢复才能使用,或者手动切换,但是手动切换后需要更改后端服务中的数据库地址信息,在此情况下,需要引入mha服务来实现一主两从数据库的高可用,mha服务可以在主库挂掉时,自动从剩下的从库中选举出一个主库,再将剩下的从库变更为新主库的从库,该mha也有缺点,只能一次性使用,当发生了一次主从切换后,mha manage服务就会挂掉,挂掉的主库信息也会从mha manage配置文件中剔除,当原主库恢复后,需要手动将原主库更改为新主库的从库,再将信息写入mha manage的配置文件中,再启动mha manage,这样下次主从发生故障时mha manage才会再次发挥作用

mha对mysql高可用的实现原理,在主从的每个节点,以及mha manage节点部署mha node服务收集每个节点的信息发送到mha manage,当主节点发生故障时,mha manage节点会及时监控到,mha manage会首先检查每个从节点的健康状态,没问题就会在剩下的从节点中选举出新的主节点,然后对剩下的从节点进行主从配置并将从节点更改为只读,这样就完成了主从节点的故障切换

二、构架

ip 服务
10.1.60.113 mysql、mha node
10.1.60.114 mysql、mha node
10.1.60.115 mysql、mha node
10.1.60.22 mha manage、mha node

三、部署

需要提前部署好一主两从架构的mysql

参考: mysql一主两从读写分离搭建_mysql 一主两从搭建-CSDN博客

在github上下载mha node和mha manage安装包

mha manage

参考: Release mha4mysql-manager-0.58 · yoshinorim/mha4mysql-manager · GitHub

mha node

参考: https://github.com/yoshinorim/mha4mysql-node/releases/tag/v0.58

所有节点安装mha依赖

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

在所有主机中创建存放mha安装包目录

mkdit /opt/mha && cd /opt/mha

将mha node安装包放到所有节点的mha目录下,mha manage安装包只放到mha manage目录下

先在所有节点安装mha node服务

tar -zxvf mha4mysql-node-0.58.tar.gz && ls

cd  mha4mysql-node-0.58

perl Makefile.PL

make && make install

mha node服务安装完成后在mha manage节点安装mha manage服务

tar -zxvf mha4mysql-manager-0.58.tar.gz && ls

cd mha4mysql-manager-0.58

perl Makefile.PL

make && make install

在所有mysql节点创建软连接

ln -s /usr/local/mysql/bin/mysql /usr/sbin/

ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/

配置所有节点互相免密登陆

#113节点执行
ssh-keygen  #一直按回车键即可

ssh-copy-id 10.1.60.114

ssh-copy-id 10.1.60.115

ssh-copy-id 10.1.60.22


#114节点执行
ssh-keygen  #一直按回车键即可

ssh-copy-id 10.1.60.113

ssh-copy-id 10.1.60.115

ssh-copy-id 10.1.60.22

#115节点执行
ssh-keygen  #一直按回车键即可

ssh-copy-id 10.1.60.114

ssh-copy-id 10.1.60.113

ssh-copy-id 10.1.60.22

#22节点执行
ssh-keygen  #一直按回车键即可

ssh-copy-id 10.1.60.114

ssh-copy-id 10.1.60.115

ssh-copy-id 10.1.60.113

在mha manage上执行以下拷贝文件命令

cp -rp /opt/mha/mha4mysql-manager-0.58/samples/scripts/send_report /usr/local/bin

ls /opt/mha/mha4mysql-manager-0.58/samples/scripts

script目录下有四个文件解释

master_ip_failover:发生故障时自动切换VIP的管理脚本

master_ip_online_change:在线切换vip 的管理脚本

power_manager:故障发生后关闭主机的脚本

send_report:故障切换后发送报警邮件的脚本

我的mysql架构中使用了proxysql读写分离组件,有集成主从故障切换的功能,所以不需要vip,就只拷贝了发送告警的脚本

在mysql主从配置的主库中创建以下用于监控的用户

mysql -u root -p

grant all privileges on *.* to 'mha'@'%' identified by '12345678'

flush privileges;

在mha manage节点中拷贝配置文件

mkdir /etc/masterha

cp /opt/mha/mha4mysql-manager-0.58/samples/conf/app1.cnf   /etc/masterha

编辑配置文件

vi /etc/masterha/app1.cnf

[server default]
manager_log=/var/log/masterha/app1/manager.log  #mha manage日志
manager_workdir=/var/log/masterha/app1          #mha manage工作目录
master_binlog_dir=/var/lib/mysql/           #主库保存binlog的位置,这里的路径要与主库里配置的binlog的路径一致,以便MHA能找到
user=mha               #监控用户 
password=12345678      #监控用户密码
ping_interval=1         #设置监控主库,发送ping包的时间间隔,默认是3秒,尝试三次没有回应的时候自动进行failover
remote_workdir=/tmp     #远端mysql在发生切换时binlog的保存位置
repl_password=12345678   # 主从复制密码
repl_user=deploy             # 主从复制用户    
report_script=/usr/local/bin/send_report #设置发生故障切换后发送的报警的脚本
ssh_user=root               #设置ssh的登录用户名

[server1]                 #发生故障切换后会删除对应故障的地址项配置
hostname=10.1.60.113     #myqsl地址
port=3306                #myqsl端口

[server2]
hostname=10.1.60.114
port=3306

[server3]
hostname=10.1.60.115
port=3306

配置故障切换告警

vi /usr/local/bin/send_report

my $smtp='smtp.qq.com';             # smtp服务器
my $mail_from='123456@qq.com';    # 发件箱
my $mail_user='123456';           # 用户名 QQ号
my $mail_pass='iozjqgxcvasdwlbffb';   # 授权码
my $mail_to=['123456@qq.com'];    # 收件箱

执行mha脚本检查各节点ssh连接状态

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

检查数据库主从架构状态

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

启动mha manage服务

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 &

tail -f /var/log/masterha/app1/manager.log

ps -ef|grep manage

至此mha搭建完成,现在是当mha发生主从故障切换时需要手动重新配置mha manage服务,重新在配置文件中新增故障的主节点信息,再重新启动mha manage服务

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql mha高可用 的相关文章

随机推荐

  • Python数据分析:从入门到进阶,一篇文章带你飞!

    随着大数据时代的来临 数据分析已经成为了各行各业不可或缺的一环 而Python作为数据分析的利器 更是备受推崇 今天 我将为大家带来一篇关于Python数据分析的介绍 让我们一起走进数据的世界 探索Python的魅力 一 Python数据分
  • Pipeline 助您轻松驾驭海量数据!

    前言 数据治理在当今信息时代变得至关重要 随着数据量的不断增长和多样化 组织需要有效地管理和利用这些数据 以支持业务决策和创新发展 不论是做数据分析还是数据解析 利用 Pipeline 可以帮助组织实现数据治理的自动化和规范化 为组织提供更
  • Python数据分析原来这么简单!5分钟上手,让你成为数据分析达人!

    前言 数据分析是如今信息时代的核心技能之一 通过对大量数据的收集 整理 处理和分析 数据分析师可以从中提取出有价值的信息 为企业决策提供支持和指导 而Python作为一种简单 易学且功能强大的编程语言 成为了数据分析的热门工具之一 本文将为
  • JAVA 版多商家入驻 直播带货 商城系统 B2B2C 之 鸿鹄云商B2B2C产品概述

    一 产品简介 我们的JAVA版多商家入驻直播带货商城系统是一款全 面的电子商务平台 它允许商家和消费者在一个集成的环境中进行互动 系统采用先进的JAVA语言开发 提供多商家入驻 直播带货 B2B2C等多种功能 帮助用户实现线上线下的无缝对接
  • 四大校招是否可以有内推?机会大吗?

    四大也是有内推的 机会大小还是看你的实力了 需要自己评估 内推机会可以从这些渠道找一下 具体根据自己的情况来 熟人内推 能找到熟人内推是最好的 但是也很考验人脉 付费内推 有些职业培训机构会做付费内推 价格不菲 不太建议 社交媒体 比如 小
  • setbcdlocale.dll文件丢失导致程序无法运行问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个setbcdl
  • 免费图片文字识别软件好用吗?分享这3个图文转换利器给你

    有什么软件可以自动识别图片文字吗 当然有了 随着科技的不断发展 越来越多的软件和应用涌现出来 帮助我们更轻松地识别图片中的文字 这些软件不仅可以帮助我们快速准确地获取图片中的信息 还为我们提供了更多的便利和效率 无论是学习 工作还是生活中
  • k8s集群内部署nexus

    一 前言 在k8s集群中部署nexus服务需要使用到pv pvc服务来存储nexus的数据 需要使用service服务来提供对外访问nexus服务的端口 需要使用deployment服务来管理nexus服务 接下来就是用这些服务来在k8s集
  • Python数据分析学习路线详细版总结

    数据分析人人都有必要掌握一点 哪怕只是思维也行 下面探讨Python数据分析需要学习的知识范畴 结合自己的经历和理解 总结的 学习大纲 有些章节带有解释 有些没有 当然 关于学习范畴 可能每个人的理解都不太一样 以下仅供参考 1 数据分析思
  • 干货 | Sqlmap常用手册(收藏)

    sqlmap常用手册 目录 sqlmap常用手册 一 sqlmap介绍 二 常用命令 二 进阶命令 technique BEUST prefix与 suffix level 三 注入https网站
  • 《OCAD光学系统自动设计程序》好书分享

    OCAD是一款具有鲜明工程化特色的中国光学自动设计软件 程序重点在于可以首先进行复杂光学系统的初始布局 进行设计前期的总体方案设计 可以对各类典型光学系统自动进行初始结构设计 作为一款光学系统辅助设计软件 SEEOD以光的直线传播 数学几何
  • Web自动化框架中验证码识别处理全攻略,让测试更得心应手!

    前言 随着Web应用程序的不断发展 自动化测试已成为项目开发中必不可少的一环 然而 验证码的出现却经常会使自动化测试变得更具挑战性 为了解决这个问题 我们需要一种方法来自动识别和处理验证码 从而提高自动化测试的效率和准确性 本文将介绍如何封
  • 如何学习Python数据分析,最全路径图送给你(100天Get新技能)

    和很多同学接触过程中 我发现自学Python数据分析的一个难点是资料繁多 过于复杂 大部分网上的资料总是从Python语法教起 夹杂着大量Python开发的知识点 花了很多时间却始终云里雾里 不知道哪些知识才是真正有用的 本来以为上手就能写
  • 黑马程序员《PHP基础案例教程》第2版课后练习—第10章

    第10章课后练习 答案均参考教材官方发布的PPT 以下是下载PPT的页面 人民邮电出版社教育社区 PHP基础案例教程 第2版 图书 人邮教育社区 一 填空题 1 要想开启GD库 需要打开php ini 将 extension php gd2
  • 软件测试经典面试题:如何进行支付功能的测试?

    非现金支付时代 非现金支付已经成为了生活不可或缺的一部分 我们只需要一台手机便可走遍全国各地 前提是支付宝 微信有钱 lt 00 gt 那么作为测试人员 支付测试也是非常重要的一环 那么下面我就结合一下我的工作中遇到的一些问题 总结一下常见
  • 《基于Essential Macleod软件的光学薄膜设计技术》(第二版 精装版)

    内容简介 Macleod软件自带的用户手册功能全面 其介绍涵盖了软件的方方面面 能够使用户快速的了解和熟悉软件的基本操作 然而 为了顺应目前薄膜行业的需求 急需一本能够契合软件设计和实际加工需要的专业书籍 以能够帮助薄膜领域的同行高效的完成
  • 《Techwiz LCD 3D中文手册》好书分享

    目录 前言 1 总览 1 版权 1 更新历史 2 Part I 安装程序 1 1 安装TechWiz LCD 3D 程序 2 2 安装许可证服务程序 4 3 请求许可证 6 3 1 使用 Host ID 程序 6 3 2 使用 Imtool
  • 黑马程序员《PHP基础案例教程》第2版课后练习—第09章

    第9章课后练习 答案均参考教材官方发布的PPT 以下是下载PPT的页面 人民邮电出版社教育社区 PHP基础案例教程 第2版 图书 人邮教育社区 一 填空题 1 使用fopen 函数打开文件后 返回值是 resource 数据类型 2 fil
  • 从零开始学习Web自动化:用Python和Selenium实现网站登录功能!

    Web自动化测试实战项目 使用Selenium和Python完成网站登录功能的自动化测试 本文将介绍如何使用Selenium和Python编写自动化测试脚本 对网站登录功能进行测试 我们将通过模拟用户在网站上输入用户名和密码 并点击登录按钮
  • mysql mha高可用

    一 前言 在原本的一主两从数据库架构中 是没有高可用功能的 当主库挂了时不会自动将剩下的从从升级为主库 只能等待主库恢复才能使用 或者手动切换 但是手动切换后需要更改后端服务中的数据库地址信息 在此情况下 需要引入mha服务来实现一主两从数