一、MHA的概念
1.1 MHA概述
一套优秀的MySQL高可用环境下故障切换和主从复制的软件MHA的出现就是解决MySQL 单点的问题。
MySQL故障过程中,MHA能做到0-30秒内自动完成故障切换·MHA能在故障切换的过程中最大程度上保证数据的一致性以达到真正意义上的高可用
1.2 MHA的组成
MHA Manager(管理节点)
MHA Node(数据节点)
MHA Manager(管理节点)
MHA Manager 可以单独部署在一台独立的机器上,管理多个 master-slave 集群;也可以部署在一台 slave 节点上。
MHA Manager 会定时探测集群中的 master 节点。当 master 出现故障时,它可以自动将最新数据的 slave提升为新的 master然后将所有其他的 slave 重新指向新的 master。整个故障转移过程对应用程序完全透明。
1.3 MHA 的特点
自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失
使用半同步复制,可以大大降低数据丢失的风险,如果只有一个slave已经收到了最新的二进制日志,MBA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性
目前MHA支持一主多从架构,最少三台服务,即一主两从
1.4 MHA工作原理总结如下
①从宕机崩溃的master 保存二进制日志事件(binlog events)
② 识别含有最新的更新 slave 日志
③ 应用差异的中继日志(relay log)到其他的slave
④ 应用从master保存的二进制日志事件
⑤ 提升一个 salve 为新的master
⑥ 使其他的slave连接行的master 进行复制。
MHA :为了解决的了是故障切换、数据尽可能的保存,以及所有节点日志的一致性
二、数据复制
①同步复制
客户端提交事务时候master要等所有从服务器同步完才返回给客户端
②异步复制
只要master完成客户端的提交事务,就会返回给客户端信息,并不关心是否同步到数据
③半同步复制
客户端提交事务的时候master 会等其中一个slave同步完数据之后才会返回给客户端
三、搭建mysql+mha
3.1 MHA架构
数据库安装
一主两从
MHA搭建
3.2 故障模拟
模拟主库失效
备选主库成为主库
原故障主库恢复重新加入到MHA成为从库
3.3 实验环境、安装包
主机 | 操作系统 | IP地址 | 安装包/软件、工具 |
master | centos7 | 192.168.200.12 | mysql-boost-5.7.20.tar.gz、MHAnode组件 |
slaver1 | centos7 | 192.168.200.13 | mysql-boost-5.7.20.tar.gz、MHAnode组件 |
slaver2 | centos7 | 192.168.200.14 | mysql-boost-5.7.20.tar.gz、MHAnode组件 |
MHA-amanager | centos7 | 192.168.200.15 | MHAnode组件、MHAmanager组件 |
netstat -natp | grep 3306
2.3 服务搭建
所有服务器,关闭系统防火墙和安全机制
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
修改 master(192.168.200.12)、Slave1(192.168.200.13)、Slave2(192.168.200.14) 节点的主机名
hostnamectl set-hostname master
hostnamectl set-hostname slave1
hostnamectl set-hostname slave2bash
修改三台MySQL服务器的主配置文件/etc/my.cnf
master:(192.168.200.12)
vim /etc/my.cnf
[mysqld]
server-id = 20
log_bin = master-bin
log-slave-updates = true
systemctl restart mysqld
ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/