zoukankan      html  css  js  c++  java
  • MySQL高可用解决方案(MySQL HA Solution)

    http://blog.sina.com.cn/s/blog_7e89c3f501012vtr.html

    什么是高可用性?
    很多公司的服务都是24小时*365天不间断的。比如Call Center。这就要求高可用性。再比如购物网站,必须随时都可以交易。那么当购物网的server挂了一个的时候,不能对业务产生任何影响。这就是高可用性。

    高可用性2个问题:
    如何共享数据或同步数据?如何处理failover?
    解释failover,意思就是当服务器down掉,或者出现错误的时候,可以自动的切换到其他待命的服务器,不影响服务器上App的运行。

    对于分布式数据库系统。如何架构才能保证其高可用性呢?以MySQL为例。

    1. MySQL replication with manual failover

    同步数据是采用MySQL replication的方法,在MySQL分表分块到主从已经解释。简单的说就是从库根据主库的日志来做相应的处理,保证数据的一致。通常还配合MySQL Proxy或Amoeba等进行读写分离减少服务器压力。
    manual failover,显然当Master挂掉时,利用本方式是需要手动来处理failover,一般来说是将slave更改为server。
    可用性达到: 98%-99.9+%

    2. Master-Master with MMM manager(Multi-Master Replication Manager)

    同步数据的方式是Multi-Master Replication Manager,在MySQL分表分块到主从解释,多主多从的设置,是一个loop环形,每个DB既是前一个DB的Slave又是后一个的Master。优势就在于,一个Master挂掉,也还可以继续DB操作。每个DB都可以进行读写,分散压力。
    可用性达到:99%

    3. Heartbeat/SAN

    处理failover的方式是Heartbeat,Heartbeat可以看成是一组程序,监控管理各个node间连接的网络。当node出现错误时,自动启动其他node开始服务。Heartbeat必须解决的一个问题就是split brain,在网络中的一个node down掉后,每个node都会认为其他node down掉并尝试开始服务,因为产生数据冲突。

    通过SAN来共享数据。
    SAN:Storage Area Network,是一种LAN来处理大数据量的传输,提供了计算机和存储系统之间的数据传输。各个计算机组成的集群可以通过SAN共享存储。
    MySQL高可用解决方案(MySQL <wbr>HA <wbr>Solution)

    当server1挂掉的时候,Heartbeat监控到启动Server2的服务。而因为采用了SAN来共享了存储,Server2可以直接利用SAN网络中的数据。通过这种方式来提供高可用的解决方案。
    可用性达到: 99.5%-99.9%

    4. Heartbeat/DRBD

    处理failover的方式依旧是Heartbeat。
    同步数据使用DRBD:Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。和SAN网络不同,它并不共享存储,而是通过服务器之间的网络复制数据。
    MySQL高可用解决方案(MySQL <wbr>HA <wbr>Solution)
    可用性达到: 99.9%

    5. MySQL Cluster(NDB Cluster)

    MySQL Cluster也是由各个DB node组成一个cluster,在这个cluster中由网络连接。可以自由的增减node的个数来对应数据库压力。
    MySQL高可用解决方案(MySQL <wbr>HA <wbr>Solution)

    synchronous replication(同步复制,要不同时成功要么同时失败)的方式来同步各个node的数据。然后对各个table进行partition,基于各个table的primary key。
    采用了Shared Nothing Architecture的结构。不共享任何数据,而是每个node都同步好各自的数据。这样即使是PC也可以轻松被加入到Shared Nothing的结构中。
       Share disk              Share nothing                Share memory 
    MySQL高可用解决方案(MySQL <wbr>HA <wbr>Solution)
    很难懂,我猜想MySQL Cluster的结构应该和Hadoop中的HDFS(Hadoop Distributed File System)相似,按照key来做partition,然后将各个partition通过synchronous的方式同步的保存到各个DataNode上,Management Node来监听管理Cluster,通过SQL Node来访问DataNode上的数据。

  • 相关阅读:
    二维数组求矩形最大子数组和
    关于返回一个整数数组中最大子数组的和的问题(详细版)
    学习进度第三周
    人月神话阅读笔记03
    团队开发项目-NABCD模型
    第七周学习总结
    人月神话阅读笔记01
    第六周学习总结
    大道至简阅读笔记03
    结对开发地铁查询
  • 原文地址:https://www.cnblogs.com/bluejoe/p/5115879.html
Copyright © 2011-2022 走看看