MHA架构搭建.pptx

MHA架构搭建

MHA介绍 MHA(Master High Availability) 目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本人youshimaton开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能最大程度上保证数据库的一致性,以达到真正意义上的高可用。 当Master出现故障时,它可以自动将最新数据的Slave提升为新的Master,然后将所有其他的Slave重新指向新的Master。整个故障转移过程对应用程序是完全透明的。 复制机制 异步复制: MySQL默认是异步复制。Master将事件写入binlog,但并不知道Slave是否或何时已经接收且已处理。在异步复制的机制的情况下,如果Master宕机,事务在Master上已提交,但很可能这些事务没有传到任何的Slave上。假设有Master-Salve故障转移的机制,此时Slave也可能会丢失事务。 同步复制: Master提交事务,直到事务在所有的Slave都已提交,此时才会返回客户端,事务执行完毕。完成一个事务可能会有很大的延迟。 复制机制 半同步复制: 当Slave主机连接到Master时,能够查看其是否处于半同步复制的机制。 当Master上开启半同步复制的功能时,至少应该有一个Slave开启其功能。此时,一个线程在Master上提交事务将受到阻塞,直到得知一个已开启半同步复制功能的Slave已收到此事务的所有事件,或等待超时。当一个事务的事件都已写入其relay-log中且已刷新到磁盘上,Slave才会告知已收到。 如果等待超时,也就是Master没被告知已收到,此时Master会自动转换为异步复制的机制。当至少一个半同步的Slave赶上了,Master与其Slave自动转换为半同步复制的机制. 半同步复制的功能要在Master,Slave都开启,半同步复制才会起作用;否则,只开启一边,它依然为异步复制。 半同步复制工作的机制处于同步和异步之间,Master的事务提交阻塞,只要一个Slave已收到该事务的事件且已记录。它不会等待所有的Slave都告知已收到,且它只是接收,并不用等其完全执行且提交. 隐患 在MHA自动故障切换的过程中,MHA试图从宕掉的主服务器上保存二进制日志,最大程度保证数据的不丢失,但这并不总是可行的。 例如,如果主服务器硬件故障宕机或无法通过SSH访问,MHA没有办法保存二进制日志,只能进行故障转移而可能丢失最新数据。 注:MySQL服务挂了,但是可以从服务器拷贝二进制。但如果硬件宕机或者SSH不能连接,不能获取到最新的binlog日志,如果复制出现延迟,会丢失数据。 场景一:复制为异步复制 会丢失最新数据 场景二:复制为半同步复制 如果只有一个Slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有Slave服务器上,保持数据一致性。 MHA版本 最新版0.56版本,增加了支持GTID的功能,建议在MySQL5.6及之后版本使用。MySQL5.5建议使用管理节点版本0.55,数据节点0.54。 使用场景 目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群必须最少有3台数据库服务器,一主二从,即一台充当Master,一台充当备用Master,另一台充当从库。出于成本考虑,淘宝在此基础上进行了改造,目前淘宝开发的TMHA已经支持一主一从。 我们自己使用其实也可以使用1主1从,但是master主机宕机后无法切换,以及无法补全binlog。master的mysqld进程crash后,还是可以切换成功,以及补全binlog的。 注:MHA Manager可以独立部署在一台独立的机器上管理多个Master-Slave集群,也可以部署在一台Slave上。 MhA原理 1. 从宕机崩溃的Master 保存二进制日志事件(binlog event); 2. 识别含有最新更新的Slave; 3. 应用差异的中继日志(relay log)到其他Slave; 4. 应用从Master 保存的二进制日志事件; 5. 提升一个Slave 为新的Master; 6. 使其他的Slave 连接新的Master 进行复制; MHA组成 1. Manager(管理节点) 工具包: ? masterha_check_ssh:检查MHA 的SSH 配置情况。 ? masterha_check_repl:检查MySQL 复制状况。 ? masterha_manager:启动MHA。 ? masterha_check_status:检测当前MHA 运行状态

文档评论(0)

1亿VIP精品文档

相关文档