手头上有个项目,是做全球级服务器的,需要较高的并发读写要求。
据我了解,MYSQL集群方案有挺多的,主从读写分离是最容易实现的,但是会很快碰到主服务器写入瓶颈的问题,sharding方案才是未来可扩展的解决方案。目前我觉得有两个方案较为靠谱:
1、MYSQL CLUSTER,这个是MYSQL的官方集群方案,直接在数据库级别支持ndb网络节点,自动分片,自动join,单机故障不影响集群;
2、MYCAT,这个是基于阿里巴巴的Cobar方案优化而来,其支持团队也挺卖力的,支持半自动化分片、join。为什么叫“半自动化”呢?因为需要DBA对每个表的分片策略进行配置和干涉。个人感觉没有方案1的傻瓜式分片简单。
就想问下坛子里的大牛们,你们会怎么选?会更倾向于支持哪个方案呢?这两种方案有哪些致命的缺点吗?

解决方案 »

  1.   

    能够子集做的话更好,可以考虑使用360的,或者有一个https://github.com/flike/kingshard/blob/master/README_ZH.md这个看下
      

  2.   

    CLUSTER数据都是放在内存里的,这个硬件只怕不便宜,而且实时同步依靠的是超大的网络带宽。生产环境没有听说过的案例。
      

  3.   


    mysql cluster是所有数据都得放到内存,再能读取,所以数据大了,内存不够用会严重影响性能,当然他的功能是很有特色的。而阿里的本质上就是分库、分表,水平拆分垂直拆分,业务拆分数据拆分 之类的技术,通过代码来减少手工的工作量。两种方案都是不完善,有问题的,所以你要看应用场景。比如分表之后,表之间的关联怎么处理,阿里说可以做join,但是这种join是否有其他的限制。
      

  4.   

    mysql cluster新版已经可以做成物理表了,但缺点也存在,除非了带宽,磁盘容量也是个头疼问题