CN102629250A - 一种内存数据库重做日志文件的恢复方法 - Google Patents

一种内存数据库重做日志文件的恢复方法 Download PDF

Info

Publication number
CN102629250A
CN102629250A CN2012100469301A CN201210046930A CN102629250A CN 102629250 A CN102629250 A CN 102629250A CN 2012100469301 A CN2012100469301 A CN 2012100469301A CN 201210046930 A CN201210046930 A CN 201210046930A CN 102629250 A CN102629250 A CN 102629250A
Authority
CN
China
Prior art keywords
redo log
file
data item
memory database
main memory
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.)
Pending
Application number
CN2012100469301A
Other languages
English (en)
Inventor
幸锐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HANGZHOU FENGCHENG INFORMATION TECHNOLOGY Co Ltd
Original Assignee
HANGZHOU FENGCHENG INFORMATION TECHNOLOGY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by HANGZHOU FENGCHENG INFORMATION TECHNOLOGY Co Ltd filed Critical HANGZHOU FENGCHENG INFORMATION TECHNOLOGY Co Ltd
Priority to CN2012100469301A priority Critical patent/CN102629250A/zh
Publication of CN102629250A publication Critical patent/CN102629250A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明涉及一种内存数据库重做日志文件的恢复方法,步骤如下:(1)对重做日志文件按照产生时间先后进行排序;(2)按排序打开文件;(3)对打开的文件从后往前扫描重做日志数据项;(4)查找与重做日志数据项相对应的内存数据项,如果没有找到对应的内存数据项,则进行插入操作;如果找到对应的内存数据项,则忽略当前的重做日志数据项。本发明的有益效果如下:解决数据在恢复过程中重复恢复的情况,避免了对同一数据项重复恢复,从而节省了恢复的时间。由于在数据恢复时,内存数据的恢复耗时较多,通过判断避免重复的内存拷贝。具体效果需要视内存重复数量,如果重复数据覆盖率有100%的情况,可以节省80%的内存操作时间。

Description

一种内存数据库重做日志文件的恢复方法
技术领域
本发明涉及内存数据库系统领域,更具体地说,涉及一种内存数据库重做日志文件的恢复方法。
背景技术
重做日志是内存数据库恢复的重要技术之一。内存数据库使用检查点(Checkpoint)和重做日志结合的方式对数据进行保存。
内存数据库在做事务处理时,会对每笔事务提交后的写操作进行记录,如图1所示。
在数据库停止或是崩溃后,重新启动,就回去读取检查点和重做日志文件,进行数据库恢复,如图2所示。
现有的数据库系统的数据恢复是根据时间循序从前往后进行,如图3所示。
上述的重做日志文件的恢复方法存在不足:对于同一条数据项,如果在重做日志中出现多次,则会出现重复更新的情况,对于数据的恢复速度会造成影响。
发明内容
本发明的目的是解决以上提出的问题,提供一种用于在内存数据库恢复启动期间,快速处理恢复工作的方法。
本发明的技术方案是这样的:
一种内存数据库重做日志文件的恢复方法,所述的步骤如下:
(1)对重做日志文件按照产生时间先后进行排序;
(2)按排序打开文件;
(3)对打开的文件从后往前扫描重做日志数据项;
(4)查找与重做日志数据项相对应的内存数据项,如果没有找到对应的内存数据项,则进行插入操作;如果找到对应的内存数据项,则忽略当前的重做日志数据项。
作为优选,重做日志文件保存在重做日志文件目录中,对重做日志文件目录进行扫描,得到当前的重做日志文件列表。
作为优选,步骤(1)所述的对重做日志文件按照产生时间先后进行排序,具体为:对重做日志文件按照产生时间从后往前进行排序,产生时间晚的重做日志文件排在前,产生时间早的重做日志文件排在后。
作为优选,步骤(2)所述的打开文件,具体为:选取链表头部文件,如果文件存在,则打开文件;如果文件不存在,则结束恢复。
作为优选,步骤(3)所述的对打开的文件从后往前扫描重做日志数据项,具体为:对打开的文件从后往前扫描重做日志数据项,如果存在数据项,则进行步骤(4);如果不存在数据项,则返回步骤(2)。
作为优选,步骤(4)具体为:如果没有找到对应的内存数据项,则进行插入操作,更新内存数据项;如果找到对应的内存数据项,则忽略当前的重做日志数据项,并返回步骤(3)。
作为优选,所述的日志数据项包括操作类型、事务号、数据表ID、内存项ID和数据内容。
本发明的有益效果如下:
为了解决数据在恢复过程中重复恢复的情况,本发明所述的技术方案对现有技术的恢复方法进行了优化,避免了对同一数据项重复恢复,从而节省了恢复的时间。本发明的主要目的就是,把文件中的数据以时间点从后往前恢复,这样就可以节约内存中恢复的时间。因为有的更新数据是不需要进行恢复的。对于ID相同的数据,只需要恢复最后面的一条数据。
由于在数据恢复时,内存数据的恢复耗时较多,通过判断避免重复的内存拷贝。具体效果需要视内存重复数量,如果重复数据覆盖率有100%的情况,可以节省80%的内存操作时间。
附图说明
图1是内存数据库进行事务处理时的操作示意图;
图2是数据库恢复的流程示意图;
图3是现有的数据恢复方法的流程示意图;
图4是本发明的数据恢复方法的流程示意图;
图5是本发明实施例的内存项的结构示意图;
图6是本发明实施例的数据项的结构示意图。
具体实施方式
下面结合附图对本发明的实施例进行进一步详细说明:
一种内存数据库重做日志文件的恢复方法,所述的步骤如下:
(1)对重做日志文件按照产生时间先后进行排序;
(2)按排序打开文件;
(3)对打开的文件从后往前扫描重做日志数据项;
(4)查找与重做日志数据项相对应的内存数据项,如果没有找到对应的内存数据项,则进行插入操作;如果找到对应的内存数据项,则忽略当前的重做日志数据项。
重做日志文件保存在重做日志文件目录中,对重做日志文件目录进行扫描,得到当前的重做日志文件列表。
步骤(1)所述的对重做日志文件按照产生时间先后进行排序,具体为:对重做日志文件按照产生时间从后往前进行排序。
步骤(2)所述的打开文件,具体为:选取链表头部文件,如果文件存在,则打开文件;如果文件不存在,则结束恢复。
步骤(3)所述的对打开的文件从后往前扫描重做日志数据项,具体为:对打开的文件从后往前扫描重做日志数据项,如果存在数据项,则进行步骤(4);如果不存在数据项,则返回步骤(2)。
步骤(4)具体为:如果没有找到对应的内存数据项,则进行插入操作,并返回步骤(3);如果找到对应的内存数据项,则忽略当前的重做日志数据项,更新内存数据项。
实施例
本实施在Linux RedHat 5.3操作系统上进行实现。
内存项在数据库中如图4的方式组织。在数据表中,内存项ID与数据内容一一对应。
内存数据库在运行过程中会把对内存项的操作写到重做日志文件中。每笔操作可以看作一个数据项,包括操作类型、事务号、数据表ID、内存项ID和数据内容,如图5所示。在重做日志文件中,数据项按时间顺序写出。
当重做日志文件超过一定大小后,系统会关闭当前重做日志文件,并且生成新的重做日志文件,把后续的操作写到新建的重做日志文件中。在系统运行一段时间后会积累一定数量的重做日志文件,如下表所示。
  重做日志列表
  redo_00000001.log.20110118224350
  redo_00000002.log.20110118224536
  redo_00000003.log.20110118224612
  redo_00000004.log.20110118225123
  redo_00000005.log.20110118225359
  redo_00000006.log.20110118225448
  redo_00000007.log.20110118230154
  redo_00000008.log.20110118230330
  redo_00000009.log.20110118230809
在内存数据库系统停机或意外中止时,这些文件会保存在磁盘上。在内存数据库系统重新启动时,会首先对重做日志文件根据文件中的时间戳信息进行排序,产生时间晚的重做日志排在前面,把产生早的重做日志排在后面,排序后如下表所示。
  重做日志列表
  redo_00000009.log.20120118230809
  redo_00000008.log.20120118230330
  redo_00000007.log.20120118230154
  redo_00000006.log.20120118225448
  redo_00000005.log.20120118225359
  redo_00000004.log.20120118225123
  redo_00000003.log.20120118224612
  redo_00000002.log.20120118224536
  redo_00000001.log.20120118224350
然后对重做日志文件中从后往前扫描,对扫描到的数据项进行数据恢复。每个数据项中包括了内存项ID,对于每条重做日志中的数据项,找到对应内存项。如果当前内存项已经存在,那么就忽略当前数据项;如果当前内存项不存在,那么将对应的数据内容恢复到内存数据表中。
以伪代码对本发明所述的方法进行描述,具体如下:
Figure BDA0000138909400000051
Figure BDA0000138909400000061
以下为本发明所述的方法的代码,用于辅助说明本发明所述的方法的实现,具体如下:
Figure BDA0000138909400000062
对于以上的文件恢复,实施结果表明,在每个文件为4G左右大小的情况下,大概需要5分10秒,使用本文的方法恢复大概需要3分50秒。
以上所述的仅是本发明的优选实施方式,应当指出,对于本技术领域中的普通技术人员来说,在不脱离本发明核心技术特征的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (7)

1.一种内存数据库重做日志文件的恢复方法,其特征在于,所述的步骤如下:
(1)对重做日志文件按照产生时间先后进行排序;
(2)按排序打开文件;
(3)对打开的文件从后往前扫描重做日志数据项;
(4)查找与重做日志数据项相对应的内存数据项,如果没有找到对应的内存数据项,则进行插入操作;如果找到对应的内存数据项,则忽略当前的重做日志数据项。
2.根据权利要求1所述的内存数据库重做日志文件的恢复方法,其特征在于,重做日志文件保存在重做日志文件目录中,对重做日志文件目录进行扫描,得到当前的重做日志文件列表。
3.根据权利要求1所述的内存数据库重做日志文件的恢复方法,其特征在于,步骤(1)所述的对重做日志文件按照产生时间先后进行排序,具体为:对重做日志文件按照产生时间从后往前进行排序,产生时间晚的重做日志文件排在前,产生时间早的重做日志文件排在后。
4.根据权利要求1所述的内存数据库重做日志文件的恢复方法,其特征在于,步骤(2)所述的打开文件,具体为:选取链表头部文件,如果文件存在,则打开文件;如果文件不存在,则结束恢复。
5.根据权利要求1所述的内存数据库重做日志文件的恢复方法,其特征在于,步骤(3)所述的对打开的文件从后往前扫描重做日志数据项,具体为:对打开的文件从后往前扫描重做日志数据项,如果存在数据项,则进行步骤(4);如果不存在数据项,则返回步骤(2)。
6.根据权利要求1所述的内存数据库重做日志文件的恢复方法,其特征在于,步骤(4)具体为:如果没有找到对应的内存数据项,则进行插入操作,更新内存数据项;如果找到对应的内存数据项,则忽略当前的重做日志数据项,并返回步骤(3)。
7.根据权利要求1至6任一项所述的内存数据库重做日志文件的恢复方法,其特征在于,所述的日志数据项包括操作类型、事务号、数据表ID、内存项ID和数据内容。
CN2012100469301A 2012-02-28 2012-02-28 一种内存数据库重做日志文件的恢复方法 Pending CN102629250A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2012100469301A CN102629250A (zh) 2012-02-28 2012-02-28 一种内存数据库重做日志文件的恢复方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2012100469301A CN102629250A (zh) 2012-02-28 2012-02-28 一种内存数据库重做日志文件的恢复方法

Publications (1)

Publication Number Publication Date
CN102629250A true CN102629250A (zh) 2012-08-08

Family

ID=46587510

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2012100469301A Pending CN102629250A (zh) 2012-02-28 2012-02-28 一种内存数据库重做日志文件的恢复方法

Country Status (1)

