一般来讲,数据库集群软件根据侧重的方向和试图解决的问题划分为三大类:负载均衡集群(Load balance cluster,)侧重于数据库的横向扩展,提升数据库的性能;高可用性集群(High availability cluster,HAC)侧重保证数据库应用持续不断;高安全性集群(High Security cluster,HSC)侧重于容灾。
按照集群的架构可分为:共享磁盘型,非共享磁盘型。
当前各大主要商业数据库上应用的集群
1. Oracle's Real Application Cluster (RAC)
2. Microsoft SQL Cluster Server (MSCS)
3. IBM's DB2 UDB High Availability Cluster(UDB)
4. Sybase ASE High Availability Cluster (ASE)
5. MySQL High Availability Cluster (MySQL CS)
6. 基于IO、磁盘或操作系统等非数据库引擎的集群
总结:以上六类数据库集群技术中,前五个是数据库厂商提供的,其中仅Oracle’s Real Application Cluster (RAC)实现数据库的负载均衡、横向扩展及应用的高可用性;其余数据库集群技术都是以高可用为主,基本上是共享磁盘型的。第六类是第三方集群公司提供的,就是我们常说的“双机”是一种热备或互备技术,即:当某节点故障,另一个节点来接管业务。
在数据库上,保证可用性固然重要,但是随着信息化向前的推进,用户在数据库上遇到的困惑不只“可用性”一个,往往是综合几种需求,于是乎,用户的数据库上将出现如下情景:可能同时部署了负载均衡软件、双机软件、镜像软件、备份软件等等(有专业技术实力的公司可能不是这样,如互联网企业可以通过DBA来进行合理的优化及管理),可是,用户想要的是“一个可以为之稳定提供应用服务的数据库平台”,一个整体的数据库解决方案,而不是一堆HA、备份、复制、负载均衡等等零散的软件,或者是它们之间的简单集成。
以微软的SQL Server数据库为例,因为其简单易用等优点占据了很大一部分客户,但SQL Server数据库集群解决方案以数据库的可用性为主,不能实现负载均衡及横向扩展,不论是失败转移集群(MSCS)或镜像(Mirror)仅仅是一种备份的方案,数据库只运行在一个节点上,当出现故障时,另一个节点只是作为这个节点的备份,在性能上是没有提升的。
或许有人说,那你可以不用SQL Server,可以用Oracle,但是每个数据量都有其各自的优点,有其适用的环境。
基于这样一个现状,一些国外的专业技术公司,甚至国内的一些拥有深厚背景的公司也在数据库平台上开发出了综合解决这些问题的集群产品,这些技术多数基于数据库开发(在开源数据库中也有类似的产品或方案推出)。其实回顾历史,Oracle的RAC就是一个很好的例子,RAC在Oracle8中还叫OPS,也是从一家第三方集群公司收购,如又收购了金门软件(Golden Gate),也是从事类似技术的公司,于2009年7月被Oracle收购。 当然也不排除,未来各数据库厂商自己推出这样的产品。
这些数据库集群技术中,主要以SQL Server或MySQL居多,分析其原因也很简单,在国内能买得起Oracle的用户,也不在乎多花些钱买RAC;银行的客户也不惜多花钱叫IBM解决;由于MySQL免费的特点,所以其用户是两个极端,要们很大,自己有能力在上面开发,如国内的大型互联网企业,要么很小,如一些小型软件,在这样的背景下,MySQL的集群技术只是大企业内部拥有,没有作为产品推向社会;SQL Server 更能适合中国的国情,以其简单适用,方便管理等特点占据了很大的市场,相应的SQL Server的数据库集群技术也成为通用的技术在行业内快速发展。