CN102339305A - 基于偏序关系日志的数据库集群故障恢复方法 - Google Patents
基于偏序关系日志的数据库集群故障恢复方法 Download PDFInfo
- Publication number
- CN102339305A CN102339305A CN2011102633359A CN201110263335A CN102339305A CN 102339305 A CN102339305 A CN 102339305A CN 2011102633359 A CN2011102633359 A CN 2011102633359A CN 201110263335 A CN201110263335 A CN 201110263335A CN 102339305 A CN102339305 A CN 102339305A
- Authority
- CN
- China
- Prior art keywords
- node
- daily record
- timestamp
- fault recovery
- cluster system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于偏序关系日志的数据库集群系统故障恢复方法,包括如下步骤:数据库集群系统中的每个节点分别产生日志;当数据库集群系统需要从故障中恢复时,每个节点分别读取自己的日志,并根据日志之间的偏序关系,并行进行故障恢复操作;当全部日志处理完成后,恢复到数据库集群系统故障前的状态。本发明一方面由于利用多节点并行进行数据库集群系统的恢复,提高了故障恢复的效率;另一方面由于利用分布式日志之间的偏序关系,保证了故障恢复的准确性。
Description
技术领域
本发明涉及一种数据库集群系统故障恢复方法,尤其涉及一种基于偏序关系日志实现的数据库集群系统故障恢复方法,属于数据库集群系统技术领域。
背景技术
随着经济的高速发展,用户数量、数据量呈现爆炸式增长。在用户需求不断增长的应用环境下,对数据库技术提出了严峻的考验。对于所有的数据库而言,除了记录正确的处理结果之外,还面临着以下几方面的挑战:如何提高处理速度,实现数据库的负载均衡;如何保证数据库的可用性、数据安全性以及如何实现数据集可扩展性。
为了应对上述技术挑战,人们借鉴计算机集群(将一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作)的技术理念,将多个数据库连接起来组成数据库集群系统。数据库集群系统(Database Cluster System,简称DBCS)将集群技术与数据库系统相结合,是一组完整的、自治的计算处理单元(节点),每个节点均有独自的CPU、内存以及磁盘等硬件资源,运行独立的操作系统和自治的数据库系统。各个节点通过高速专用网络或者商业通用网络互连,彼此协同计算,作为统一的数据库系统提供并行事务处理服务。
在数据库系统中,日志是用于实现故障恢复的重要元素。在数据库集群系统中,通常有两种日志方式:一种是集中式日志,另一种是分布式日志。所谓集中式日志是指所有节点共享同一个日志。当故障恢复时,只需要读取这个唯一的日志即可进行系统恢复,优点是实现简单、不易出错,缺点是写日志的效率比较低。分布式日志是指各节点分别产生自己的日志,当进行系统恢复时,需要读取全部节点的日志,对日志进行排序,然后执行故障恢复操作;优点是写日志的效率比较高,缺点是恢复时效率较低。
在专利号为ZL200610130102.0的中国发明专利中,公开了一种支持边服务边恢复的基于日志的“识时”动态故障恢复方法(TCDCRS)。 该方法采用了集成分区日志和短暂日志特性的实时日志模式,同时使用非易失性高速存储设备作为日志存储区,以尽可能地降低系统正常运行时日志代价;在站点发生故障后的恢复策略上,TCDCRS给出了基于分类恢复思想的动态恢复策略来支持系统边服务边恢复,从而尽可能减少故障站点停止服务的时间。但是,该方法并不适合在数据库集群系统中使用。
发明内容
针对现有技术所存在的不足,本发明所要解决的技术问题在于提供一种基于偏序关系日志的数据库集群系统故障恢复方法。使用该方法可以提高数据库集群系统的故障恢复效率。
为实现上述的发明目的,本发明采用下述的技术方案:
一种基于偏序关系日志的数据库集群系统故障恢复方法,包括如下步骤:
数据库集群系统中的每个节点分别产生日志;
当数据库集群系统需要从故障中恢复时,每个节点分别读取自己的日志,并根据所述日志之间的偏序关系,并行进行故障恢复操作;
当全部日志处理完成后,恢复到所述数据库集群系统故障前的状态。
其中,所述节点在产生日志时,首先判断日志事件的属性;
如果所述日志事件只与本节点有关,则为本地日志事件,相应的日志为本地事件日志,如果所述日志事件与其它节点有关,则为全局日志事件,相应的日志为全局事件日志;
所述本地事件日志的时间戳由所述节点确定,所述全局事件日志的时间戳由全局资源管理节点确定。
所述节点将本节点的当前时间戳作为参数发送给所述全局资源管理节点,申请所述全局事件日志的时间戳;
所述全局资源管理节点收到请求后,检查现有的全局时间戳与所述节点发来的当前时间戳,取其较大者作为所述全局事件日志的时间戳,同时将所述全局事件日志的时间戳设置为新的全局时间戳,并返回给所述节点。
所述节点将所述全局事件日志的时间戳设置为该节点新的时间 戳。
每个节点分别读取自己的日志时,如果读取的日志是本地事件日志,则根据本地事件日志的记录进行状态恢复;如果读取的日志是全局事件日志,则根据全局事件日志之间的偏序关系进行状态恢复。
在故障恢复过程中,将所述全局事件日志的时间戳作为故障恢复请求的参数发给其它节点,如果所述全局事件日志的时间戳不是各节点间时间戳的最小值,则等待其它节点执行故障恢复操作并通知,直至找到时间戳的最小值再继续执行本节点的故障恢复操作。
其它节点接收所述故障恢复请求后,如果该节点的日志已经全部处理完成,则返回所述故障恢复请求被允许的响应;如果该节点的日志未处理完成,比较当前日志的时间戳和所述故障恢复请求的时间戳,如果当前日志的时间戳小于等于所述故障恢复请求的时间戳,则继续执行该节点的故障恢复过程,直至日志全部处理完成;否则返回所述故障恢复请求被允许的响应。
本发明所提供的故障恢复方法一方面由于利用多节点并行进行数据库集群系统的恢复,提高了故障恢复的效率;另一方面由于利用分布式日志之间的偏序关系,保证了故障恢复的准确性。
附图说明
下面结合附图和具体实施方式对本发明作进一步的详细说明。
图1为本数据库集群系统故障恢复方法中,分布式日志的产生过程流程图;
图2为本数据库集群系统故障恢复方法中,故障恢复过程的流程图;
图3为本数据库集群系统故障恢复方法中,其它节点对故障恢复请求的处理过程流程图。
具体实施方式
在本发明所提供的数据库集群系统故障恢复方法中,数据库集群系统中的每个数据库节点(简称节点)分别产生独立的日志。当故障恢复时,每个节点分别读取自己的日志,并根据日志之间的偏序关系,并行进行故障恢复,以提高数据库集群系统的故障恢复效率。下面对此展开详细具体的说明。
在数学上,设R为非空集合A上的关系,如果R是自反的、反对称的和传递的,则称R为A上的偏序关系。在本发明中,偏序关系可以理解为两个日志的时间戳之间“大于或等于”或者“小于或等于”之类的顺序关系。因此,不同日志在时间戳上存在偏序关系。
下面结合附图和具体实施例对本发明的具体实施步骤作进一步说明,但该实施例并不能理解为对本发明的限定。
在某个基于共享磁盘的数据库集群系统中,包括4个数据库节点和1个全局资源管理节点。其中,数据库节点是指提供数据库服务的服务器,用于接受用户的数据库查询请求,并返回结果。它属于数据库集群系统的组成部分,可以有一个或多个。全局资源管理节点是指提供数据库集群系统共享资源管理服务的节点,它是数据库集群系统的核心组件。
各节点在接受用户的数据库使用请求(例如查询等)时,首先判断该使用请求是否需要记录日志。若需要记录日志,称之为日志事件。数据库集群系统中的每个节点在产生日志之前,首先判断产生日志的事件(以下称为日志事件)的属性。如果日志事件的影响是全局的,那么称为全局日志事件,产生的日志称为全局事件日志;如果日志事件的影响只是本节点,那么称为本地日志事件,产生的日志称为本地事件日志。
每条日志都有一个时间戳来进行标识。各个节点分别维护自己的时间戳,而全局资源管理节点负责维护全局时间戳。本地事件日志的时间戳由产生该日志的节点产生,全局事件日志的时间戳由全局资源管理节点(通过全局资源管理器)产生。当发生本地日志事件时,以本节点的当前时间戳作为本地日志事件的时间戳,与日志内容(事件属性)共同写入本地事件日志。当发生全局日志事件时,取各节点中时间戳的最大值作为时间戳,与日志内容共同写入全局事件日志,并将该时间戳作为各节点新的时间戳。
如图1所示,各个节点产生分布式日志的过程是这样的:
步骤101:节点产生日志事件;
步骤102:判断日志事件的属性。若此日志事件只与本节点有关,则为本地日志事件,跳转步骤103;若此日志事件与其它节点有关, 则为全局日志事件,跳转步骤104;
步骤103:将本节点的当前时间戳作为本地事件日志的时间戳;跳转步骤106;
步骤104:将本节点的当前时间戳作为参数发送给全局资源管理节点,申请全局事件日志的时间戳;全局资源管理节点收到请求后,检查现有的全局时间戳与申请节点发来的当前时间戳,取其较大者作为全局事件日志的时间戳,同时将其设置为新的全局时间戳,并返回给节点;
步骤105:节点将收到的时间戳作为全局事件日志的时间戳,同时将其设置为该节点新的时间戳;
步骤106:将包含时间戳和事件属性的日志写入日志文件中,日志产生过程结束。
同理,每个节点都执行以上相同的步骤来产生分布式日志。
当数据库集群系统故障恢复时,每个节点分别读取自己的日志,进行故障恢复操作。当读取的日志是本地事件日志时,则直接根据此日志的记录进行状态恢复;当读取的日志是全局事件日志时,则根据日志之间的偏序关系进行状态恢复。在故障恢复过程中,各节点进行的故障恢复操作是并行的。
具体而言,参考图2所示的故障恢复过程。首先,在步骤201中,某个节点启动故障恢复过程。在步骤202中,首先从本节点的日志中读取下一条日志记录。在步骤203中,如果本节点的日志结束,则跳转步骤210;如果本节点的日志未结束,则跳转步骤204。在步骤204中,如果日志的属性是本地事件日志,则跳转步骤208;否则跳转步骤205。
在步骤205中,将全局事件日志的时间戳作为故障恢复请求的参数发给其它所有节点,请求进行故障恢复。在这个过程中,如果当前全局事件日志的时间戳不是各节点间时间戳的最小值,则等待其它节点执行故障恢复操作并通知,直至找到时间戳的最小值再继续执行本节点的故障恢复操作。其它节点对该故障恢复请求的处理过程参见图3及下文所述。在步骤206中,等待并接收其它节点的返回值;在步 骤207中,若所有节点都返回故障恢复请求被允许的响应,则跳转步骤208;否则,跳转步骤209。在步骤208中,根据日志的内容进行状态恢复,然后跳转回步骤202。
步骤209是进行异常处理的步骤。在该步骤中,如果节点故障恢复失败,则本节点的故障恢复过程自然结束。在步骤210中,如果节点故障恢复成功,则本节点的故障恢复过程也自然结束。
当所有节点都成功完成故障恢复过程,整个数据库集群系统的故障恢复也相应完成。
前已述及,在步骤205中,将全局事件日志的时间戳作为故障恢复请求的参数发给其它所有节点,请求进行故障恢复。其它节点对故障恢复请求的处理过程如图3所示,包括如下的步骤:
步骤301:本节点接收故障恢复请求;
步骤302:若本节点的日志已经全部处理完成,则跳转步骤305;若未处理完成,则跳转步骤303;
步骤303:比较当前日志的时间戳和故障恢复请求的时间戳,若当前日志的时间戳小于等于故障恢复请求的时间戳,则跳转步骤304;否则跳转步骤305;
步骤304:继续执行本节点的故障恢复过程,完成下一条日志的读取后,跳转步骤302;
步骤305:返回故障恢复请求被允许的响应。
利用本发明所提供的故障恢复方法,当需要进行故障恢复时,各个节点首先读取分布式日志,并根据日志之间的偏序关系进行数据库集群系统的状态恢复。当全部日志处理完成后,即可恢复到数据库集群系统故障前的状态。在这个过程中,由于利用多节点并行进行数据库集群系统的恢复,提高了故障恢复的效率;由于利用分布式日志之间的偏序关系,保证了故障恢复的准确性。
以上对本发明所提供的基于偏序关系日志的数据库集群系统故障恢复方法进行了详细的说明。对本领域的技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。
Claims (7)
1.一种基于偏序关系日志的数据库集群系统故障恢复方法,其特征在于:
数据库集群系统中的每个节点分别产生日志;
当数据库集群系统需要从故障中恢复时,每个节点分别读取自己的日志,并根据所述日志之间的偏序关系,并行进行故障恢复操作;
当全部日志处理完成后,恢复到所述数据库集群系统故障前的状态。
2.如权利要求1所述的数据库集群系统故障恢复方法,其特征在于:
所述节点在产生日志时,首先判断日志事件的属性;
如果所述日志事件只与本节点有关,则为本地日志事件,相应的日志为本地事件日志,如果所述日志事件与其它节点有关,则为全局日志事件,相应的日志为全局事件日志;
所述本地事件日志的时间戳由所述节点确定,所述全局事件日志的时间戳由全局资源管理节点确定。
3.如权利要求2所述的数据库集群系统故障恢复方法,其特征在于:
所述节点将本节点的当前时间戳作为参数发送给所述全局资源管理节点,申请所述全局事件日志的时间戳;
所述全局资源管理节点收到请求后,检查现有的全局时间戳与所述节点发来的当前时间戳,取其较大者作为所述全局事件日志的时间戳,同时将所述全局事件日志的时间戳设置为新的全局时间戳,并返回给所述节点。
4.如权利要求3所述的数据库集群系统故障恢复方法,其特征在于:
所述节点将所述全局事件日志的时间戳设置为该节点新的时间戳。
5.如权利要求1所述的数据库集群系统故障恢复方法,其特征在于:
每个节点分别读取自己的日志时,如果读取的日志是本地事件日志,则根据本地事件日志的记录进行状态恢复;如果读取的日志是全局事件日志,则根据全局事件日志之间的偏序关系进行状态恢复。
6.如权利要求5所述的数据库集群系统故障恢复方法,其特征在于:
在故障恢复过程中,将所述全局事件日志的时间戳作为故障恢复请求的参数发给其它节点,如果所述全局事件日志的时间戳不是各节点间时间戳的最小值,则等待其它节点执行故障恢复操作并通知,直至找到时间戳的最小值再继续执行本节点的故障恢复操作。
7.如权利要求6所述的数据库集群系统故障恢复方法,其特征在于:
其它节点接收所述故障恢复请求后,如果该节点的日志已经全部处理完成,则返回所述故障恢复请求被允许的响应;如果该节点的日志未处理完成,比较当前日志的时间戳和所述故障恢复请求的时间戳,如果当前日志的时间戳小于等于所述故障恢复请求的时间戳,则继续执行该节点的故障恢复过程,直至日志全部处理完成;否则返回所述故障恢复请求被允许的响应。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110263335.9A CN102339305B (zh) | 2011-09-07 | 2011-09-07 | 基于偏序关系日志的数据库集群故障恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110263335.9A CN102339305B (zh) | 2011-09-07 | 2011-09-07 | 基于偏序关系日志的数据库集群故障恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102339305A true CN102339305A (zh) | 2012-02-01 |
CN102339305B CN102339305B (zh) | 2014-10-08 |
Family
ID=45515038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110263335.9A Active CN102339305B (zh) | 2011-09-07 | 2011-09-07 | 基于偏序关系日志的数据库集群故障恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102339305B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104917813A (zh) * | 2015-04-17 | 2015-09-16 | 小米科技有限责任公司 | 请求资源的方法及装置 |
CN105095248A (zh) * | 2014-05-04 | 2015-11-25 | 中国移动通信集团公司 | 一种数据库集群系统及其恢复方法、管理节点 |
WO2016065530A1 (zh) * | 2014-10-28 | 2016-05-06 | 华为技术有限公司 | 分布式数据库的数据分区分配方法及装置 |
CN109117317A (zh) * | 2018-11-01 | 2019-01-01 | 郑州云海信息技术有限公司 | 一种集群故障恢复方法和相关装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040030703A1 (en) * | 2002-08-12 | 2004-02-12 | International Business Machines Corporation | Method, system, and program for merging log entries from multiple recovery log files |
CN1975684A (zh) * | 2006-12-13 | 2007-06-06 | 天津理工大学 | 一种支持边服务边恢复的分布式实时数据库故障恢复方法 |
CN101460930A (zh) * | 2005-05-06 | 2009-06-17 | 微软公司 | 维护数据库与文件系统之间的链接级一致性 |
CN101477488A (zh) * | 2009-01-16 | 2009-07-08 | 哈尔滨工程大学 | 一种面向关键服务系统的系统级悔改恢复方法及系统 |
-
2011
- 2011-09-07 CN CN201110263335.9A patent/CN102339305B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040030703A1 (en) * | 2002-08-12 | 2004-02-12 | International Business Machines Corporation | Method, system, and program for merging log entries from multiple recovery log files |
CN101460930A (zh) * | 2005-05-06 | 2009-06-17 | 微软公司 | 维护数据库与文件系统之间的链接级一致性 |
CN1975684A (zh) * | 2006-12-13 | 2007-06-06 | 天津理工大学 | 一种支持边服务边恢复的分布式实时数据库故障恢复方法 |
CN101477488A (zh) * | 2009-01-16 | 2009-07-08 | 哈尔滨工程大学 | 一种面向关键服务系统的系统级悔改恢复方法及系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095248A (zh) * | 2014-05-04 | 2015-11-25 | 中国移动通信集团公司 | 一种数据库集群系统及其恢复方法、管理节点 |
CN105095248B (zh) * | 2014-05-04 | 2019-04-23 | 中国移动通信集团公司 | 一种数据库集群系统及其恢复方法、管理节点 |
WO2016065530A1 (zh) * | 2014-10-28 | 2016-05-06 | 华为技术有限公司 | 分布式数据库的数据分区分配方法及装置 |
CN104917813A (zh) * | 2015-04-17 | 2015-09-16 | 小米科技有限责任公司 | 请求资源的方法及装置 |
CN109117317A (zh) * | 2018-11-01 | 2019-01-01 | 郑州云海信息技术有限公司 | 一种集群故障恢复方法和相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102339305B (zh) | 2014-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8527459B2 (en) | System and method for data replication between heterogeneous databases | |
KR101259557B1 (ko) | 클러스터 데이터 관리 시스템 및 클러스터 데이터 관리 시스템에서 병렬 처리를 이용한 데이터 복구 방법 | |
CN110442560B (zh) | 一种日志重演方法、装置、服务器和存储介质 | |
US7801846B2 (en) | Generating log sequence identifiers to apply a transaction to a storage system | |
CN102262680B (zh) | 一种基于海量数据存取需求的分布式数据库代理系统 | |
US8626765B2 (en) | Processing database operation requests | |
EP2541413A1 (en) | Systems and Methods for Data Integrity Checking | |
CN110807064B (zh) | Rac分布式数据库集群系统中的数据恢复装置 | |
US9229970B2 (en) | Methods to minimize communication in a cluster database system | |
CN109933632B (zh) | 一种数据库的数据迁移方法、装置及设备 | |
CN101997823A (zh) | 一种分布式文件系统及其数据访问方法 | |
CN103516736A (zh) | 分布式缓存系统的数据恢复方法及装置 | |
US20100169289A1 (en) | Two Phase Commit With Grid Elements | |
KR20170097132A (ko) | 데이터베이스에서의 계좌와 관련된 거래 요청의 효율적인 처리를 위한 시스템 | |
EP4213038A1 (en) | Data processing method and apparatus based on distributed storage, device, and medium | |
US8527454B2 (en) | Data replication using a shared resource | |
Padhye et al. | Scalable transaction management with snapshot isolation for NoSQL data storage systems | |
CN102339305B (zh) | 基于偏序关系日志的数据库集群故障恢复方法 | |
CN103020003A (zh) | 面向多核程序确定性重演的内存竞争记录装置及其控制方法 | |
CN108733701A (zh) | 一种应用于在线教育的查询页面缓存控制方法 | |
CN113905054A (zh) | 基于RDMA的Kudu集群数据同步方法、装置、系统 | |
CN106815318B (zh) | 一种时序数据库的集群化方法及系统 | |
US20080250421A1 (en) | Data Processing System And Method | |
Pankowski | Consistency and availability of Data in replicated NoSQL databases | |
CN116701452A (zh) | 数据处理方法、相关设备、存储介质及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |