在线学习系统的数据库高可用性研究

2009-06-02 06:32刘金兰孟少卿
现代教育技术 2009年9期

王 赞 刘金兰 孟少卿

【摘要】文章通过Linux HA组件与DB2 HADR(High Availability and Disaster Recovery)组件相结合的方式实现在线教学系统的数据库高可用性方案。首先介绍了HADR实现DB2的双机热备,并分析了HADR自身存在的无法自动切换问题,然后提出了结合HA和HADR实现DB2数据库自动切换的解决方案,并对方案中出现的特别问题提出了解决办法。为提高在线学习系统的可用性提供了数据库保证。

【关键词】在线学习系统;高可用性灾难恢复;双机热备;实例监控;自动切换

引言

信息技术给当今社会带来了巨大的变化,各行业通过运用IT技术可以实现减少成本、提高竞争优势、加强沟通并帮助提高对关键业务流程的管理。其中,数据库技术在信息化建设中扮演重要的角色,在各行业中都得以重要的应用。在高等教育领域也发挥了极其重要的作用,随着网络的发展,在线学习系统可以跨越时间、空间的限制,使得教学工作可以在更广的范围开展,也是网络优势的典型体现之一。在线学习系统主要采用Web技术、数据库以及视频技术相配合的方式,通过互联网提供视频教学、问题解答、教学评价、在线交流等功能,为课堂教学提供了有效的补充,同时也是网络教育、继续教育的有效教学手段。

在线教学系统的运行过程中,高可用性始终是该系统的核心问题,如何保证系统提供不间断的信息服务是在线教学系统需要重点解决的问题。其中,大量课程及教学信息都存储在数据库里,数据库作为该系统的中枢,需要得到第一位的保障。一旦数据库出现故障,将会导致所有的功能都无法提供。导致数据库系统故障的因素可能由各种原因引起,如设备故障、操作系统故障、软件系统故障等等[1]。一般情况下,恢复服务器正常可能需要10分钟、几小时甚至几天。但对于重要系统而言,就需要通过双机热备、集群等策略[2],来避免长时间的服务中断,保证系统长期、可靠的服务。

DB2是一款大型关系型数据库系统[3],其UDB版可通过HADR技术[4]实现数据库的双机热备,当一台服务器发生故障时,另一台数据库通过配置可接管服务。但是HADR本身通过重定向路由的方式实现,在切换方面无法实现数据库的自动切换,给系统管理造成很大的不便。本文将提出通过结合Linux HA组件和DB2 HADR协同工作的方式解决上述问题,采用HA+HADR相结合的方式实现在线学习系统数据库的自动切换。

本文共分为五个部分,第一部分为引言,第二部分简单描述HADR的实现方式及HADR的不足,第三部分将详细的描述如何结合HA及HADR实现完全自动切换,第四部分列出实现HA+HADR的实验过程,并提出了部分特殊问题及解决方式。最后,对本文进行了总结。

一 DB2 HADR方案描述

1 DB2 HADR方案原理简介

HADR是数据库级别的高可用性数据灾难恢复机制,最初被应用于Informix数据库系统中,称为High Availability Data Replication。IBM收购Informix之后,这项技术就应用到了新的DB2发行版中。

一个HADR环境需要两台数据库服务器:主数据库服务器(Primary)和备用数据库服务器(Standby)(如图1所示)。当主数据库中发生事务操作时,系统同时将日志文件通过TCP/IP协议传送到备用数据库服务器,然后备用数据库对接受到的日志文件进行重放(Replay)[4],从而保持与主数据库的一致性。当主数据库发生故障时(如图2所示),备用数据库服务器通过切换可以接管主数据库服务器的事务处理。此时,备用数据库服务器作为新的主数据库服务器进行数据库的读写操作,而客户端应用程序的数据库连接可以通过自动客户端重新路由(Automatic Client Reroute)机制转移到新的主服务器。当原来的主数据库服务器被修复后,又可以作为新的备用数据库服务器加入HADR。通过这种机制,DB2 UDB实现了数据库的灾难恢复和高可用性,最大限度的避免了数据丢失,实现了一定程度上的高可用性。

图1正常情况下的主备服务

图2主数据库故障后的情况

2 HADR方案的核心问题

HADR通过如下三个方面实现数据库高可用性:

(1)主备数据库同步问题

主备数据库同步问题可以认为是HADR的首要问题,DB2采用了日志传输(Log Shipping)的方式解决了这个问题,通过日志传输及日志回放,两台数据库的数据保持同步。

(2)故障切换

系统管理员可在两台机器中的任何一台进行切换,但HADR本身只能提供手动切换,这样就大大降低了高可用性,本文也主要针对这一点进行了一些工作。

(3)重定向路由

在主服务器发生故障的时候,客户机通过重新定向路由的方式连接新的数据库,保证新数据库接管后客户端的应用能正常使用。

3 HADR的不足

DB2自身带的HADR方案在很大程度上解决了双机热备的问题,但并不能自动的监测系统运行状态,当主数据库(Primary Node)出现问题发生故障的时候,系统管理员必须自己检测并手动切换,当故障发生且管理员未能发现的情况下,系统将不可用。现有的HADR方案无法有效的解决此问题,必须采用一些其它的方案与之协同工作,实现Failover的自动切换,以保证数据库系统的高可用性。经过一定的研究,Linux Ha(Linux的高可用性组件,目前多采用HeartBeat)[5]+ MON(Linux的Monitor组件)可以用来与Hadr一起实现系统的自动切换,从而实现系统的高可用性。

二 HA+HADR方案的实现

1 Linux HA简介

