MMM: Multi-Master Replication Manager for MySQL,Mysql主主复制管理器是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的)
官网:
http://www.mysql-mmm.org https://code.google.com/archive/p/mysql-master-master/downloads
MHA: Master High Availability,对主节点进行监控,可实现自动故障转移至其它从节点;通过提升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,出于机器成本的考虑,淘宝进行了改造,目前淘宝TMHA已经支持一主一从
弊端:管理端只能用Centos7做,其容灾性好,但其只能达到999
官网: https://code.google.com/archive/p/mysql-master-ha/
Galera Cluster:wsrep(MySQL extended with the Write Set Replication)通过wsrep协议在全局实现复制;任何一节点都可读写,不需要主从复制,实现多主读写,容灾可达9999,但是灵活性不好,比较古板
GR(Group Replication):MySQL官方提供的组复制技术(MySQL 5.7.17引入的技术),基于原生复制技术Paxos算法、
MHA集群架构
提升原则:健康(服务器和数据健康)、关系好
首先MHA是一个manager管控多个业务的集群架构体系,它的高可用实现主服务器宕机,提升新主。它基于远程连接ssh协议来同步数据(同步主节点的master的binlog events),此时会涉及到两种情况:
①主节点数据库宕机,那么它会基于ssh协议直接将binlog events 直接同步到从服务器中,并将其提升为新主(必须要健康),其它从节点change master to 直接指向新主,从而实现新一轮的主从复制
②主节点直接宕机;如果是主节点数据库宕机,一旦主节点数据库宕机,此时MHA的manager就会从后台挑选一个日志差异化最小的latest slave作为新主,将主节点的二进制日志对应的数据,基于远程连接协议同步到提升新的从节点去。同步之后,新的latest slave去重放binlog events,重放完之后,从服务器就会变成一个新主(此时新主二进制日志的数据量和之前的master数据量相差无几),新的主节点会将它的二进制日志同步给从节点,从而形成新一轮的主从复制
在master节点启用参数:
sync_binlog=1 每次写后立即同步二进制日志到磁盘,性能差
【注】:MHA是基于远程连接协议ssh来同步数据的,所以必须要求做MHA整个高可用集群架构之前,必须先基于key验证,做免密(管理节点和所有的主节点、以及所有的从节点做key验证)
MHA工作原理
1.MHA利用SELECT 1 As Value指令判断master服务器的健康性,一旦master宕机,MHA从宕机崩溃的master保存二进制日志事件(binlog events)
2.识别含有最新更新的slave,新的latest slave去重放binlog events,重放完之后,从服务器就会变成一个新主(此时新主二进制日志的数据量和之前的master数据量相差无几)
3.应用差异的中继日志(relay log)到其他的slave
4.应用从master保存的二进制日志事件(binlog events)
5.提升一个slave为新的master
6.使其他的slave连接新的master进行复制
MHA软件由两部分组成,Manager工具包和Node工具包
Manager工具包主要包括以下几个工具:
masterha_check_ssh 检查MHA的SSH配置状况
masterha_check_repl 检查MySQL复制状况
masterha_manger 启动MHA
masterha_check_status 检测当前MHA运行状态
masterha_master_monitor 检测master是否宕机
masterha_master_switch 故障转移(自动或手动)
masterha_conf_host 添加或删除配置的server信息
Node工具包:这些工具通常由MHA Manager的脚本触发,无需人为操作)主要包括以下几个工具:
save_binary_logs 保存和复制master的二进制日志
apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的slave
filter_mysqlbinlog 去除不必要的ROLLBACK事件(MHA已不再使用此工具)
purge_relay_logs 清除中继日志(不会阻塞SQL线程)
自定义扩展:
secondary_check_script: 通过多条网络路由检测master的可用性
master_ip_ailover_script: 更新Application使用的masterip
shutdown_script: 强制关闭master节点
report_script: 发送报告
init_conf_load_script: 加载初始配置参数
master_ip_online_change_script:更新master节点ip地址
配置文件:
global配置,为各application提供默认配置
application配置:为每个主从复制集群
步骤:①:实现基于KEY密码认证
②:manager节点安装两个mha程序包,其他被管理节点只需安装node包