本文来自博主道不尽,书不穷!如有疑问,欢迎进入博主页面进行互动讨论。博文地址:http://51power.blog.51cto.com/3549599/1664138什么是高可用?很多公司的服务都是24小时*365天不间断的。比如呼叫中心。这需要高可用性。另一个例子是购物网站,必须随时可以进行交易。那么当购物网的其中一台服务器挂掉的时候,是不会对业务造成任何影响的。这是高可用性。如何处理故障转移?解释一下,故障转移是指当服务器宕机或出现错误时,能够自动切换到其他备用服务器,而不影响该服务器上App的运行。以MySQL为例,什么样的架构才能保证它的高可用呢?mysqlreplicationwithmanualfailover是使用mysqlreplication的方式来同步数据的,这个在mysql分表和block到master-slave中已经解释过了。简单的说,从库根据主库的日志进行相应的处理,保证数据的一致性。通常还会配合MySQLProxy或Amoeba进行读写分离,减轻服务器压力。手动failover,很明显当master挂了,使用这种方式需要手动处理failover,一般来说,把slave换成server。Master-MasterwithMMMmanager(Multi-MasterReplicationManager)与Multi-MasterReplicationManager同步数据。在MySQL中,表被分成块来进行主从解释。多主多从设置是环环。每个DB既是前一个DB的Slave又是后者的Master。好处是即使一个Master挂了,DB的操作还是可以继续的。每个DB都可以读写,分散压力。Heartbeat/SAN处理故障转移的方式是Heartbeat。Heartbeat可以看作是一组程序,用于监控和管理节点间连接的网络。当节点发生错误时,自动启动其他节点启动服务。Heartbeat必须解决的一个问题是脑裂。网络中的一个节点宕机后,每个节点都会认为其他节点宕机,因为数据冲突而尝试启动服务。通过SAN共享数据SAN:StorageAreaNetwork,是处理大量数据传输的局域网,提供计算机和存储系统之间的数据传输。计算机集群可以通过SAN共享存储。Heartbeat/DRBD处理failover的方式还是Heartbeat。使用DRBD同步数据:分布式复制块设备(DRBD)是一种软件实现的无共享存储复制解决方案,用于在服务器之间镜像块设备内容。与SAN网络不同,它不共享存储,而是通过网络在服务器之间复制数据。MySQLClusterMySQLCluster也是由各个DB节点组成一个集群,通过网络连接起来。可以根据数据库压力自由增减节点数。MHAMHA(MasterHighAvailability),MySQL高可用的杀手级工具,是目前MySQL高可用方面比较成熟的解决方案。它是由日本DeNA公司youshimaton(现就职于Facebook)开发的。是一套优秀的MySQL高可用解决方案。用于可用性环境中故障转移和主从升级的高可用性软件。在MySQL故障转移过程中,MHA可以在0~30秒内自动完成数据库的故障转移操作,并且在故障转移过程中,MHA可以最大程度保证数据的一致性,实现真正意义上的高可用。软件由两部分组成:MHAManager(管理节点)和MHANode(数据节点)。MHAManager可以部署在一台独立的机器上管理多个主从集群,也可以部署在一个从节点上。MHANode运行在每台MySQL服务器上,MHAManager会定时检测集群中的master节点。当master出现故障时,它可以自动将拥有最新数据的slave提升为新的master,然后将所有其他slave重定向到新的master。大师。整个故障转移过程对应用程序是完全透明的。在MHA自动故障转移过程中,MHA会尝试从宕机的主服务器上保存二进制日志,以最大程度保证数据不丢失,但这并不总是可行的。比如主服务器硬件出现故障或者无法通过ssh访问,MHA无法保存二进制日志,只会进行故障转移,丢失最新的数据。有了MySQL5.5的半同步复制,可以大大降低数据丢失的风险。MHA可以与半同步复制相结合。如果只有一个slave收到了最新的二进制日志,MHA可以将最新的二进制日志应用到所有其他slave服务器上,从而保证所有节点的数据一致性。目前MHA主要支持一主多从的架构。搭建MHA,要求一个复制集群中至少要有三台数据库服务器,一主两从,即一台作为Master,一台作为备Master,一台作为Slave.,因为至少需要三台服务器,出于机器成本的考虑,淘宝也在此基础上进行了改造。目前淘宝TMHA已经支持一主一从。官方介绍:https://code.google.com/p/mysql-master-ha/#p#该架构实现功能a。一个主库,三个从库(其中一个为备份master),实现ABBBReplicationb.使用Atlas实现读写分离,主库和备份主库接收写操作,从库接收读操作c.使用MHA实现现有架构的高可用d.使用keepalived实现vip漂移e。手动编写shell,修复Mhae1的不足。修复AB故障转移一次后,mha-manager会自动退出e2。修复原来的主库。出现问题后,无法自动加入已有的AB集群e3。关于清除relaylog本实现架构图1本架构主机划分软件版本安装路径
