主流mysql集群实现架构优劣势与适用场景分析
本文主要分析总结了目前主流的几种mysql集群架构实现方法及优缺点,现发出来以供大家参考学习、共同进步,如有不妥之处,请不吝赐教~
一、主从复制架构mha
mha即master high availability manager and tools for mysql,是日本的一位mysql专家采用perl语言编写的一个mysql高可用管理工具,目的在于维持master主库的高可用性及数据的一致性。
mha目前在 mysql高可用方面是一个相对成熟的解决方案且在大量的企业得到广泛使用。其最大特点是可以修复多个slave之间的差异日志,最终使所有slave保持数据一致,然后从中选择一个slave数据库作为新的master,并将其它slave指向它。
当master故障时,mha会从多个slave中随机选择一个充当新的master,也可在配置文件中指定某一个slave优先成为master。
其架构如下,请参考:
对上图做如下简单解释,请参考:
1.在mha架构中读写分离,最佳实践是在应用开发设计时提前规划读写分离事宜,在使用时设置两个连接池,即读连接池与写连接池,也可以选择折中方案即引入sql proxy;
2.关于读负载均衡可以使用f5、lvs、haproxy或者sql proxy等工具,只要能实现负载均衡、故障检查及备升级为主后的读写剥离功能即可,建议使用lvs;
3.mha manager node 主要负责主库在crash时将bin log完整同步到slave库、监控主备库的状态及切换。
二、官方集群mysqlcluster架构
mysql cluster是oracle官方提供的一种企业级解决方案。其采用了无共享存储的数据存储模式,真正实现了数据在集群中的实时同步及数据库节点故障对应用的透明性。官方承诺mysql cluster可以保证数据库系统99.999%的可用性。
对上图做如下简单解释,请参考:
1.关于读、写负载均衡可以使用f5、lvs、haproxy或则其他sql proxy等工具,只要能实现负载均衡、故障检查即可;
2. mysql cluster同时支持cluster和sharding功能,一般根据实际需要进行设计表;
3.做sharding的表一般需要使用ndb cluster 存储引擎;
4.mgm节点:作用是管理mysql cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等,其本身产生故障不会影响mysql cluster;
5.sql节点:用来访问 cluster数据的节点;
6.ndb节点:用于保存 cluster的数据;
7.mysql cluster支持集群到集群之间的实时同步,粒度可细致到行级别,可实现夸数据中心部署。
三、开源分布式方案cobar
cobar是阿里巴巴b2b部门开发的一种关系型数据的分布式处理系统,它可以在分布式的环境下看上去像传统数据库一样为您提供海量数据服务。cobar的主要功能如下:
1. cobar支持将一张表水平拆分成多份分别放入不同的库来实现表的水平拆分;
2. cobar也支持将不同的表放入不同的库;
3.多数情况下,会将以上两种方式混搭使用;
4. cobar可以自动向后端连接的mysql发送心跳,判断mysql运行状况,一旦运行出现异常,cobar可以自动切换到备机工作。
对上图做如下简单解释,请参考:
1.cobar同时支持cluster集群功能和sharding数据切片功能,一般根据实际需要会采用混搭的方式;
2.cobar实现了对应用请求的负载均衡、后端节点的健康检查、sql切分及查询结果集的聚合等功能;
3.mysql主备库应设置成主主双向同步方式即须将mysql m01与mysql s01设置成主主同步模式。