一个很大的坑,不求完美的方案,一起讨论讨论。之前在知乎和CU上都问过这个问题,但一直未得到心目中 重量级 的解惑,故续此处。组建MySQL集群的几种方案LVS+Keepalived+MySQL(有脑裂问题?但似乎很多人推荐这个)
DRBD+Heartbeat+MySQL(有一台机器空余?Heartbeat切换时间较长?有脑裂问题?)
MySQL Proxy(不够成熟与稳定?使用了Lua?是不是用了他做分表则可以不用更改客户端逻辑?)
MySQL Cluster (社区版不支持INNODB引擎?商用案例不足?稳定性欠佳?或者还有其他问题?又或者听说现在发展不错?)
MySQL + MHA (如果配上异步复制,似乎是不错的选择,又和问题?)
MySQL + MMM (似乎反映有很多问题,未实践过,谁能给个说法)
淘宝的Cola(似乎现在停止开发了?)?变形虫Amoeba(事务支持?)
或者,其他方案?
知乎回答1: 不管哪种方案都是有其场景限制 或说 规模限制,以及优缺点的。 1. 首先反对大家做读写分离,关于这方面的原因解释太多次数(增加技术复杂度、可能导致读到落后的数据等),只说一点:99.8%的业务场景没有必要做读写分离,只要做好数据库设计优化 和配置合适正确的主机即可。 2.Keepalived+MySQL --确实有脑裂的问题,还无法做到准确判断mysqld是否HANG的情况; 3.DRBD+Heartbeat+MySQL --同样有脑裂的问题,还无法做到准确判断mysqld是否HANG的情况,且DRDB是不需要的,增加反而会出问题; 3.MySQL Proxy -- 不错的项目,可惜官方半途夭折了,不建议用,无法高可用,是一个写分离; 4.MySQL Cluster -- 社区版本不支持NDB是错误的言论,商用案例确实不多,主要是跟其业务场景要求有关系、这几年发展有点乱不过现在已经上正规了、对网络要求高; 5.MySQL + MHA -- 可以解决脑裂的问题,需要的IP多,小集群是可以的,但是管理大的就麻烦,其次MySQL + MMM 的话且坑很多,有MHA就没必要采用MMM
建议:
1.若是双主复制的模式,不用做数据拆分,那么就可以选择MHA或 Keepalive 或 heartbeat
2.若是双主复制,还做了数据的拆分,则可以考虑采用Cobar;
3.若是双主复制+Slave,还做了数据的拆分,需要读写分类,可以考虑Amoeba; 上述所有的内容都要依据公司内部的业务场景、数据量、访问量、并发量、高可用的要求、DBA人群的数量等 综合权衡知乎链接:http://www.zhihu.com/question/21307639本人之前开发人员,对MySQL不太熟,现国内『某省运营商』希望出个分布式MySQL的方案,就方案的那种,结果摊到小弟公司头上,望大神指点迷津。
MySQL集群数据库
DRBD+Heartbeat+MySQL(有一台机器空余?Heartbeat切换时间较长?有脑裂问题?)
MySQL Proxy(不够成熟与稳定?使用了Lua?是不是用了他做分表则可以不用更改客户端逻辑?)
MySQL Cluster (社区版不支持INNODB引擎?商用案例不足?稳定性欠佳?或者还有其他问题?又或者听说现在发展不错?)
MySQL + MHA (如果配上异步复制,似乎是不错的选择,又和问题?)
MySQL + MMM (似乎反映有很多问题,未实践过,谁能给个说法)
淘宝的Cola(似乎现在停止开发了?)?变形虫Amoeba(事务支持?)
或者,其他方案?
知乎回答1: 不管哪种方案都是有其场景限制 或说 规模限制,以及优缺点的。 1. 首先反对大家做读写分离,关于这方面的原因解释太多次数(增加技术复杂度、可能导致读到落后的数据等),只说一点:99.8%的业务场景没有必要做读写分离,只要做好数据库设计优化 和配置合适正确的主机即可。 2.Keepalived+MySQL --确实有脑裂的问题,还无法做到准确判断mysqld是否HANG的情况; 3.DRBD+Heartbeat+MySQL --同样有脑裂的问题,还无法做到准确判断mysqld是否HANG的情况,且DRDB是不需要的,增加反而会出问题; 3.MySQL Proxy -- 不错的项目,可惜官方半途夭折了,不建议用,无法高可用,是一个写分离; 4.MySQL Cluster -- 社区版本不支持NDB是错误的言论,商用案例确实不多,主要是跟其业务场景要求有关系、这几年发展有点乱不过现在已经上正规了、对网络要求高; 5.MySQL + MHA -- 可以解决脑裂的问题,需要的IP多,小集群是可以的,但是管理大的就麻烦,其次MySQL + MMM 的话且坑很多,有MHA就没必要采用MMM
建议:
1.若是双主复制的模式,不用做数据拆分,那么就可以选择MHA或 Keepalive 或 heartbeat
2.若是双主复制,还做了数据的拆分,则可以考虑采用Cobar;
3.若是双主复制+Slave,还做了数据的拆分,需要读写分类,可以考虑Amoeba; 上述所有的内容都要依据公司内部的业务场景、数据量、访问量、并发量、高可用的要求、DBA人群的数量等 综合权衡知乎链接:http://www.zhihu.com/question/21307639本人之前开发人员,对MySQL不太熟,现国内『某省运营商』希望出个分布式MySQL的方案,就方案的那种,结果摊到小弟公司头上,望大神指点迷津。
MySQL集群数据库
解决方案 »
- for update行锁
- MYSQL 中文生僻字乱码问题
- 求一段代码或存储过程把库名改为大写
- WWWWB来
- 请教大家,MySQL安装版与解压版的区别
- sql查询语句查到的结果与条件文不对题的奇怪问题?
- ▄◣急!问高手"php+mysql程序从win2000移植到linux下后出现的两个简单小错误",最好请斑竹帮我解答一下!up也有分,分不够再加...
- Mysql 跟MSsql 通信问题
- MySQL不能用Select top 1 * from...这样的语句
- 数据库
- 求将这个MS-SQL语句改成MySql语句
- 有2个表 [color=#FF0000]lasttime_table[/color](登录时间表) [color=#FF00FF]regtime_table[/
脑裂drbd也有 但是脑裂是可以处理的
DRBD+Heartbeat+MySQL(有一台机器空余?Heartbeat切换时间较长?有脑裂问题?)
一秒算长吗
MySQL Proxy(不够成熟与稳定?使用了Lua?是不是用了他做分表则可以不用更改客户端逻辑?)
到现在也没个GA版
MySQL Cluster (社区版不支持INNODB引擎?商用案例不足?稳定性欠佳?或者还有其他问题?又或者听说现在发展不错?)
percona的cluster支持innodb引擎 学习起来相对于ndb 代价很小
MySQL + MHA (如果配上异步复制,似乎是不错的选择,又和问题?)
不清楚
MySQL + MMM (似乎反映有很多问题,未实践过,谁能给个说法)
按照高性能mysql第三版作者的话 不推荐使用
淘宝的Cola(似乎现在停止开发了?)?变形虫Amoeba(事务支持?)
还有360的Atlas 这种东西未必对所有公司是好用的