MySQL Cluster 数据库集群

高性能 可扩展性 集群化数据库产品

研发的初衷 就是满足许多行业里 最严酷的应用要求…. 要求数据库可靠性 99.999%

是基于无共享的可由多台服务器组成的、同时对外提供数据管理服务的分布式集群系统。 通过合理的配置,可以将服务请求在多台物理机上分发实现负载均衡 ; 同时内部实现了冗余机制,在部分服务器宕机的情况下,整个集群对外提供的服务不受影响,从而能达到99.999%以上的高可用性。

MySQL Cluster设计之初出于性能考虑,将数据完全存放在内存当中,因此MySQL Cluster可以当作一种分布式的内存数据库。

建议: 1.若是双主复制的模式,不用做数据拆分,那么就可以选择MHA或 Keepalive 或 heartbeat 2.若是双主复制,还做了数据的拆分,则可以考虑采用Cobar; 3.若是双主复制+Slave,还做了数据的拆分,需要读写分类,可以考虑Amoeba;

先了解一下你是否应该用MySQL集群。 减少数据中心结点压力和大数据量处理,采用把MySQL分布,一个或多个application对应一个MySQL数据库。把几个MySQL数据库公用的数据做出共享数据,例如购物车,用户对象等等,存在数据结点里面。其他不共享的数据还维持在各自分布的MySQL数据库本身中。

Management Node(管理节点):mysql集群全局的管理者,整个集群只有一个management node,负责管理集群架构中的其他Nodes(节点),包括控制其他节点的启停,查看节点状态等。另外还维护了集群的全局配置信息,因此在整个集群环境中应该优先于所有节点启动。管理节点启动命令为ndb_mgmd. Data Node(数据节点):数据的存储节点,集群中会有多个Data Node,每个节点存储数据多个数据副本。虽然mysql集群可以设置副本数量为1,即集群没有数据冗余,所有节点的只存储各自数据片段的副本,但是这样的集群也就失去了意义,所以为了保证高可用性,建议最好是设定副本数量至少为2,或者更大,一份用于存储,一份作为冗余。系统默认值为2. 冗余副本数量越大,需要的节点数就会越多。Data node 节点启动命令为ndbd.关于存储副本的概念参考图-02(来自官网)也许有助于理解副本、冗余的含义和作用。

如果单MySQL的优化始终还是顶不住压力时, 这个时候我们就必须考虑MySQL的高可用架构(很多同学也爱说成是MySQL集群)了, 目前可行的方案有:

一、MySQL Cluster
优势:可用性非常高,性能非常好。每份数据至少可在不同主机存一份拷贝,且冗余数据拷贝实时同步。但它的维护非常复杂,存在部分Bug,目前还不适合比较核心的线上系统,所以这个我不推荐。

二、DRBD磁盘网络镜像方案
优势:软件功能强大,数据可在底层快设备级别跨物理主机镜像,且可根据性能和可靠性要求配置不同级别的同步。IO操作保持顺序,可满足数据库对数据一致性的苛刻要求。但非分布式文件系统环境无法支持镜像数据同时可见,性能和可靠性两者相互矛盾,无法适用于性能和可靠性要求都比较苛刻的环境,维护成本高于MySQL Replication。另外,DRBD也是官方推荐的可用于MySQL高可用方案之一,所以这个大家可根据实际环境来考虑是否部署。

三、MySQL Replication
在实际应用场景中,MySQL Replication是使用最为广泛的一种提高系统扩展性的设计手段。众多的MySQL使用者通过Replication功能提升系统的扩展性后,通过简单的增加价格低廉的硬件设备成倍 甚至成数量级地提高了原有系统的性能,是广大MySQL中低端使用者非常喜欢的功能之一,也是许多MySQL使用者选择MySQL最为重要的原因。 比较常规的MySQL Replication架构也有好几种,这里分别简单说明下 MySQL Replication架构一:              常规复制架构–Master-slaves,是由一个Master复制到一个或多个Salve的架构模式,主要用于读压力大的应用数据库端廉价扩展解决方案,读写分离,Master主要负责写方面的压力。

MySQL Replication架构二:              级联复制架构,即Master-Slaves-Slaves,这个也是为了防止Slaves的读压力过大,而配置一层二级 Slaves,很容易解决Master端因为附属slave太多而成为瓶劲的风险。
MySQL Replication架构三:              Dual Master与级联复制结合架构,即Master-Master-Slaves,最大的好处是既可以避免主Master的写操作受到Slave集群的复制带来的影响,而且保证了主Master的单点故障。
以上就是比较常见的MySQL replication架构方案,大家可根据自己公司的具体环境来设计 ,Mysql 负载均衡可考虑用LVS或Haproxy来做,高可用HA软件我推荐Heartbeat。   MySQL Replication的不足:           如果Master主机硬件故障无法恢复,则可能造成部分未传送到slave端的数据丢失。所以大家应该根据自己目前的网络规划,选择自己合理的Mysql架构方案,跟自己的MySQL DBA和程序员多沟涌,多备份(备份我至少会做到本地和异地双备份),多测试,数据的事是最大的事,出不得半点差错,切记切记。