引言
MySQL Cluster是MySQL适合于分布式计算环境的高性能、高可用性版本。自从2004年推出以来已经发展到了7. 0版本。起初是专门为电信产业定制的高可用数据库集群技术,目前,最新推出的MySQL Cluster 7. 0版本已经具备了数据分区与备份、内存数据库集群缓存和跨地域数据复制灾备等企业级数据库集群所需的完整功能,适用于对并发处理性能与可用性要求较高的应用系统。
MySQL Cluster采用NDB Cluster存储引擎,允许在Cluster中配置多个数据节点、存储引擎节点、内存数据库缓存与管理节点集群。利用MySQL无共享( Share Nothing)体系结构,系统能够使用廉价的硬件设备扩展当前系统的处理能力,而且对软硬件无特殊要求。此外,由于每个数据分区内可以配置多个灾备数据节点,因此可以解决单点故障问题。图1为NDB存储引整数据分区与备份逻辑架构。
图1 NDB存储引擎数据分区与备份
1虚拟化技术
现有的集群计算环境方式对于要求灵活配置运行的场景并不是非常适合,在很多情况下,只能由应用程序去适应相应的集群环境,而不是为特定的应用提供特殊配置的运行环境。由于各应用对计算环境有不同的要求,运行环境的差别给应用的迁移带来很大困难。
在这种情况下,运用虚拟机技术对物理机的硬件细节进行屏蔽,为其上的应用提供一个统一的执行平台。虚拟技术可以看成是对其下计算资源的一种抽象,这种抽象通过栖牲部分性能来降低计算环境的异构性。
同时,现有的集群环境还只停留在对应用运行的支持上,对于应用开发的不同需求支持力度不够。可以通过使用多计算系统资源虚拟化的方式,建立环境的动态构建机制,完成对资源环境的动态灵活配置。
因此,虚拟技术的应用对于提高网络计算资源的效率有很大帮助。具有高度一致性的虚拟计算环境对于提高计算资源的可维护性也有很多好处。虚拟化技术带来的同构环境大大降低了系统的复杂性,甚至可以将应用程序与其执行环境捆绑在一起,然后共同迁移。虚拟应用的概念就是将一个复杂系统中真正要用到的部分抽取出来与其上应用结合在一起形成一个可以独立执行的整体,从而大大提高资源利用的效率。
文献5中构造了一个由虚拟机组成的虚拟集群(Virtual Cluster),由于一台物理服务器上可以运行多个虚拟机,每个虚拟机可以加人虚拟集群并对应于一个应用。一台服务器实际上可以同时加人对应于不同应用的集群。系统可以根据各应用的优先级对在其上运行的各虚拟机进行动态的资源分配。
虚拟化技术与集群管理的结合,使资源的动态构建以及灵活透明的系统管理成为可能。使用虚拟化的方式能够针对不同的应用去实现,提供最好的适用于特定应用的环境。
2系统设计
2.1.应用场景分析
在典型电子商务应用(E-Commerce Applications)应用场景的MySQL Cluste:集群数据库系统中(如图5所示)通常包含三类集群节点,分别是:
(1)管理节点:这类节点的作用是管理MySQLCluster内的数据、SQL节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其它节点的配置,应在启动其它节点之前首先启动这类节点。
(2)数据节点:数据节点是保存、管理MySQLCluster内数据的核心节点。数据节点的数目同数据分区与备份的数目相关,是数据分区的倍数。例如,对于两个数据副本,每个副本有两个分区,那么就有4个数据节点。
(3)SQL节点:SQL节点部署MySQL服务器,为应用系统提供访问MySQL Cluster数据服务的节点。对于MySQL Cluster, SQL节点是使用NDB和In-noDB、MyISAM存储引擎的普通MySQL服务器。
图2 MySQL Cluster数据库集群典型应用场景
在图2所示的MySQ Cluster数据库集群场景中,众多集群节点按职责和所提供功能的不同可划分为以下5个部分:
(1) Master SQL节点集群使用如InnoDB等适用于事务处理的数据存储引擎,为企业应用提供数据管理、事务处理功能。
(2)Slaver SQL节点集群使用如MyISAM等适用于数据查询检索的数据查询引擎,为企业应用提供高速数据访问服务。
(3)数据节点集群存储、管理实际业务数据,基于配置实现数据自动分区(Partition)和数据灾备功能。
(4)基于SQL节点搭建的内容管理系统使用InnoDB引擎复制功能向Master SQL节点集群导人业务数据。
(5)基于SQL节点搭建的商务智能系统使用MyISAM引擎的快速数据检索功能实现高效数据分析和报表数据生成。
2.2 系统设计
为了验证基于MySQL Cluster搭建数据库集群解决高可用和高并发性问题方面的可行性。提出以下数据库集群POC验证方案(如图3示)。该方案使用部署在两台物理机上的Xen Server Linux镜像,用MySQL Cluster数据库集群实现最小配置的数据分区、数据灾备、读写分离和数据查询的负载均衡。此方案核心由数据节点集群,SQL节点集群和负载均衡器三部分组成。
图3 MySQL Cluster数据库集群POC架构
2. 2.1数据节点集群方案
为实现基本的数据分区(Data Partition)和数据灾备功能,设计了由4个数据节点组成的数据节点集群。部署方案如图4所示,业务库完整数据分为两个分别存储了不同业务数据分区的数据分区组,每个组内各包含一个Master和Slaver节点。Master为当前使用节点,Slaver为Master节点的备份。测试过程中通过宕掉IP :10.4. 45.190的Linuc虚拟机醚封正单点故障对系统可用性的影响。此外,各个数据节点之上可配置任意大小内存数据缓存,可以提升数据查询性能。
图4数据节点集群
2. 2. 2 SQL节点集群方案
SQL节点集群为业务系统提供访问MySQL Cluster数据服务的节点。SQL节点核心功能包括SQL语句解析执行、读写分离和事务处理。此集群方案(如图S所示)中包含了一个负责处理事务和数据增、删、改操作的Master节点和三个负责处理数据检索查询的Slaver节点构成。为了使IP;10. 4. X45. 190对应虚拟机宕掉后不影响系统运行,IP; 10. 4. 45. 190上部署了两个Slaver节点。三个Slaver通过MySQL Proxy实现负载均衡。
图5 SQL节点集群
2.2.3负载均衡器方案
在此方案中,负载均衡器用于均衡负责处理查询功能的Saver SQL节点之间的负载均衡问题。由于MySQL提供的负载均衡器MySQL Proxy在性能和稳定性上低于Amoeba,所以方案采用Amoeba实现负载均衡。方案中各个SQL节点对应-个独立的URL服务地址,由Amoeba实现负载均衡。为了不影响数据节点运行性能,Amoeba搭建在独立物理机IP:10.4.68.86上。
在使用过程中所有查询都发送到Amoeba服务器,之后经过Amoeba的负载均衡算法决定查询该发向哪个SQL节点执行。部署结构如图6所示。
图6使用Amoeba的负载均衡
3实验数据分析
3.1并发访问量递增测试
目的:通过测试在并发访问量不断增加的情况下数据查询性能走势验证此方案对比单机环境是否具有性能优势。
过程;创建l00个线程,每个线程独占一个数据库连接。在所有线程创建并获取数据库连接完毕后,顺序启动向jdbc : mysyl://10. 4. 68. 86 : 9307/test发送查询SQL语句。
结果:执行结果为从第一条线程启动到最后一条线程结束之间的执行时间,单位为毫秒。从图7可以看出MySQL Cluster并发处理能力远远高于单机MySQL。
图7并发测试结果对比
分析MySQL Cluster速度较快的原因有以下三点:
(1) MySQL Cluster有两台物理机4 CPU的并行处理能力,且配有负载均衡器,资源利用率较高。
(2)NDB引擎的内存数据库缓存降低了硬盘IO访问时间。
(3)MySQL数据处理加人了并行化机制,进一步提高了多核物理机的资源利用率。
3. 2查询数据且递增测试
目的:测试单线程查询单表数据性能。
过程:通过不断增加单表数据量测试MySQLCluste:方案和MysQL 5.1单服务器方案的数据读取性能。
结果:分别对100一1000条和1万一132万条记录的查询进行了测试,得出图8、图9测试结果。从小数据量读数据性能上看MySQL Cluster并无优势,但在数据量增大到3万条以上时,MySQL 5. 1单服务器处理性能下降显著。
图9查询大数据量递增测试
分析导致MySQL 5.1单服务器性能随数据量增加快速下降的原因:
(1) MySQL Cluster能并行从硬盘读取数据,而MySQL 5. 1单服务器则是单线程读。
(2) MySQL Cluster由于对数据进行了分区,双物理机同时检索数据速度较快。
4结束语
通过研究及以上对原型系统的测试和结果分析,可以看出,本方案通过虚拟化平台实现了一系列自动化的功能,屏蔽了一些技术难点,如:数据切分、数据一致性、高速数据缓存、数据灾备和单点故障问题等,且支持并行数据处理和内存数据库缓存。但仍存在对网络带宽要求较高,不能动态监视各节点运行状态和负载情况等缺点。由于方案采用产品默认配置验证,整体性能调优和部署方案优化尚有很多工作要做。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:虚拟环境下的数据库集群系统构建与性能分析