[发明专利]面向Web开发环境的关系型数据库数据回溯方法有效
申请号: | 201710262218.8 | 申请日: | 2017-04-20 |
公开(公告)号: | CN107145403B | 公开(公告)日: | 2020-06-30 |
发明(设计)人: | 陆佳炜;卢成炳;李杰;肖刚;张元鸣;徐俊;周焕;高燕煦;马俊;陈烘 | 申请(专利权)人: | 浙江工业大学 |
主分类号: | G06F11/14 | 分类号: | G06F11/14;G06F16/21;G06F16/28 |
代理公司: | 杭州斯可睿专利事务所有限公司 33241 | 代理人: | 王利强 |
地址: | 310014 浙江省*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种面向Web开发环境的关系型数据库数据回溯方法,包括以下步骤:第一步、建立Web环境SeeLog日志处理模型,过程如下:1.1自动获取SeeLog日志;1.2根据算法动态调整日志持久化行为;1.3采用日志分割策略进行持久化操作;第二步、采用TBack数据回溯机制进行数据库恢复,过程如下:一旦数据库在某一时间点发生故障,利用数据库事务日志进行数据回溯,将数据库恢复至故障发生之前的任意时间点;第三步、采用内存日志的自备份机制,将每个事务即时写入持久化层,保证内存日志不会丢失。本发明能实现低成本的数据备份并且可以不依赖于具体的关系型数据库种类和版本。 | ||
搜索关键词: | 面向 web 开发 环境 关系 数据库 数据 回溯 方法 | ||
【主权项】:
一种面向Web开发环境的关系型数据库数据回溯方法,其特征在于:包括以下步骤:第一步、建立Web环境SeeLog日志处理模型,过程如下:1.1自动获取SeeLog日志:Web环境下,当用户操作数据库时,会执行DML语句,包含:UPDATE、INSERT、DELETE三种形式;成功执行DML语句后,会触发日志处理单元;日志处理单元运用AOP面向切面编程的思想,以业务处理过程中对数据库的修改作为切入点,将日志记录的代码以通知的形式织入切入点中,形成切面,达到日志处理逻辑与业务操作逻辑分离的目的;1.2根据算法动态调整日志持久化行为:SeeLog日志的作用是记录用户对数据库修改的所有行为,从而保证在数据库发生故障后,能真实还原用户操作数据库的场景,使数据库达到故障发生之前的状态;在SeeLog日志处理模型中,日志首先会被写入内存,一段时间后再将内存中的日志写入持久化层;1.3采用日志分割策略进行持久化操作:当内存日志写入持久化层时,将日志进行分割,将单个日志文件的最大数据行设置为Rowmax,该数值根据实际需要自行更改;首个日志文件会根据创建时间命名,每当数据行数达到Rowmax时,则新建文件继续写入,所有文件新建时都以创建时间作为文件名,以便搜索文件时快速定位时间点;第二步、采用TBack数据回溯机制进行数据库恢复,过程如下:一旦数据库在某一时间点发生故障,利用数据库事务日志进行数据回溯,将数据库恢复至故障发生之前的任意时间点;步骤2.1 TBack数据回溯机制必须基于某一时刻的数据库版本进行恢复,建立数据库里程碑,里程碑的意义在于:恢复数据时,先将数据库还原至里程碑时的状态,然后依据SeeLog日志,按照时间流的形式重现用户操作进行数据回溯。数据库备份人员可按具体项目需要,不定期进行一次数据库备份,建议选择Web应用用户访问量较少时进行;数据库里程碑的建立根据采用数据库类型不同而略有差异,但都依托数据库自带命令行工具或GUI完成,备份人员执行一次备份任务后,需要将备份文件进行归档,并在里程碑历史表中添加本次里程碑建立信息,里程碑历史表中详细记录了从数据库新建开始到目前为止,每次里程碑建立的时间、备份文件归档路径以及备份文件名,方便对数据库历史进行定位追踪;TBack数据回溯机制采用基于用户行为分析的备份策略,通过感知用户在Web应用中对数据库所做的修改进行记录,而无法监测到管理员直接对数据库所做的改动;因此每当数据库结构发生改变或者DBA管理员手动修改数据库之后,需要数据库备份人员建立一个里程碑,否则会导致回溯机制失效;步骤2.2数据库故障发生后,先确定待恢复时间timeEnd,为数据库发生故障前的某个时间点,然后对照里程碑历史表选择合适的里程碑,选择故障发生前最近一次里程碑,根据记录的路径获取相应的备份文件,并记下里程碑建立的时间timeStart。打开数据库自带命令行工具或GUI,读取里程碑备份文件,执行数据库还原命令,由于采用数据库类型不同,还原命令会略有差异。执行成功后,数据库还原至里程碑时的状态;步骤2.3启动新线程,程序首先确定回溯起始文件,进入SeeLog日志的存放目录,逐个搜索文件名,找到相邻的两个文件F1、F2,使得F1的文件名时间小于里程碑建立的时间timeStart;而F2的文件名时间刚好大于timeStart。此时文件F1记录的是从F1的文件名时间开始到timeStart期间的所有用户行为,因此可以确定回溯起始文件为F1;按照同样的方法,根据待恢复时间timeEnd搜索得到回溯结束文件;接着程序将继续定位恢复起始数据行,由于日志文件的每行数据都记录着用户的操作时间,因此可以根据操作时间进行快速定位;回溯起始文件中,操作时间大于timeStart的第一条数据所在行即为恢复起始数据行lineStart;同样,回溯结束文件中,操作时间小于timeEnd的最后一条数据所在行即为恢复结束行lineEnd。然后程序将读取lineStart到lineEnd区间内的所有用户行为,并逐条将数据压入队列中,该队列创建在内存中,SeeLog日志每行数据构成的五元组将作为参数传入,该五元组存储在队列的每一个元素中;步骤2.4采用管道流处理机制,首先任务执行中枢将解析Web应用中的数据源配置,并建立数据库连接,然后从队列中取出一个元素进入管道流,其他元素在队列中继续等待,任务执行中枢将读取元素中的五元数据组<OperateTime,[OperateType],SQL,{Parameters},[IsBatch]>,根据五元组中的是否批量属性IsBatch,确定是否开启数据库事务,读取SQL语句属性(SQL)生成预处理语句,并将占位符参数Parameters填入,接着根据操作类型属性OperateType执行当前预处理语句,执行成功后,本条用户行为数据还原完毕,继续从队列中取出下一个元素进入管道流;当任务执行中枢取出当前队列中所有的元素后,会唤醒步骤2.3中等待的线程,此时可以继续读取日志文件中的下一部分数据;步骤2.5若步骤2.4中的任务执行中枢未能成功执行预处理语句,将挂起从队列中读取元素进入管道流的操作,并每间隔一段时间重复执行一次当前的预处理语句,若能成功执行,则恢复挂起的操作,继续读取队列中的元素;若重复执行一定次数后,仍未能执行成功,将提示数据库恢复人员手工排查错误,并暂停整个程序的运行,直到当前预处理语句成功执行,程序才继续运行并恢复挂起的操作;当lineStart到lineEnd区间内的所有数据都恢复成功后,数据回溯完毕,数据库成功还原至故障发生之前的状态;第三步、采用内存日志的自备份机制,将每个事务即时写入持久化层,保证内存日志不会丢失。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江工业大学,未经浙江工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710262218.8/,转载请声明来源钻瓜专利网。
- 上一篇:一种检测软件宕机的方法和电子设备
- 下一篇:一种免气腹腹腔牵引系统