数据库集群
集群(Cluster)技术是使用特定的连接方式,将价格相对较低的硬件设备结合起来,同时也能提供高性能相当的任务处理能力。
本文试图对当前主要的数据库集群用到的具体技术和市场上的主流产品进行分析并作点评,从而为读者提供一个数据库集群的评价参考。
下面讨论的数据库集群技术分属两类体系:基于数据库引擎的集群技术和基于数据库网关(中间件)的集群技术。
![](https://i-blog.csdnimg.cn/blog_migrate/93e9c0312fd40cbdd35e6b60346a2e40.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7840911201c3d6ee9e677a073d9bb0a5.gif)
关键技术
在复杂的数据库集群技术之间做比较,其实就是比较它所包含的各项子技术性能和它们之间的协调运作能力,下面的文字将介绍数据库集群最需要得到重视的核心技术,同时也关注到了一些技术细节。
提高处理速度的四种办法
提高磁盘速度:主要思想是提高磁盘的并发度。尽管实现方法各不相同,但是它们最后的目的都是提供一个逻辑数据库的存储映象。
【点评】系统为了提高磁盘访问速度,建立一个虚拟的涵盖所有数据“大”数据库,而不用去考虑数据的实际物理磁盘存放位置。
分散数据的存放:利用多个物理服务器来存放数据集的不同部分,使得不同的服务器进行并行计算成为可能。
ORACLE RAC是共享磁盘的体系结构,用户只需简单地增加一个服务器节点,RAC就能自动地将这节点加入到它的集群服务中去,RAC会自动地将数据分配到这节点上,并且会将接下来的数据库访问自动分布到合适的物理服务器上,而不用修改应用程序;UDB是非共享磁盘的体系结构,需要手工修改数据分区,MSCS和ASE也是同样情况。ICX是一种基于中间件的数据库集群技术,对客户端和数据库服务器都是透明的。可以用来集群几个数据库集群。
【点评】系统通过化整为零的策略,将数据表格分散到多个服务器或者每个服务器分管几个内容不同的表格,这样做的目的在于通过多服务器间并行运算以提高访问速度。
对称多处理器系统:
利用多处理机硬件技术来提高数据库的处理速度。
所有基于数据库引擎的集群都支持这个技术。
【点评】将多CPU处理器进行合理调度,来同时处理不同的访问要求,但这种技术在数据库上的应用的实际收益是很有限的。
交易处理负载均衡:在保持数据集内容同步的前提下,将只读操作分布到多个独立的服务器上运行。因为绝大多数的数据库操作是浏览和查询,如果我们能拥有多个内容同步的数据库服务器,交易负载均衡就具有最大的潜力(可以远远大于上面叙述的最多达四个处理器的对称多处理器系统)来提高数据库的处理速度,同时会具有非常高的数据可用性。
所有基于数据库引擎的集群系统都只支持一个逻辑数据库映象和一个逻辑或物理的备份。这个备份的主要目的是预防数据灾难。因此,备份里的数据只能通过复制机制来更新,应用程序是不能直接更新它的。利用备份数据进行交易负载均衡只适用于一些非常有限的应用,例如报表统计、数据挖掘以及其它非关键业务的应用。
【点评】负载平衡算是一项“老”技术了。但将性能提高到最大也是集群设计所追求的终极目标。传统意义上,利用备份数据进行交易负载均衡只适用于一些非常有限的应用。
上述所有技术在实际部署系统的时候可以混合使用以达到最佳效果。
提高可用性的四种方法
硬件级冗余:让多处理机同时执行同样的任务用以屏蔽瞬时和永久的硬件错误。有两种实现方法:构造特殊的冗余处理机和使用多个独立的数据库服务器。
基于数据库的集群系统都是用多个独立的数据库服务器来实现一个逻辑数据库,在任意瞬间,每台处理器运行的都是不同的任务。这种系统可以屏蔽单个或多个服务器的损坏,但是因为没有处理的冗余度,每次恢复的时间比较长。
【点评】传统意义上,硬件越贵,性能越高,但往往事与愿违。想通过追加和升级硬件设备来改善硬件级的冗余,要进行详细的需求分析和论证。
通讯链路级冗余:冗余的通讯链路可以屏蔽瞬时和永久的通讯链路级的错误。
基于数据库引擎的集群系统有两种结构:共享磁盘和独立磁盘。RAC, MSCS 可以认为是共享磁盘的集群系统。UDB和ASE 是独立磁盘的集群系统。共享磁盘集群系统的通讯的冗余度最小。
【点评】通讯链路级的冗余具有容错功能。
软件级冗余:由于现代操作系统和数据库引擎的高度并发性,由竞争条件、死锁、以及时间相关引发的错误占据了非正常停机服务的绝大多数原因。采用多个冗余的运行数据库进程能屏蔽瞬时和永久的软件错误。基于数据库引擎的集群系统都用多个处理器来实现一个逻辑数据库,它们只能提供部分软件冗余,因为每一瞬间每个处理器执行的都是不同的任务。
【点评】改善软件设计来提高冗余性能和屏蔽软件级错误是每个技术开发商的梦想。传统的集群系统只能提供部分软件冗余。
数据冗余:
1. 被动更新数据集:所有目前的数据复制技术(同步或异步),例如磁盘镜像、数据库文件复制以及数据库厂商自带的数据库备份工具都只能产生被动复制数据集。它一般只用于灾难恢复。
【点评】大多数应用都是采用被动更新数据集的方法。这种方法容灾能力差,资源占用多,已面临淘汰和革新。
2. 主动更新数据集:这种数据集需要一台或多台备份数据库服务器来管理,它可用于报表生成,数据挖掘,灾难恢复甚至低质量负载均衡。分同步和异步两种。
异步主动复制数据集:先把事务处理交给主服务器来完成,然后事务处理再被串行地交给备份服务器以执行同样操作来保证数据一致性。所有的商用数据库都支持异步主动复制技术。
同步主动复制数据集:要求所有并发事务处理在所有数据库服务器上同时完成。直接好处就是解决了队列管理问题,同时通过负载均衡实现更高性能和可用性。RAC, UDB, MSCS 和 ASE是用完全串行化并结合两阶段提交协议来实现的,设计目标就是为了获得一份可用于快速灾难恢复的数据集。
【点评】主动更新数据集是目前比较先进的数据冗余方法。专业人员还可以进行更底层的技术细节比较。底层技术的差异直接影响着一些重要指标。
提高安全和数据集可扩性的技术
在提高数据库安全性和数据集可扩性这两方面,可以创新的空间是很小的。数据库最常见的安全办法是口令保护,要么是分布式的,要么是集中式的。在数据库前面增加防火墙会增加额外的延迟,因此,尽管许多安全侵犯事件是来自于公司内部,但是数据库防火墙还是很少被采用。如果数据库集群技术是基于中间件技术实现的,就有可能在不增加额外延迟的情况下,在数据经过的路径上实现防火墙功能。数据库数据集的可扩性只能通过将数据分布到多个独立的物理服务器上来实现。
主流产品
在数据库集群产品方面,其中主要包括基于数据库引擎的集群技术的Oracle RAC、MicrOSoft MSCS、IBM DB2 UDB、Sybase ASE,以及基于数据库网关(中间件)的集群技术的ICX-UDS等产品。
Oracle RAC
Oracle RAC 支持 Oracle 数据库在集群上运行的所有类型的主流商业应用程序。这包括流行的封装产品,如 SAP、PeopleSoft 和 Oracle E-Business Suite 等,以及自主研发的应用程序,其中包括 OLTP 和 DSS,以及 Oracle 有效支持混合 OLTP/DSS 环境的独有能力。Oracle 是唯一提供具备这一功能的开放系统数据库的厂商。 Oracle RAC 运行于集群之上,为 Oracle 数据库提供了最高级别的可用性、可伸缩性和低成本计算能力。如果集群内的一个节点发生故障,Oracle 将可以继续在其余的节点上运行。如果需要更高的处理能力,新的节点可轻松添加至集群。为了保持低成本,即使最高端的系统也可以从采用标准化商用组件的小型低成本集群开始逐步构建而成。
Oracle 的主要创新是一项称为高速缓存合并的技术,它最初是针对 Oracle9i 真正应用集群开发的。高速缓存合并使得集群中的节点可以通过高速集群互联高效地同步其内存高速缓存,从而最大限度地低降低磁盘 I/O。高速缓存最重要的优势在于它能够使集群中所有节点的磁盘共享对所有数据的访问。数据无需在节点间进行分区。Oracle RAC 支持企业网格。Oracle RAC 的高速缓存合并技术提供了最高等级的可用性和可伸缩性。Oracle RAC能显著降低了运营成本,增强了灵活性,从而赋予了系统更卓越的适应性、前瞻性和灵活性。动态提供节点、存储器、CPU 和内存可以在实现所需服务级别的同时,通过提高的利用率不断降低成本。
Oracle RAC采用了“sharing everything”的实现模式,通过CPU共享和存储设备共享来实现多节点之间的无缝集群,用户提交的每一项任务被自动分配给集群中的多台机器执行,用户不必通过冗余的硬件来满足高可靠性要求。另一方面,RAC可以实现CPU的共享,即使普通服务器组成的集群也能实现过去只有大型主机才能提供的高性能。
Microsoft MSCS
数年以来,Microsoft一直致力于对自身服务器解决方案的伸缩能力、可用性与可靠性进行扩展。最初代号为Wolfpack且先后被称为Microsoft集群服务器与Microsoft集群服务的MSCS是Microsoft在NT集群技术领域中的首次重拳出击,它是公认的最佳Microsoft集群解决方案。在MSCS群集中,MSCS软件最多可以同四台运行在高速网络上的物理计算机建立连接。通常情况下,群集中的计算机能够按照“活动--活动”方式共享相同的存储子系统与功能,这意味着所有集群计算机(节点)均可主动通过共享负载的方式协同完成工作,并在某个节点出现故障时分担它的工作。MSCS的主要用途是通过自身提供的容错能力提高应用程序可用性。容错能力是指将相关处理过程从某个节点上的故障应用程序移植到集群中其它健康节点上的集群功能。当故障应用程序得到恢复后,集群应当能够对原先的集群节点实现“故障返回”。MSCS能够在不丢失任何与故障应用程序相关数据的前提下对集群上所运行的应用程序进行故障恢复与故障返回管理,并且能够在故障恢复过程中维护用户及应用程序状态。这种类型的集群功能被称作有状态集群功能。MSCS同时还允许用户在应用程序升级过程中继续进行工作。您可以采取滚动升级方式(例如每次在一个集群节点上升级应用程序并确保其它节点上的应用程序继续处于可用状态)而不必在升级过程中停止使用应用程序。
SQL Server 2005是微软的下一代数据管理和分析解决方案,给企业级应用数据和分析程序带来更好的安全性、稳定性和可靠性,更易于创建、部署和管理。它凭借针对故障转移群集机制的支持能力,得以增强的多实例支持能力以及分析服务对象与数据备份及恢复能力,分析服务的可用性得到了提高。它提供了诸如表分区、快照隔离、64位支持等方面的高级可伸缩性功能,使用户能轻松构建和部署关键应用。表和索引的分区功能显著增强了对大型数据库的查询性能。
![](https://i-blog.csdnimg.cn/blog_migrate/4caf0c3b084724c6d6645c6d2a9118a0.gif)
性能指标
这部分将介绍集群系统的细节技术指标。在做系统规划时,用户就可去掉一些应用中不太重要的指标,或赋予这些指标以不同的权重,从而进行专业的技术性能比较,选择最适合自己的数据库集群系统。
处理速度
磁盘技术:所有集群系统都能很好地应用磁盘技术,但是由于DM,FM会对磁盘系统带来传输速度的负面影响,因此这方面它们相对欠缺。
数据分割:所有基于数据库引擎的集群系统都有很好数据分割能力。
SMP:所有基于数据库引擎的集群系统的SMP性能指标都比较接近。
负载均衡:一般的数据库引擎的集群系统由于使用了备份的数据集,因此只能支持有限的负载均衡。这一指标不同产品之间有差异。
数据可用性
处理器和软件冗余:只有部分集群系统支持该功能。
通讯链路冗余:一般来说,共享磁盘的集群系统通讯链路冗余指标较低,独立磁盘的集群系统指标较高。
数据冗余:
主动异步复制:除了磁盘和文件镜像外,其他集群系统支持该功能。
主动同步复制:所有集群系统支持该功能,细节指标略有不同。
被动异步复制:所有集群系统该性能指标都比较接近。
被动同步更新:所有集群系统该性能指标都比较接近。
通过广域网的复制技术:
远程主动异步复制:所有的集群系统都支持这种复制技术,只不过对队列的管理能力有所不同。DM,FM和RAID的此性能相对较低。RAID不支持远程复制功能。
远程主动同步复制:ICX在这方面做的比较好。
远程被动异步复制:DM 和 FM支持这种类型的复制,因为DM和FM对集群是透明的,是在集群系统的下一层工作的,所有的集群系统都可以利用它们提供的功能。
远程被动同步复制:DM和FM支持这种类型的复制,因为这种复制方式只在距离很近的时候才能使用(使用双模光纤,半径五英里)。同样地,因为DM和FM对集群是透明的, 所有的集群系统都可以利用它们提供的功能, 如果部署的话,所有的集群系统都是类似的。
安全性
口令:这是所有集群系统的基本性能。分布式或集中式的口令保护基本上保证了数据的安全。
数据库防火墙:大多数数据库集群系统得数据库防火墙很少被采用,而ICX则采用在数据经过的路径上实现防火墙功能。
数据集的可扩性
数据分区:所有基于数据库引擎的集群系统都具备数据分区以保证数据集的可扩展。
数据分区的可用性:所有集群系统该性能指标比较接近。
集群管理
共享磁盘的集群系统,比如RAC、MSCS,它们的管理比较方便,其中RAC的服务更多。但是,由于此种系统中的每一单独的服务器需要特殊处理,和独立磁盘的集群系统比较,就容易管理多了(虽然进行初始化和修改配置的时候也不那么容易),但它们都要求应用程序对集群不透明,而且配置,修改也比较麻烦。
独立磁盘的集群系统象 UDB、ASE此性能相对稍低,因为用的都是非共享磁盘,所以管理相对繁琐。
ICX在易管理性(初始配置和将来的修改)方面和独立磁盘集群系统的性能相当,但是在对底层数据管理复杂性方面做得比较好。在对数据库引擎和数据进行底层修复的时候任务需要直接到每台数据库处理器上去做。
那些磁盘工具,即DM、FM和RAID,它们对集群是透明的。管理相对简单得多。
应用透明度
因为在错误回复和分区方面对应用程序不透明以及它们对应用程序都有些特殊的要求,基于数据库引擎的RAC、MSCS、UDB、ASE和ICX在这方面都有待提高的地方。而DM、FM和RAID它们对应用程序可以说是完全透明的。
IBM DB2 UDB
DB2 UDB大量自动或自我管理功能可使管理员能够节省更多时间来集中精力考虑驱动业务价值的问题,甚至可以消除较小的实施项目对专职管理员的需求。
UDB的优势体现在DB2的开放无界:支持Unix, Linux 以及Windows等主流操作系统;支持各种开发语言和访问接口;同时具有良好的数据安全性和稳定性。DB2 V8.2的高可用性灾备技术,可在极短时间内使关键应用得到恢复。利用DB2数据分区部件(DPF)实现横向扩展,可以支持多达1000台服务器组成的庞大数据库群集,为构建企业级数据仓库提供坚实的技术基础。利用DB2的数据分区部件以及DB2信息集成器(DB2 II)技术,数据库操作可综合利用网格中的每台服务器的运算能力,实现真正意义上的网格运算。
UDB V8.2应用更多的创新技术,Design Advisor可以帮助 DBA 制定全面的数据库设计决策,包括集成复杂的功能划分、物化查询表,大大缩短部署时间。自动生成统计信息概要代表了来自 IBM LEO研发项目的首次部署。自主对象维护特性可自动执行基于策略的管理和维护功能,如表重构、统计信息收集和数据库备份。高可用性灾难恢复和客户机重路由特性实现了具备随选能力的企业所需的24*7信息可用性和恢复力。此外,DB2 UDB 提供与 Java/Eclipse 和 Microsoft .NET IDE的深入集成或插件。
![](https://i-blog.csdnimg.cn/blog_migrate/af9df51d1e4c6618fe1395585722aad7.gif)
DB2 UDB结构拓扑图
SYBASE ASE
ASE性能的提高是建立在虚拟服务器架构上的,这是 Sybase 独有的体系结构。当前的ASE版本是ASE15。与操作系统和相关软件保持独立让ASE15可以更智能化地进行系统自我调优。VSA只需要很少的内存资源和内部交换开销,所以ASE15可以管理大量的联机用户。能够使ASE提高性能并控制成本的最主要原因是它采用了专利技术的、自调整的优化器和查询引擎。它可以智能地调整复杂的查询操作并忽略那些未包含相关信息的分区上的数据。ASE15还通过一系列用来管理和诊断数据库服务器的新特性来降低运营成本。
ASE15 拥有高可靠性和极低的运行风险。个人数据的安全性是ASE特别关注的领域,使用了一种无需修改应用的独特加密系统。当应用和安全软件进行连接时将降低实施成本并避免产生新的安全漏洞。ASE15 还通过一种简单、直接和可编程的脚本语言来方便进行加密和解密。在解决意外停机问题时,ASE15 在其已证实的可靠性和高系统利用率的基础上,增加了许多显著的功能来增强系统的可用性和灾难恢复过程。新的存储引擎支持四种数据分区方式,在不同的物理设备上进行不同的分区操作。能帮助数据库管理员迅速地建立冗余灾难恢复节点并在异构的数据平台上同步数据库。
ASE15系统新的查询和存储引擎被设计用于支持下一代网格计算和集群技术。它结合了充分利用数据分区技术的查询处理机制和适用于解决集群问题的优化器技术。同时ASE15为事件驱动的企业提供了一个绝好的数据库平台。与web services 和 XML的架构将减少系统内部的相互依赖性,并为应用开发提供更大的灵活性。
ICX-UDS
ICX-UDS不受基于数据库引擎的集群技术限制,可以支持不同的数据库。
它类似通常的代理服务器。把ICX放置在关键的网络路径上,监听数据库系统流量。ICX网关将自动过滤出无状态的查询访问,并将负载均衡到所有服务器上。在这里,网关就象一个在线“编译器”,它将所有对数据库的更新操作发送到所有数据库上执行,而将无状态的查询操作只发送到其中某一数据库服务器上。
对于统计报表和数据挖掘类应用,可以通过复制和只读去获得更快的处理速度。还能指定更多的只读来负载均衡。ICX 网关的容错可以通过备份网关来达到。加载一个非同步的数据库可以造出不影响主服务机群的近于实时的数据源。
![](https://i-blog.csdnimg.cn/blog_migrate/06ca577a02a3555a6318b5e96057b2d4.gif)
ICX 网关和负载均衡器配置示意图
应用点评
Oracle RAC和Oracle数据库提供的特定新管理性增强功能实现了企业网格。各种规模的企业都可以采用Oracle RAC来支持各类应用程序。
企业网格采用大型标准化商用组件配置:处理器、网络和存储器。利用Oracle RAC的高速缓存合并技术,Oracle数据库实现了最高可用性和可伸缩性。现在,利用Oracle数据库和Oracle RAC将大幅降低了运行成本,进一步增强了灵活性,其动态提供节点、存储器、CPU和内存的特性可以更轻松、高效地保持服务级别,而通过提高的利用率又进一步降低了成本。企业网格是未来的数据中心,使企业具备更高的适应能力、前瞻性和敏捷性。
集群技术随着服务器硬件系统与网络操作系统的发展将会在可用性、高可靠性、系统冗余等方面逐步提高。我们汇集了市场上的主流产品,并从分析性能指标的角度出发,对产品进行了简要评价。
Sybase ASE是一个深受用户欢迎的高性能数据库,它具有一个开放的、可扩展的体系结构,易于使用的事务处理系统,以及低廉的维护成本。
ASE可支持传统的、关键任务的OLTP和DSS应用,并且满足Internet应用的发展需要,Sybase可以很好地满足关键任务的企业业务应用的需求,提供数据库可靠性、集成性和高性能。ASE有效的多线索结构,内部并行机制和有效的查询优化技术提供了出色性能和可伸缩性;还可提供先进的企业集成、强健和数据访问与数据移动技术,支持跨越远程Sybase和non-Sybase数据库的分布事务和查询。ASE进一步扩展了这些功能,通过分布信息和管理商业事务,支持通过企业信息门户对商业系统进行个性化的用户访问。
MSCS对于诸如电子邮件服务器、数据库应用程序之类的应用程序,是一种良好的运行方式。
假设您决定在一个4节点MSCS群集上运行Microsoft Exchange 2000 Server。当安装MSCS软件以及适用于群集的Exchange 2000版本后,您可以对群集进行配置,以便使Exchange 2000能够在主要节点发生故障时在备份节点上进行故障恢复。当故障发生时,主服务器上肯定存在处于打开状态的用户会话,然而,MSCS能够在不丢失任何数据的情况下快速、自动的完成故障恢复。备份节点将从故障节点上接替工作负载及相关数据,并继续为用户提供服务。
ICX的最大优点是在数据库集群技术面临的挑战上有了新的探索,此项基于中间件的数据库集群技术为获得具有高可扩性的高性能数据库提供了一条切实可行的途径,同时能灵活地适应未来的技术变化。
这种中间件复制技术可位于关键的网络路径上,监听所有进出数据库系统的流量,方便地提供防火墙和其它安全服务,保护物理的数据库服务器。通过多个服务器的并发处理很容易地隐藏了处理的延迟。实时并行同步交易复制:一旦我们突破了实时并行同步交易复制的技术障碍,用户就能通过由多个数据库服务器构成的集群来获得高性能,高可用性和高安全性。
DB2 UDB是一个可以随企业增长的数据库。当对网站的事务需求达到峰值时它可以迅速响应,它可以进行扩展以容纳分布在许多不同数据库中的数量不断增长的信息。
随着信息基础结构从一个处理器发展到多个处理器再到高度并行的多个群集,它也随之扩展。将分区技术和群集技术集成到新的 DB2 UDB Enterprise Server Edition 中意味着该版本很灵活。DB2 UDB还添加了自主数据库技术,它使数据库管理员可以选择使用增强的自动化技术来配置、调优和管理他们的数据库。自主数据库管理意味着管理员可以在管理日常任务上花费较少的时间。表的多维群集减轻了 DBA 创建索引的工作负担,同时提供了数据群集以快速查询。DB2内置的已规划的和未规划的可用性能力确保了业务应用程序在任何时候都可用。诸如索引重建、索引创建和表装载之类的联机实用程序以及可以不停止数据库进行更改的配置参数,都意味着改进的性能和高可用性。
【相关链接】
理想的数据库集群应具备的特点
提高速度:只通过简单地增加数据库服务器就能相对提高数据库处理速度。
数据同步:在任何时刻需要有多个随时可用的实时同步数据服务。最好有多个异地的同步数据服务。
安全保证:除了密码保护之外,我们最好能控制企业内部对数据库的非法访问。
可扩展性:应保证我们能任意增大数据集而没有对可用性产生负面影响。
一般来说,有关数据库集群的技术都非常庞杂。更具挑战性的是,实际应用要求在提高速度、数据同步、安全保证、可扩展性方面的指标能同时提升,而不是单纯提升某一指标而牺牲其他指标。全面提升这些技术指标是数据库集群技术都将面临的重大课题。
【名词解释】
集群:是一组通过协同工作方式运行同一套应用程序并针对客户端及应用程序提供单一系统映像的独立计算机。集群技术的目标在于通过多层网络结构进一步提高伸缩能力、可用性与可靠性。
可伸缩性:是指一台计算机在维持可接受性能的前提下处理不断提高的工作负载的能力。
可用性:是指存在质量、备用能力、获取简便性以及可访问能力。
可靠性:是指系统牢固程度。