MySQL之MHA集群的详细教程

本文详细介绍了如何搭建和配置MHA(MySQL High Availability)集群,包括管理节点和数据节点的设置,主从同步,SSH密钥对认证,故障切换脚本,以及VIP地址的配置。通过MHA,可以在30秒内完成数据库的自动故障切换,确保数据一致性。文章还提供了故障模拟和恢复的步骤,展示了集群的高可用功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MHA集群(MySQL服务高可用集群)

MHA简介

MHA(Maste High Availability)

  • 由日本DeNA公司youshimaton开发
  • 是一套优秀的实现MySQL高可用的解决方案
  • 数据库的自动故障切换操作能做到在0~30秒之内完成
  • MHA能确保在故障切换过程中最大限度保证数据的一致性,以达到真正意义的高可用

MHA组成

  • MHA Manager(管理节点)
    • 管理所有数据库服务器
    • 可以单独部署在一台独立的机器上
    • 也可以部署在某台数据库服务器上
  • MHA Node(数据节点)
    • 存储数据的MySQL服务器
    • 运行咋每台MySQL服务器上

MHA工作过程

在这里插入图片描述

具体如下

  • 由manager 定时探测集群中的master节点
  • 当master故障时,manager自动将拥有最新数据的slave提升为新的master

拓扑结构

ip规划

IP地址 主从同步角色 集群角色 主机名
192.168.4.3 客户端 mysql
192.168.4.51 主库 当前主库 sql1
192.168.4.52 从库 备用主库 sql2
192.168.4.53 从库 备用主库 sql3
192.168.4.57 管理主机 mgm57
192.168.4.100 VIP地址

拓扑图:
在这里插入图片描述

VIP地址再那一台服务器上客户端就访问到哪一个数据库服务器

部署MHA集群

集群环境准备

本次实验所使用的环境为centos7.9,mysql5.7.35,mha0.58

1.安装依赖包

因为MHA这个软件使用perl语言编写的,所以需要perl环境

#在所有主机上安装系统自带的perl软件包
yum -y install perl-*
#接下来安装系统没有的依赖包
yum -y install epel-release perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager   perl-Email-Date-Format perl-Mail-Sender perl-Mail-Sendmail perl-MIME-Types perl-MIME-Lite
#最好把这个命令执行两遍,因为其中的一些包,需要在安装了某些包之后才能安装
2.配置ssh密钥对认证登录
  • 管理主机可以无密码连接所有数据库服务器
  • 数据库服务器彼此之间无密码连接
#先配置57管理主机的密钥对
#192.168.4.57(管理主机)
ssh-keygen   #使用最简单的无密码公钥,三下回车选择默认
ssh-copy-id root@192.168.4.51
ssh-copy-id root@192.168.4.52
ssh-copy-id root@192.168.4.53

测试57管理无密码登录
在这里插入图片描述

#数据库服务器彼此之间无密码连接
#192.168.4.51
ssh-keygen
ssh-copy-id root@192.168.4.52
ssh-copy-id root@192.168.4.53
#192.168.4.52
ssh-keygen
ssh-copy-id root@192.168.4.51
ssh-copy-id root@192.168.4.53
#192.168.4.53
ssh-keygen
ssh-copy-id root@192.168.4.51
ssh-copy-id root@192.168.4.52

测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.配置一主多从同步结构

配置主库51

vim /etc/my.cnf
[mysqld]
server_id=51
log-bin=master51

systemctl restart mysqld
mysql -uroot -p123456
grant replication slave on *.* to repluser@"%" identified by "123456";
show master status;

在这里插入图片描述

配置从库52、53

#192.168.4.52
vim /etc/my.cnf
[mysqld]
server_id=52

systemctl restart mysqld
mysql -uroot -p123456
change master to
master_host="192.168.4.51",
master_user="repluser",
master_password="123456",
master_log_file="master51.000002",
master_log_pos=441;
start slave;
show slave status \G;

#192.168.4.53
vim /etc/my.cnf
[mysqld]
server_id=53

systemctl restart mysqld
mysql -uroot -p123456
change master to
master_host="192.168.4.51",
master_user="repluser",
master_password="12
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值