(南瑞集团公司国网电力科学研究院江苏南京211000)
摘要:高可用性(HA)是通过尽量缩短突发的数据库故障(非计划)和因日常维护操作(计划)所导致的停机时间,以提高数据库和业务的可用性。本文对Oracle12c和SQLServer2012两类数据库软件在高可用性新老特性上,进行分析比较,供用户对数据库软件和高可用性实施方案选择上,作为参考。
关键词:高可用性;计划内;计划外;应用连续;全局服务;AlwaysOn
1.引言
今天的大型数据系统很大程度上依赖于他们的后台数据库,数据库发生故障,整个业务可能会停止,提供持续的数据可用性至关重要。
目前,大型数据库系统软件大部分是甲骨文的Oracle和微软的SQLServer,本文对Oracle12c和SQLServer2012两类数据库高可用性(HA)功能进行了技术上的比较分析。
2.计划外或计划停机
设计高可用性数据库架构的一个挑战是检查和解决所有可能的停机原因。停机可以分为两大类:无计划和计划。
计划外停机主要是由于系统故障或数据故障(例如人为错误,灾难,数据损坏)导致的。虽然这种故障不频繁,但其对业务运营的影响是重大的。
计划停机是数据中心的定期维护活动(例如数据更改,系统升级),这占到IT中断的80%。面临的挑战是尽可能透明地完成维护活动,从而尽量减少对业务运营的干扰。
3.高可用性架构
3.1Oracle12c高可用性架构
应用程序连续性和全局数据服务是Oracle12c引入了两个新的创新功能。应用程序连续性保证系统在中断和计划维护后,安全的重放正在执行的事务;全局数据服务,提供复制数据库的负载均衡和服务故障切换,根据网络延迟、复制延迟和服务布置策略,实现系统的最高可用性、可管理性和最大限度提高性能。
4.最小化非计划停机时间
4.1Oracle12c应对计划外停机的技术支持
为了防止服务器故障,Oracle提供了RAC,允许多个服务器在群集环境中访问单个Oracle数据库。这种方法的优点是可扩展性和高可用性,而不需要应用程序代码更改。
防止各种数据故障,Oracle提供了ASM,它为Oracle提供集成的卷管理功能,ASM提供数据库文件的本机镜像进行额外保护。
为了避免人为错误,Oracle提供了Flashback(例如闪回数据库,闪回表等),可以很容易地将数据库的状态倒退到已知的安全时间点,并撤消人为操作错误,而不需要长时间停机。
为了保护来自各种媒体故障的数据,Oracle提供了RMAN,它是Oracle数据库的综合备份,恢复和恢复解决方案。使用RMAN,Oracle数据库的备份可以在线进行,而不需要昂贵的停机时间。
Oracle数据库提供了快速恢复区域,它是Oracle数据库中所有恢复相关文件和活动的统一的基于磁盘的存储位置。
Oracle提供了磁带和云备份解决方案,OSB与RMAN的集成,提供性能优化的磁带备份,而云备份允许管理员使用RMAN界面将Oracle数据库的备份数据备份到云端存储。
Oracle提供了DataGuard的灾难恢复(DR)解决方案,防止本地化或区域性灾难存储故障。DataGuard还可以防止OracleRAC尚未部署的配置发生服务器故障。在DataGuard配置中,多个备用数据库通过网络连接到主数据库并与其保持同步,在主数据中心发生意外灾难的情况下,处理可以轻松地切换到备用数据库之一,没有数据丢失。
Oracle提供了OracleGoldenGate,专注于信息共享和数据集成。GoldenGate允许将数据更改从一个或多个源数据库分发到一个或多个目标数据库。GoldenGate提供灵活的功能,例如数据子集,数据转换,多主机复制,具有冲突检测的主动-主动配置,零停机升级等。
OracleDatabase12c引入了两个新的创新功能,将HA的优势扩展到应用层。一个被称为应用程序连续性,通过在基础架构中可恢复的中断之后透明地重放正在执行的数据库会话来掩盖终端用户和应用程序的中断。另一个新功能,全球数据服务(GDS)提供复制数据库的负载均衡和服务故障切换。
4.2sqlserver2012应对计划外停机的技术支持
数据库镜像用于将主数据库的数据同步到镜像数据库,提供几乎是瞬时的故障转移。镜像基于单个数据库实现,镜像数据库处于不可读状态。
复制基于数据库对象级别,灵活性较高,可以方便地将数据和数据库对象从一个数据库复制和分发到另一个数据库,然后在数据库之间进行同步以保持一致性。SQLServer提供了三种复制:快照复制、事务复制以及合并复制。
日志传送是数据库级操作,用来维护主数据库的一个或多个辅助数据库。日志传送一般用于远程的异步容灾。
故障转移群集是将SQLServer部署在群集的多个节点上,组成一个虚拟的实例。在当前节点不可用时,可以在节点之间进行故障转移,保证应用的正常开展。
数据库快照是源数据库的只读静态视图。自创建快照那刻起,数据库快照在事务上与源数据库一致。
AlwaysOn可用性组技术融合了数据库群集和数据库镜像的优点,提供非共享存储,避免存储的单点故障导致系统不可用。AlwaysOn可用性组基于数据库(组)级别,是将一组用户数据库划到一个组中。每组可用性数据库都由一个可用性副本承载。可用性副本包括一个主副本和一到四个辅助副本。主副本用于承载主数据库,辅助副本则承载一组辅助数据库并作为可用性组的潜在故障转移目标。主副本使主数据库可用于客户端的读写连接,实现对数据库的更改操作,同时在数据库级别进行同步。主副本将每个主数据库的事务日志记录发送到每个辅助数据库。每个辅助副本缓存事务日志记录,然后将它们还原到相应的辅助数据库。主数据库与每个连接的辅助数据库独立进行数据同步。
5.最小化计划停机时间
5.1oracle12c应对计划停机的技术支持
通过在线表重定义功能,Oracle数据库支持许多数据维护操作,而不会中断数据库操作或用户访问。例如,可以重新定义数据库表,更改表类型,添加、删除或重命名列,更改存储参数等。
使用DataGuard或GoldenGate,可以以滚动方式完成数据库修补程序或主要版本的升级,从而最大限度减少应用程序停机时间。
Oracle数据库动态适应硬件配置的更改(例如从SMP服务器添加和删除处理器,添加和删除RAC集群中的节点,动态增长和缩小其共享内存分配,在线添加和删除数据库磁盘),不会中断数据库的正常活动。
DataGuard或GoldenGate可用于在大规模迁移(如数据中心移动,SAN迁移,技术刷新等)中最大限度地减少停机时间。
5.2sqlserver2012应对计划停机的技术支持
通过无共享的SQLServer数据分区,可以将新的服务器添加到群集中,根据新的分区映射重新分配分区数据。
通过底层平台的支持,可进行存储驱动器的热插拔。
通过在WindowsSQLCore上运行,可缩短50%至60%的操作系统打补丁时间,总而大幅减少计划内停机时间。
改进联机操作(比如对业务系统重建索引和添加默认列),减少数据库维护所需的停机时间。
AlwaysOn功能可滚动升级并对实例进行补丁更新,从而大幅度减少应用程序的停机时间。
Hyper-V环境上托管的SQLServer实例可从实时迁移过程中得到额外的好处,即无需任何停机时间即可完成虚拟机迁移。这样,管理员便可在主机上执行多项维护操作,而不会影响应用程序。
6.结束语
通过比较Oracle12c和SQLServer2012两者的高可用性特性,我们可以看到:一方面,Oracle12c和SQLServer2012相比它们之前的版本,有了更新的技术,能更好的保证数据库系统的可用性、安全性。另一方面,Oracle12c在保证零数据丢失、停机时业务正常进行上,比SQLServer2012更胜一筹,而SQLServer2012在得到微软底层软件的支持后,可用性也是大大的提高。但是Oracle12c的软件授权以及各种高可用性技术的实施上,费用更高。因此企业在选择数据库类型时,可以根据自己的需求进行合理选择。
参考文献:
[1]racleDatabaseHighAvailabilityOverview
[2]MicrosoftSQLServer2012BooksOnline