Linux|系统管理|WEB开发

关注Linux,系统管理,WEB开发以及开源世界

寻找适合你的MySQL高可用解决方案

| Comments

摘译自 mysql performance blog

需要MySQL高可用吗?

问题似乎很明显,但是有时却忽略了。实际上这是一个投入和产出的问题,投入越大,你获得数据安全性就越高,所以这个问题可以归结为”你的服务器宕机成本是多少?“,如果你的宕机成本小于$10/hour,那基本上你不需要高可用方案了,So,不用浪费时间看下文了。

如何确定哪种高可用方案对你最好?

当前,MySQL高可用有下面几种,从简单到非常复杂,我们排列一下

  • MySQL replication with manual failover
  • Master-Master with MMM manager
  • Heartbeat/SAN
  • Heartbeat/DRBD
  • NDB Cluster

就目前为止,可能不是上面的某一个方案就能完全适合你,大部分情况下是多种方案联合起来。要选择上面哪种方案,其实还是取决于你的对宕机时间的容忍,越复杂的方案,宕机时间越短,但是成本也就越高,需要仔细计算你的预算。

你需要哪个级别的HA?

所有的技术都不能保证100%的系统有效,同样,不同的技术提供的系统有效级别也不同。因此第一个重要的考虑因素便是有效级别,下面有一个对各种解决方案提供的有效级别评估表


  有效级别                            宕机时间( per year)
                                                   
  Simple replication               98 to 99%        3天15小时 ~ 7天

  Master-Master with MMM manager   99%              3天15小时

  Heartbeat/SAN (depends on SAN)   99.5% to 99.9%   43.8小时 ~ 8.8小时

  Heartbeat/DRBD                   99.9%            8.8小时

  NDB Cluster                      99.999%          5分钟
 

根据上表,如果你的要求是99.99%,那么你可能只能选择NDB Cluster了,但是你只是要求99%,那选择范围就宽了很多。实际上,评估使用哪个有效级别还是很难的,需要仔细思辩。

能承受数据丢失吗?

显然,相对有效级别而言,可能你更关心数据的安全,你很可能使用innoDB存储引擎,因为MyISAM缺乏事务交易,而且不同步数据到磁盘。
同样的,MySQL replication 采取异步处理,尽管它在master和slave之间传输数据非常快,但是仍然有丢失数据的机会。
如果你能承受数据丢失,那么,你可以考虑“MySQL replication” 和“Master-Master with MMM manager”,否则,你就只能考虑别的方案了。

  --------------------         -----------
                                  数据100%安全
                                   
  MySQL replication                否
                                   
  Master-Master with MMM manager   否
                                 
  Heartbeat/SAN (depends on SAN)   是
                                   
  Heartbeat/DRBD                   是
                                   
  NDB Cluster                      是
                                   
  -------------------------   -----------

你的应用程序仅用到了MyISAM特性吗?

包括全文索引,GIS索引在内的特性仅被MyISAM支持。“MySQL replication”和”Master-Master with MMM manager”解决方案对MyISAM支持的非常好。取决于你的应用程序,MyISAM全文索引可以被另外的搜索引擎替代,比如Sphinx替代,这样可以打破只能使用MyISAM存储引擎的限制。对于GIS索引,目前还没有替代的方案。


                                   HA 解决方案
                            

 需要MyISAM全文索引或GIS索引           “MySQL replication” 和 “Master-Master with MMM manager”
                            
  不使用任何MyISAM特性                 所有
                            
  可以用Sphinx替换MyISAM的全文索引      所有
                            

什么是写负载

上述的HA解决方案在写负载方面并不相同。因为复制(replication)实现的原因,slave上仅有一个线程能处理写操作。如果复制主机(master)是多核CPU,而且有使用多线程的写操作,那么slave就可能无法和master保持一致。如果使用Linux下的共享存储模拟DRBD,大致能较低30%的写负载(严重依赖硬件条件),在写能力方面,你可以参考下面的表格

  -------------------------------- ------
                                  写能力
                                   

  MySQL replication                正常
                                   

  Master-Master with MMM manager   正常
                                   

  Heartbeat/SAN (depends on SAN)   优秀
                                   

  Heartbeat/DRBD                   好
                                   

  NDB Cluster                      优秀
                                   
  -------------------------------- ------

为什么样的增长度做计划

因为NDB Cluster是一个集成的共享环境(将数据库分隔到多台服务器上),如果你需要这个功能,你可以认真考虑这个方案,否则,除去写能力外,其他方案大致相等。

职员或者技术支持公司水平如何

有效级别和解决方案的复杂度有着直接的正比关系。为了达到期望的有效级别,内部或者外部维护HA配置的职员,就必须具备同等的能力和经验,参考下表:

  -------------------------------- -----------------------------
                                  专业级别
                                   

  MySQL replication                一般 MySQL DBA 水平,加上一些系统管理能力

  Master-Master with MMM manager   较好的MySQL DBA 水平,加上较好的系统管理能力

  Heartbeat/SAN (depends on SAN)   较高的MySQL DBA 水平,较强的系统管理能力
                                   

  Heartbeat/DRBD                   较高的MySQL DBA 水平,较强的系统管理能力

  NDB Cluster                      对NDB知识非常了解,很高的MySQL以及系统管理技能
  -------------------------------- -----------------------------

你有多少米米

最有一个需要考虑的问题便是预算了,复杂意味着昂贵。我们考虑项目的两个阶段。第一个是基本测试,也就是方案论证,包括硬件测试,数据导入,基本测试和文档化。
另外一个阶段就是迁移到生产线,包括多方面测试,消防预演,完整的文档,监控,报警,备份,迁移,迁移后监控等。
当然,这是迁移HA解决方案到产品线最安全的做法。下表是基于行业一般水平制的两个阶段需要的时间,考虑到一些非预计问题,所有时间都留有余地

  -------------------------------- ------- ---------
                                  概念认证   迁移到生产线
                                           

  MySQL replication                4小时     12小时

  Master-Master with MMM manager   8小时     24小时

  Heartbeat/SAN (depends on SAN)   32小时    120小时

  Heartbeat/DRBD                   40小时    120小时

  NDB Cluster                      40小时    120+ 小时
  -------------------------------- ------- ---------

Comments