本文共 1250 字,大约阅读时间需要 4 分钟。
趁着最近几天休息,就把之前没有补全的博客也来补补。
今天就和大家聊聊MySQL高可用方案中的MHA
在中小型架构中,针对MySQL做高可用 用的最多的可能就是keepalived/heartbeat+MySQL Replication。
这种方案配置简单、维护方便,并且也能实现MySQL的故障转移,因此更多的倾向于此架构
MHA是什么?
MHA是由日本Mysql专家用Perl写的一套Mysql故障切换方案,来保障数据库的高可用性,它的功能是能在0-30s之内实现主Mysql故障转移(failover),MHA故障转移可以很好的帮我们解决从库数据的一致性问题,同时最大化挽回故障发生后数据的一致性。
MHA里有两个角色一个是node节点 一个是manager节点,要实现这个MHA,必须最少要三台数据库服务器,一主多备,即一台充当master,一台充当master的备份机,另外一台是从属机,这里实验为了实现更好的效果使用四台机器,需要说明的是一旦主服务器宕机,备份机即开始充当master提供服务,如果主服务器上线也不会再成为master了,因为如果这样数据库的一致性就被改变了
这里有一个mha的网络拓扑图,我们先来简单的介绍下
先来聊聊这个拓扑图,文章开篇也有过介绍,MHA有两个重要的角色,一个是manager,另外一个是node;
从这个拓扑图中,或许大家不难分辨出如下信息
1 2 3 4 | 192.168.1.117 manager 管理节点 192.168.1.116 master 主库 192.168.1.118 slave01 从库 + 备库 192.168.1.119 slave02 从库 |
一、环境初始化
1、修改主机名
1 2 3 4 5 6 7 8 | 主机: manager执行命令 # sed -i 's/HOSTNAME=.*/HOSTNAME=manager/g' /etc/sysconfig/network && hostname manager 主机: master执行命令 # sed -i 's/HOSTNAME=.*/HOSTNAME=master/g' /etc/sysconfig/network && hostname master 主机: slave01执行命令 # sed -i 's/HOSTNAME=.*/HOSTNAME=slave01/g' /etc/sysconfig/network && hostname slave01 主机: slave02执行命令 # sed -i 's/HOSTNAME=.*/HOSTNAME=slave02/g' /etc/sysconfig/network && hostname slave02 |
2、主机名解析
1 2 3 4 5 |