1.3.2 Oracle
作为目前功能最强大的关系型数据库软件厂商,Oracle提供了一套全面的数据库高可用性功能组件,用于减少数据库服务器计划内和计划外的停机,并不断提高数据的整体性能。数据库集群作为Oracle高可用性的一种实施方案,目前已经形成了几项成熟的技术架构。下面介绍Oracle的3种高可用性集群方案。
1. Oracle RAC
Oracle RAC中的RAC是Real Application Cluster的英文缩写,中文含义是真正的应用集群。通常说的Oracle RAC指的是广义的RAC集群,整个集群系统由Oracle Clusterware和Real Application Clusters两部分组成(Oracle的命名规则可能容易引起混乱,如Oracle数据库在运行时分为Oracle实例和数据库两部分)。RAC指借助“某种集群件”搭建出来的一个“多实例、单数据库”的环境,其主要优点为具有高可用性和负载均衡,一个节点发生故障不会影响整个业务的运行。这里的集群件可以是Oracle Clusterware,也可以是其他的集群件,如Sun Cluster等。Oracle Clusterware作为集群硬件管理软件,一方面向下管理硬件资源,另一方面向上为RAC提供服务。简单总结为,Oracle RAC将分布式实例进行集中统一管理,而Oracle Clusterware将分布式主机虚拟成一台计算机,两者之间面向的对象和处理的层次是不一样的。
图1-8为一个双节点Oracle RAC集群。在Oracle RAC整体架构中,Oracle Clusterware用来连接不同的分布式主机,其上连接Oracle ASM,并向上为RAC实例和RAC监听器提供服务。Oracle ASM(Automatic Storage Management)是Oracle 10g R2版本中为了简化Oracle数据库的管理而推出的一项新功能。作为Oracle的卷管理器,它不仅支持单实例部署模式,同时也提供了与操作系统平台无关的文件系统、逻辑卷管理及软RAID服务(支持条带化和磁盘镜像)。
图1-8 双节点Oracle RAC集群
Oracle RAC集群可以根据设定的调整策略,在集群中实现负载均衡功能。在集群中每个节点都是正常工作的,各个节点也是相互监控的。当集群中某个节点出现故障时,Oracle RAC会自动将故障节点从集群中隔离,并将失败节点上的业务自动切换到其他健康节点上。对于Oracle RAC集群来说,业务系统的稳定是非常重要的。当集群系统不能满足繁忙的业务时,Oracle RAC可以随时添加集群节点并能够自动加入集群中,不会存在业务停滞的情况。反之,当不需要某个节点时,删除节点也是很方便的。
Oracle RAC的核心是共享磁盘子系统,集群中所有节点必须能够访问所有数据、重做日志文件、控制文件和参数文件,数据磁盘必须是全局可用的,允许所有节点访问数据库,每个节点都有自己的重做日志和控制文件,但是其他节点必须能够访问它们,以便在节点出现系统故障时能够恢复。
Oracle RAC运行于集群之上,为Oracle数据库提供了最高级别的可用、可伸缩和低成本的计算能力。如果集群内的一个节点发生故障,Oracle可以继续在其余的节点上运行。Oracle的主要创新是一项称为高速缓存合并的技术,高速缓存合并使集群中的节点可以通过高速集群互联高效地同步其内存高速缓存,从而最大限度地降低磁盘I/O。高速缓存最重要的优势在于它能够使集群中所有节点的磁盘共享对所有数据的访问,数据无须在节点间进行分区。Oracle是唯一可以提供这一能力的开放系统数据库厂商。
2. Oracle Data Guard
Oracle Data Guard是Oracle数据库公司针对企业数据库的数据可用性、数据保护和灾难恢复的解决方案,主要针对Oracle数据库读写分离架构进行设置。它提供管理、监视和自动化软件基础架构来创建和维护一个或多个同步备用数据库,从而保护数据不受故障、灾难、错误和损坏的影响。Data Guard的主要功能是数据库同步,因此在构建读写分离集群架构时,能够直接影响不同节点之间的数据同步与一致性需求。
Data Guard可以位于同一个建筑物、同一个校园,甚至同一个城市中,也可以位于与主库相隔几千千米的远程备份数据库中。如果生产数据库由于计划中或计划外的原因中断而变得不可用,Data Guard可以将任意同步的备用数据库切换成生产角色,从而使停机时间缩到最短并防止数据丢失。备用数据库最初是由主数据库的一个备份副本创建的。一旦创建了备用数据库,Data Guard会自动将主数据库重做数据传输给备用系统,然后将重做数据应用到备用数据库中,从而使备用数据库成为与主数据库保持同步的副本。Data Guard主要通过Data Guard Broker来实现数据同步功能,如图1-9所示。Data Guard Broker 是一个分布式管理框架,主要用于自动创建、维护和监视Data Guard配置,可以使用OEM(图像化界面)或DGMGRL(命令行方式)进行以下操作。
(1)创建和激活Data Guard配置,包括设置重做传输服务和日志应用服务。
(2)可以在任何系统的配置中管理整个Data Guard配置(所有的主数据库和备用数据库)。
(3)管理和监视Oracle RAC主数据库、备用数据库的Data Guard配置。
(4)简化角色切换操作,只要DGMGRL的一条命令或OEM的一个按钮就可以进行切换和灾备转移。
(5)在主数据库不可用时,可以激活灾备快速启动功能,从而快速进入灾备模式。
Data Guard提供了两种方法将这些重做数据应用到备用数据库中,并使之与主数据库同步。这两种方法与Data Guard支持的两种类型的备用数据库对应,即重做应用于物理备用数据库,SQL应用于逻辑备用数据库。物理备用数据库提供与主数据库在物理上完全相同的副本,磁盘上的数据库结构与主数据库在块级别上完全相同。数据库模式(包括索引)都是相同的。重做应用技术使用标准Oracle介质恢复技术在物理备用数据库上重做数据。除传统的Data Guard功能外,适用于Oracle 11g的Active Data Guard选件使物理备用数据库可以在应用来自主数据库的更新时开启只读功能,这使物理备用数据库可以减少主数据库在处理只读查询和报表时的负担,也使对备用数据库是否时刻与主数据库同步的验证变得简单。
图1-9 Oracle Data Guard
虽然数据的物理组织和结构可能不同,但逻辑备用数据库与生产数据库包含相同的逻辑信息。SQL应用技术将从主数据库接收的重做数据转换成SQL语句,然后在备用数据库上执行,使逻辑备用数据库与主数据库保持同步。这样,在将SQL应用到逻辑备用数据库的同时,还可以开启逻辑备用数据库的读写功能,并访问逻辑备用数据库,以进行查询和报表操作。
3. Oracle MAA
Oracle最高可用性架构(Maximum Availability Architecture,MAA)其实不是独立的第三种架构,而是前面两种架构的结合,它向客户提供一整套可无缝协作的高可用性功能框架,从而实现最高级别的可用性。例如,在每个机房内部署Oracle RAC集群,实现高并发的负载均衡功能,多个机房之间用Oracle Data Guard同步,实现数据异地冗余备份,客户端通过广域网连接到最近的Oracle RAC集群中,如图1-10所示。Oracle MAA还为客户提供了一个可显著降低数据库高可用性部署成本和复杂性的最佳实践蓝图。
Oracle MAA最佳实践涉及Oracle Database、Oracle Application Server、Oracle应用产品和Grid Control。Oracle MAA 考虑了各种业务需求,以使这些最佳实践得到尽可能广泛的应用。Oracle MAA使用更低成本的服务器和存储,随着Oracle 版本的更新而不断发展完善。Oracle MAA独立于硬件和操作系统。
图1-10 Oracle MAA