准备三台机器:
第一台:IP:10.0.0.51 db01 2G内存
第二台:IP:10.0.0.52 db02 2G内存
第三台:IP:10.0.0.53 db03 2G内存
简介:
MHA能够在较短的时间内实现自动故障检测和故障转移,通常在10-30秒以内;在复制框架中,MHA能够很好地解决复制过程中的数据一致性问题,由于不需要在现有的replication中添加额外的服务器,仅需要一个manager节点,而一个Manager能管理多套复制,所以能大大地节约服务器的数量;另外,安装简单,无性能损耗,以及不需要修改现有的复制部署也是它的优势之处。
MHA还提供在线主库切换的功能,能够安全地切换当前运行的主库到一个新的主库中(通过将从库提升为主库),大概0.5-2秒内即可完成。
MHA由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。MHA Manager可以独立部署在一台独立的机器上管理多个Master-Slave集群,也可以部署在一台Slave上。当Master出现故障时,它可以自动将最新数据的Slave提升为新的Master,然后将所有其他的Slave重新指向新的Master。整个故障转移过程对应用程序是完全透明的。
#在切换过程我们可以查看日志
原理:
1.把宕机的master二进制日志保存下来。
2.找到binlog位置点最新的slave。
3.在binlog位置点最新的slave上用relay-log(差异日志)修复其它slave。
4.将宕机的master上保存下来的二进制日志恢复到含有最新位置点的slave上。
5.将含有最新位置点binlog所在的slave提升为master。
6.将其它slave重新指向新提升的master,并开启主从复制。
架构:
1.MHA属于C/S结构
2.一个manager节点可以管理多套集群
3.集群中所有的机器都要部署node节点
4.node节点才是管理集群机器的
5.manager节点通过ssh连接node节点,管理
6.manager可以部署在集群中除了主库以外的任意一台机器上
工具:
#解压tar包,查看
[root@db01 ~]# ll mha4mysql-manager-0.56/bin/
#检查主从状态
masterha_check_repl
#检查ssh连接(配置免密)
masterha_check_ssh
#检查MHA状态
masterha_check_status
#删除死掉机器的配置
masterha_conf_host
[server2]
hostname=10.0.0.52
port=3306
[server3]
hostname=10.0.0.53
port=3306
#启动程序
masterha_manager
#检测master是否宕机
masterha_master_monitor
#手动故障转移
masterha_master_switch
#建立TCP连接从远程服务器
masterha_secondary_check
#关闭进程的程序
masterha_stop
软件包:
manager节点的工具:mha4mysql-manager-0.56-0.el6.noarch.rpm
node节点工具:mha4mysql-node-0.56-0.el6.noarch.rpm
node节点工具
#解压node安装包
[root@db01 ~]# ll mha4mysql-node-0.56/bin/
#对比relay-log
apply_diff_relay_logs
#防止回滚事件
filter_mysqlbinlog
#删除relay-log
purge_relay_logs
#保存binlog
save_binary_logs
MHA优点
1)Masterfailover and slave promotion can be done very quickly
自动故障转移快
2)Mastercrash does not result in data inconsistency
主库崩溃不存在数据一致性问题
3)Noneed to modify current MySQL settings (MHA works with regular MySQL)
不需要对当前mysql环境做重大修改
4)Noneed to increase lots of servers
不需要添加额外的服务器(仅一台manager就可管理上百个replication)
5)Noperformance penalty
性能优秀,可工作在半同步复制和异步复制,当监控mysql状态时,仅需要每隔N秒向master发送ping包(默认3秒),所以对性能无影响。你可以理解为MHA的性能和简单的主从复制框架性能一样。
6)Works with any storage engine
只要replication支持的存储引擎,MHA都支持,不会局限于innodb