Country Link
CN (1) CN102629250A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103838780A (zh) * 2012-11-27 2014-06-04 阿里巴巴集团控股有限公司 数据库的数据恢复方法及相关的设备
CN105022676A (zh) * 2014-04-22 2015-11-04 大唐软件技术股份有限公司 一种内存数据库重做日志文件的恢复方法和装置
CN108664359A (zh) * 2018-05-23 2018-10-16 上海达梦数据库有限公司 一种数据库恢复方法、装置、设备及存储介质
CN110442560A (zh) * 2019-08-14 2019-11-12 上海达梦数据库有限公司 一种日志重演方法、装置、服务器和存储介质
CN110555055A (zh) * 2019-07-19 2019-12-10 国网辽宁省电力有限公司大连供电公司 针对Oracle数据库重做日志文件的数据挖掘方法
CN112099996A (zh) * 2020-09-21 2020-12-18 天津神舟通用数据技术有限公司 基于页面更新序号的数据库集群多节点重做日志恢复方法
CN112231150A (zh) * 2020-10-27 2021-01-15 北京人大金仓信息技术股份有限公司 数据库集群中故障数据库恢复方法和装置
CN112532450A (zh) * 2020-11-30 2021-03-19 安徽中科美络信息技术有限公司 一种数据流分发进程配置的动态更新方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6732124B1 (en) * 1999-03-30 2004-05-04 Fujitsu Limited Data processing system with mechanism for restoring file systems based on transaction logs
CN101625703A (zh) * 2009-08-21 2010-01-13 华中科技大学 一种内存数据库的日志合并方法和系统
CN101894137A (zh) * 2010-06-23 2010-11-24 中兴通讯股份有限公司 嵌入式数据库中数据恢复的方法和装置
CN101901250A (zh) * 2010-06-08 2010-12-01 中兴通讯股份有限公司 一种内存数据库及其数据处理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6732124B1 (en) * 1999-03-30 2004-05-04 Fujitsu Limited Data processing system with mechanism for restoring file systems based on transaction logs
CN101625703A (zh) * 2009-08-21 2010-01-13 华中科技大学 一种内存数据库的日志合并方法和系统
CN101901250A (zh) * 2010-06-08 2010-12-01 中兴通讯股份有限公司 一种内存数据库及其数据处理方法
CN101894137A (zh) * 2010-06-23 2010-11-24 中兴通讯股份有限公司 嵌入式数据库中数据恢复的方法和装置

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103838780A (zh) * 2012-11-27 2014-06-04 阿里巴巴集团控股有限公司 数据库的数据恢复方法及相关的设备
CN105022676A (zh) * 2014-04-22 2015-11-04 大唐软件技术股份有限公司 一种内存数据库重做日志文件的恢复方法和装置
CN105022676B (zh) * 2014-04-22 2018-08-17 大唐软件技术股份有限公司 一种内存数据库重做日志文件的恢复方法和装置
CN108664359A (zh) * 2018-05-23 2018-10-16 上海达梦数据库有限公司 一种数据库恢复方法、装置、设备及存储介质
CN110555055A (zh) * 2019-07-19 2019-12-10 国网辽宁省电力有限公司大连供电公司 针对Oracle数据库重做日志文件的数据挖掘方法
CN110442560A (zh) * 2019-08-14 2019-11-12 上海达梦数据库有限公司 一种日志重演方法、装置、服务器和存储介质
CN110442560B (zh) * 2019-08-14 2022-03-08 上海达梦数据库有限公司 一种日志重演方法、装置、服务器和存储介质
CN112099996A (zh) * 2020-09-21 2020-12-18 天津神舟通用数据技术有限公司 基于页面更新序号的数据库集群多节点重做日志恢复方法
CN112099996B (zh) * 2020-09-21 2022-04-05 天津神舟通用数据技术有限公司 基于页面更新序号的数据库集群多节点重做日志恢复方法
CN112231150A (zh) * 2020-10-27 2021-01-15 北京人大金仓信息技术股份有限公司 数据库集群中故障数据库恢复方法和装置
CN112231150B (zh) * 2020-10-27 2024-03-19 北京人大金仓信息技术股份有限公司 数据库集群中故障数据库恢复方法和装置
CN112532450A (zh) * 2020-11-30 2021-03-19 安徽中科美络信息技术有限公司 一种数据流分发进程配置的动态更新方法及系统

Similar Documents

Publication Publication Date Title
CN102629250A (zh) 一种内存数据库重做日志文件的恢复方法
CN101477487B (zh) 多次增量文件的备份方法和恢复方法
CN102541757B (zh) 写缓存方法、缓存同步方法和装置
CN102609337A (zh) 一种内存数据库快速数据恢复方法
US11567681B2 (en) Method and system for synchronizing requests related to key-value storage having different portions
CN109542682A (zh) 一种数据备份方法、装置、设备和存储介质
CN102999564B (zh) 写入数据的方法、装置和设备
US11748357B2 (en) Method and system for searching a key-value storage
CN107229540A (zh) 一种基于时间点的数据库恢复方法及系统
CN111125116B (zh) 定位业务表中代码字段及对应代码表的方法及系统
CN102236586A (zh) 一种计算机本地及网络多次增量的数据备份、恢复方法
WO2023277819A3 (zh) 数据处理方法、系统、设备、计算机程序产品及存储功能
US9111261B2 (en) Method and system for management of electronic mail communication
CN103838645B (zh) 一种基于哈希的远程差异合成备份实现方法
US8838615B2 (en) Computer implemented method for automatically managing stored checkpoint data
CN103473172A (zh) 检查后台程序内存泄露并定位泄露内存点的系统及方法
CN105022676B (zh) 一种内存数据库重做日志文件的恢复方法和装置
CN102054001A (zh) 一种数据挖掘系统中数据预处理的方法、系统及装置
CN116881051B (zh) 一种数据备份与恢复方法、装置、电子设备和存储介质
CN103092955B (zh) 检查点操作方法、装置及系统
CN113836374A (zh) 一种基于大数据的实时政务数据处理系统
CN111290881A (zh) 一种数据恢复方法、装置、设备及存储介质
CN114880404A (zh) 一种轨道交通分布式数据库的组模型准延迟同步方法
CN109960602A (zh) 信息管理方法、装置、设备及介质
Chappelier et al. PLSI: the true fisher kernel and beyond: iid processes, information matrix and model identification in PLSI

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned

Effective date of abandoning: 20120808

C20 Patent right or utility model deemed to be abandoned or is abandoned