CN102629250A - 一种内存数据库重做日志文件的恢复方法 - Google Patents
一种内存数据库重做日志文件的恢复方法 Download PDFInfo
- 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
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,对于每条重做日志中的数据项,找到对应内存项。如果当前内存项已经存在,那么就忽略当前数据项;如果当前内存项不存在,那么将对应的数据内容恢复到内存数据表中。
以伪代码对本发明所述的方法进行描述,具体如下:
以下为本发明所述的方法的代码,用于辅助说明本发明所述的方法的实现,具体如下:
对于以上的文件恢复,实施结果表明,在每个文件为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和数据内容。
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)
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)
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 | 中兴通讯股份有限公司 | 一种内存数据库及其数据处理方法 |
-
2012
- 2012-02-28 CN CN2012100469301A patent/CN102629250A/zh active Pending
Patent Citations (4)
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)
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 |