MySQL高可用集群搭建 ----- MHA

本文详细介绍了如何使用MHA搭建MySQL高可用集群,包括MHA的工作原理、实验环境、步骤详解以及故障切换过程。通过MHA,可以在主库故障时自动选择最接近的从库作为新的主库,确保数据一致性并实现服务不间断。
摘要由CSDN通过智能技术生成

一、何为高可用?

高可用性说白了就是应用可以 持续不间断提供服务的能力!

注:
高可用和负载均衡的概念有些初学者可能会混淆,在这也说说负载均衡:

负载均衡:指后端服务器没有状态,可以任意分配,它们之间是同时工作的,能够通过增加机器增加吞吐量、减小服务器压力

高可用:指后端服务器有状态,一般来说是一主一备的结构,它们之间是一个工作另一个不工作在主服务器出故障后,备服务器去接管服务,从而达到持续不间断的提供服务。

二、MHA介绍

MHA使用perl语言编写的一个脚本管理管理工具,用于维持master主库的高可用性。
MHA包含两个部分:MHA Manager(管理节点)和MHA Node(数据节点)
在这里插入图片描述
MHA原理:

MHA用于维持 MySQL Replication 中 master 库的高可用性,最大的特点是可以修复多个slave上的差异日志,最终使所有slave保持数据一致,然后从中选取一个充当新的 master,并让其他 slave 指向它。

当master出现故障时,通过对比 slave 之间的 I/O thread 读取主库的 binlog 的 position 号,选取最接近的slave作为备胎(被选主库),其它从库通过与备胎对比,生成差异的中继日志,在备胎上运用从原来的 master 保存的 binlig,同时将备胎提升为master。最后在其他 slave 上运用相应的差异中继日志,并从新的 master 开始复制。

优点:

  • 故障切换时,自动判断哪个从库与主库离的最近,并切换到上面
  • 支持binlog server,提高 binlog 的传送效率
  • 结合半同步功能,确保故障切换时数据不丢失

三、实验环境介绍

使用三台机器来完成本次MHA的搭建:

	IP			主机名		系统版本		角色					 	节点
172.25.5.1		lxn1		RHEL7		master node				node1

172.25.5.3      lxn3		RHEL7		slave1 node				node2
172.25.5.4      lxn4		RHEL7		slave2 node+manager		node3

四、MHA搭建

MHA下载:

https://github.com/yoshinorim/mha4mysql-manager
https://github.com/yoshinorim/mha4mysql-node

wget https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58.tar.gz
wget https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58.tar.gz

1、配置三台机器免密通信

所有节点都执行生成密钥操作

cd /root/.ssh/
ssh-keygen -t dsa -P '' -f id_dsa
cat id_dsa.pub >> authorized_keys
  • 以主库示例,所有节点都要操作
    在这里插入图片描述

在主库上接收slave上的密钥

scp 172.25.5.3:/root/.ssh/authorized_keys ./authorized_keys.3
scp 172.25.5.4:/root/.ssh/authorized_keys ./authorized_keys.4

在主库上执行合并密钥的命令

cat authorized_keys.3 >> authorized_keys
cat authorized_keys.4 >> authorized_keys

在主库上将合并后的密钥文件发给其他节点

scp authorized_keys 172.25.5.3:/root/.ssh/
scp authorized_keys 172.25.5.4:/root/.ssh/
  • 完整命令截图(进供参考)

在这里插入图片描述

所有节点在/etc/hosts文件中写入本地解析:

172.25.5.1      lxn1 node1
172.25.5.3      lxn3 node2
172.25.5.4      lxn4 node3

测试

能够互相ssh且不要密码,即成功!

示例:

在这里插入图片描述

2、搭建主从环境

环境说明

本次实验搭建的是一主两从环境,使用的MySQL5.7版本,基于GTID+row模式

在所有服务器MySQL上执行以下操作

#创建主从复制帐号
create user 'gtid'@'172.25.5.%' identified by 'gtid123';
grant replication slave on *.* to &#
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值