【2016年11月30日】

     MHA作者是yoshinori Matsunobu,目前就职与facebook,它与MMM架构都是采用perl语言编写,可在宕机时间(通常为10~30s)内完成故障切换工作。并且还支持在线切换,从当前运行的master切换到另一个新的Master,只需要(0.5~2秒内),此时仅阻塞写操作,并不影响读操作,便于主机的硬件维护。


    与MMM架构区别:MHA会把丢失的数据在每个slave节点上补齐。


1) 工作原理

当master宕机时,MHA管理机会试图scp丢失的那一部分binlog,然后把该binlog拷贝到最新的slave机器上,再补齐差异的binlog并应用。当最新的slave补齐数据后,

再把它的relay-log拷贝到其他的slave上,以识别差异并应用。至此,整个恢复过程结束,从而保证切换后的数据是一致的。

2) 恢复过程

        1. master 宕机

        2. 识别最新的slave,并试图从死掉的master上将scp那一部分差异的binlog执行完,并提升为新的master

        3. 等待最老的slave把中继日志relay-log执行完

        4. 从最新的slave上scp那一部分差异的中继日志relay-log并执行完

        5. scp 死掉Master上那一部分差异的binlog并执行完,至此数据全部恢复一致

    通过{Master_Log_File,Read_Master_Log_Pos} from show slave status 得到位置,mysqlbinlog ---start-position=12345 mysqld-bin.0000123 mysqld-bin.0000124.......