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

摘译自 mysql performance blog

需要MySQL高可用吗?

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

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

当前,MySQL高可用有下面几种,从简单到非常复杂,我们排列一下MySQL replication with manual failoverMaster-Master with MMM managerHeartbeat/SANHeartbeat/DRBDNDB Cluster

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

1.你需要哪个级别的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%,那选择范围就宽了很多。实际上,评估使用哪个有效级别还是很难的,需要仔细思辩。

2.能承受数据丢失吗?

显然,相对有效级别而言,可能你更关心数据的安全,你很可能使用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

3.你的应用程序仅用到了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的全文索引 所有

4.什么是写负载

上述的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 优秀

5.为什么样的增长度做计划

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

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

有效级别和解决方案的复杂度有着直接的正比关系。为了达到期望的有效级别,内部或者外部维护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以及系统管理技能

7.你有多少米米

最有一个需要考虑的问题便是预算了,复杂意味着昂贵。我们考虑项目的两个阶段。第一个是基本测试,也就是方案论证,包括硬件测试,数据导入,基本测试和文档化。另外一个阶段就是迁移到生产线,包括多方面测试,消防预演,完整的文档,监控,报警,备份,迁移,迁移后监控等。当然,这是迁移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+ 小时

觉得文章有用?立即:和朋友一起 共学习 共进步!

建议继续学习:

  1. 基于MySQL的高可用可扩展架构探讨    (阅读:3204)
  2. 利用MySQL Cluster 7.0 + LVS 搭建高可用环境    (阅读:2869)
  3. ORACLE Fusion-io最佳实践    (阅读:2104)
  4. 构建高可用系统之故障篇    (阅读:2061)
  5. Oracle+Fusionio+Dataguard的高可用方案    (阅读:2044)
  6. 分布式系统设计系列 -- 基本原理及高可用策略    (阅读:2034)
  7. Oracle高可用架构    (阅读:1801)
  8. 构建高可用和弹性伸缩的KV存储系统    (阅读:1724)
  9. puppetca 高可用性以及负载均衡配置    (阅读:1683)
  10. 《火星救援》中你应该知道的5个高可用系统故障恢复原则    (阅读:1481)

QQ技术交流群:445447336,欢迎加入!

扫一扫订阅我的微信号:IT技术博客大学习

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章