Linux HA项目[5]历史悠久,很多Linux自带的HA集群都是采用HeartBeat来实现。高可用性集群的设计思想就是要最大限度地减少服务中断时间,HeartBeat作为一类高可用性集群软件,可以分别安装在两个或多个节点上,HeartBeat包括两个最核心的部分,一是心跳监测、二是资源接管;心跳监测可以通过网络链路和串口进行,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方瘫痪,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。这就使得采用HeartBeat来实现Hadr自动切换成为可能。

2 HA+HADR方案具体实现

虽然HeartBeat可以监测到系统的瘫痪,但很多时候数据库服务由于各种原因出现故障但Linux系统并没有宕机,在这种情况下,HeartBeat无法发挥作用,数据库也就无法自动切换,这就在很大程度上降低了系统的高可用性。基于这些考虑,本方案将采用MON来实现应用级的监测,监测应用的运行状态,发现问题及时告知HeartBeat,通过HeartBeat进行服务器的切换。通过这种思路,就可以完全实现DB2应用级的高可用性。具体的流程见图3:

图 3HA+HADR实现方案流程图

从图3可以看到HA、MON、HADR在此方案中分别起的作用,MON实现DB2实例的监控,HA实现双机系统的切换,而HADR实现数据库日志传输和主备切换。在这三个方面协同工作下,本方案将完全解决DB2的灾难恢复,从而达到DB2的高可用性。对数据库本身来说,DB2的HADR可通过日志传输(Log Shipping)的方式实现主备数据库的数据同步,任何一台服务器宕机后,通过上述方案保证另一台机器提供相同的数据库服务,用户不会有明显的感觉。同时,两台服务器都会知道并记录消息,然后可通过多种方式告知系统管理员,管理员一旦解决宕机的服务器问题后主服务器又将新增的数据通过日志的方式写回,以保持双机的同步。

三 实验描述及相关问题

1 实验描述

(1)实验服务器描述

本次实验采用了两台相同的IBM 3850作为服务器,硬件配置相同,具体配置如表1所示:

表1实验服务器配置表

(2)实验步骤

1)安装操作系统,并分别配置网卡的IP,其中Eth1用反线相连。

2)在两台服务器上分别按照DB2 V9.0并创建实例。两个安装的参数应该相同,实例名也一样。

3)在两台服务器上分别配置HADR,一个为主,一个为备。

4)安装并配置HeartBeat。Asia Linux自带HeartBeat,但可能版本原因,需要去Linux HA网站上下载最新版本。

5)安装并配置MON。以保证其对HADR的管理。

上述步骤中,第一步是配置网络环境,2)3)两步安装了数据库并配置HADR,在4),5)两步用到shell编程[6],用MON检测数据库运行状态,同时与HeartBeat通信,以保证故障发生的时候自动的切换。

2 实验中遇到的重要问题及解决方案

在实验过程中,在测试到CLOB字段的方案中发现,HADR在切换过程中丢失了CLOB类型字段的内容。而多数文章内容的字段都是CLOB型的,故此问题较严重。经过仔细查阅资料,发现了一篇关于“HADR and LOB replication”的文章[7],根据此文章得出“Non-logged LOB columns”将不能通过日志传输至备用数据库。对于这个问题,修改表结构,将每个CLOB字段都改为“Logged”,通过这种办法,这个问题得以解决。

四 结束语

本文结合Linux HA组件、MON以及DB2的HADR组件共同开发了一个较为完善的DB2高可用性解决方案,实现了DB2故障时的自动切换,在后续的多种测试中均能自动切换且数据保持一致。同样对于其它的应用如Web、中间件等应用也可以采用HeartBeat、Mon以及相应的系统软件实现其它系统的高可用性。这样,系统将大大提高不间断服务时间,提供更为可靠的服务。

参考文献

[1]刘晓洁,黄永佳. 基于Linux的双机热备系统的实现技术[J]. 计算机应用研究,2007,24(4)255-257.

[2]申志冰,罗宇. 利用HeartBeat实现Linux上的双机热备系统[J].计算机工程与应用,2002,38(19)126-128.

[3] 龚涛 等编著.DB2程序员成长攻略[M].北京:中国水利水电出版社.2007.

[4] IBM InfoCenter.高可用性灾难恢复概述[EB/OL].

[5] Robertson, A. L. Linux-HA Heartbeat Design[C]. Proceedings of the 4th International Linux Showcase and Conference. Atlanta, October 10-14 2000.

[6] Neil Matthew,Richard Stones.Linux程序设计[M]. 陈健,宋健建,译. 北京:人民邮电出版社.2007.

[7] IBM Software Group .HADR and LOB replication [EB/OL].

Application Research of High Availability for database of Online Learning System

WANG Zan1,LIU Jin-lanMENG Shao-qing

(1.Schoole of Management, Tianjin University, Tianjin 300072, China; 2. Information and Network Center, Tianjin University, Tianjin 300072, China)

Abstract: A new solution of high availability for database of OLS (Online Learning System) was issued in this paper and its main idea is to combine Linux HA and DB2 HADR to resolve the problem that single HADR cannot failover automatically. Firstly, the basic theory of HADR was introduced and the problem mentioned above was explained, then the solution was suggested to offer a high availability DB2 Database service. At last, the experiment was processed and some crucial problems in the process were described. The solution monitored the status of both servers at instance, so it is a much deeper strategy of high availability for DB2. This will ensure the high availability of the OLS.

Keywords: OLS (Online Learning System); HADR (High Availability and Disaster Recovery); Hot Standby; Instance Monitor; Failover Automatically