CN110727548B - 一种基于数据库dml同步的持续数据保护方法及装置 - Google Patents

一种基于数据库dml同步的持续数据保护方法及装置 Download PDF

Info

Publication number
CN110727548B
CN110727548B CN201910933462.1A CN201910933462A CN110727548B CN 110727548 B CN110727548 B CN 110727548B CN 201910933462 A CN201910933462 A CN 201910933462A CN 110727548 B CN110727548 B CN 110727548B
Authority
CN
China
Prior art keywords
data
dml
log
database
data dictionary
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.)
Active
Application number
CN201910933462.1A
Other languages
English (en)
Other versions
CN110727548A (zh
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.)
Shanghai Information2 Software Inc
Original Assignee
Shanghai Information2 Software Inc
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 Shanghai Information2 Software Inc filed Critical Shanghai Information2 Software Inc
Priority to CN201910933462.1A priority Critical patent/CN110727548B/zh
Publication of CN110727548A publication Critical patent/CN110727548A/zh
Application granted granted Critical
Publication of CN110727548B publication Critical patent/CN110727548B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication

Abstract

本发明公开了一种基于数据库DML同步的持续数据保护方法及装置,该方法包括:步骤S1,导出源端数据库的数据字典;步骤S2,启动日志分析进程,监听源端数据库的重做日志文件的变化,于监听到重做日志文件中写入新的数据时,读取新写入的内容,从读取的二进制数据中解析出具体的增量DML操作,并进行缓存;步骤S3,在日志分析进程启动后,利用步骤S1导出的数据字典将源端数据库的基线导出,并通过数据字典将基线数据装载到备份数据库;步骤S4,获取步骤S2得到的DML操作,根据其操作类型、操作对象及数据结合数据字典将其装载到备份数据库中;步骤S5,往复循环执行步骤S2的日志分析进程及步骤S4的DML增量同步。

Description

一种基于数据库DML同步的持续数据保护方法及装置
技术领域
本发明涉及计算机数据备份容灾技术领域,特别是涉及一种基于数据库DML同步的持续数据保护(CDP,Continuous Data Protection)方法及装置。
背景技术
在计算机领域,为了保护重要的数据信息,通常采用数据备份技术,在数据不可用时从备份介质中恢复数据。但是在恢复数据时,两次备份之间的数据可能会丢失,对于一些关键的信息系统,所能容忍的数据丢失量,即恢复点目标(RPO,Recovery Point Object)要尽可能地低,这就需要应用连续数据保护(CDP,Continuous Data Protection)技术。
Oracle数据库是一种市面上被广泛使用的高性能关系数据库,大量企业的核心数据都保存在Oracle数据库系统中。一旦生产系统出现软硬件失效,数据丢失甚至无法恢复,造成的损失将是巨大的,因此对核心数据库进行备份是必不可少的。
由于数据库内部数据逻辑的复杂性,一般的物理层面基于数据块的或者针对文件系统的数据备份和CDP系统无法保护Oracle的数据,其复制出的数据往往无法被Oracle识别和使用,更无法实现将数据变化立即同步到备份机并查询的功能。数据库提供的定期的数据库备份任务无法实现实时的、细粒度的数据同步和保护。针对数据库系统的保护必须从逻辑层面将库中的数据取出并通过数据库接口将数据装载到备份库中。
目前的数据库同步软件从原理上大致分为两类,一类是在数据库的表上添加触发器,另一类是通过分析数据库的redolog获取增量数据。其中触发器的方式需要修改表结构,在需要同步的表上对每个字段添加触发器从而捕获到对表数据的修改,对数据库性能等方面影响太大。而基于redolog的方式则只需要读取日志文件,从文件系统直接获取数据,极大的减少了与数据库的交互,对系统性能影响降到最小。
根据数据库的先写日志(WAL,Write-Ahead Logging)原则,数据库的所有操作都会写入重写日志文件(redolog)中,通过解析重写日志文件redolog就可以获取数据库中表数据的所有变化,然后将这些变化数据还原为sql语句装载入备份库中,即可实现对数据库的高效的连续性数据保护(CDP)。
数据库日志也分为两种,一种是直接记录操作的sql,一种是记录具体的数据变化,并以特定的格式写入二进制的文件中。直接记录sql的方式看似简单直接,但对于某些操作无法反映其真实数据,比如时间日期类型的列中直接使用sysdate,对于update操作也无法记录update操作之前的值。
Oracle的redolog(重做日志文件)是二进制的,其中详细记录了每个操作的类型及其数据,通过分析可以从redolog的记录格中解析出每个操作的时间戳(scn)、事务id、操作对象、原始数据(old)和变化后的数据(new)。数据库的修改操作大致分为增(irp)、删(drp)、改(urp)三种,不同的操作在日志中以不同的格式进行记录,并用不同的操作码进行标识。
Oracle的redolog分为在线日志和归档日志,其中归档日志只有在开启归档的模式下才会保存。在线日志则是几个固定的文件,循环写入,在非RAC(real applicationcluster,实时应用集群)的情况下只有一个是当前(current)正在写入的日志。
然而,在现有的数据库同步技术和实现中,基线(baseline)的导出和增量的衔接大多比较繁琐,有些实现只有增量部分,baseline的导出和装载则需要使用其他工具单独进行,有些还需要经过繁琐的手动配置,效率较低。
发明内容
为克服上述现有技术存在的不足,本发明之目的在于提供一种基于数据库DML同步的持续数据保护方法及装置,以实现高效地对Oracle数据库的连续性数据保护的目的。
为达上述目的,本发明提出一种基于数据库DML同步的持续数据保护方法,包括如下步骤:
步骤S1,导出源端数据库的数据字典;
步骤S2,启动日志分析进程,监听源端数据库的重做日志文件的变化,于监听到重做日志文件中写入新的数据时,读取新写入的内容,从读取的二进制数据中解析出具体的增量DML操作,并进行缓存;
步骤S3,在日志分析启动后,利用步骤S1导出的数据字典将源端数据库的基线导出,并通过数据字典将基线数据装载到备份数据库;
步骤S4,获取步骤S2得到的DML操作,根据其操作类型、操作对象及数据结合数据字典将其装载到备份数据库中;
步骤S5,往复循环执行步骤S2的日志分析进程及步骤S4的DML增量同步。
优选地,于步骤S1中,导出数据字典时记录每个表的对象号、表的基本属性,包括但不限于表的列信息、索引信息、约束信息、触发器信息,并记录下数据字典的导出时间戳。
优选地,步骤S2进一步包括:
步骤S200,从源数据库中查询出当前日志的路径,读取到最新的写入位置;
步骤S201,读取日志文件内容,若解析到新写入的数据时,从中读取新加的内容,并从二进制数据中分析出具体的DML操作,其中包含但不限于操作类型,操作对象的id,时间戳及操作产生的数据;
步骤S202,判断解析得到的操作对象是否在所述数据字典中,若该操作对象不在所述数据字典中,则丢弃该操作对象对应的DML操作,否则将解析得到的DML操作写入缓存文件中进行保存,记录下该DML操作的信息;
优选地,于步骤S200中,若日志分析进程无法于在线日志被覆盖之前读取其中的内容,则从归档日志中继续读取,若没有归档日志,则同步失败,并返回步骤S1重新导出数据字典和基线并从新的位置解析当前日志。
优选地,于步骤S3中,根据先前导出的数据字典拼接出正确的sql语句,以select语句的形式从源端数据库中查询出所需表数据,在导出的基线中记录每个表的基线的导出时间戳。
优选地,于步骤S202中,将增量DML操作的时间戳和对应操作的表的基线的导出时间戳进行对比,如果该增量操作先于该对象的导出时间戳,则将该增量DML操作丢弃
优选地,于步骤S3中,当导出基线后,通过数据字典拼接出正确的装载sql,将数据字典和基线数据以insert的形式装载到所述备份数据库中。
优选地,于步骤S4中,从缓存文件中读出增量DML的事务操作,根据其操作类型、操作对象及数据结合数据字典还原出sql语句,并装载到所述备份数据库库中。
为达到上述目的,本发明还提供一种基于数据库DML同步的持续数据保护装置,包括:
数据字典导出模块,用于导出源端数据库的数据字典;
日志分析模块,用于启动日志分析进程,监听源端数据库的重做日志文件的变化,于监听到所述重做日志文件中写入新的数据时,读取新写入的内容,从读取的二进制数据中解析出具体的增量DML操作,并进行缓存;
基线导出装载模块,用于在所述日志分析进程启动后,利用所述数据字典导出模块导出的数据字典将所述源端数据库的基线导出,并通过所述数据字典将基线数据装载到所述备份数据库中;
增量DML装载模块,用于获取解析到的DML操作,根据其操作类型、操作对象及数据结合数据字典将其装载到所述备份数据库中。
循环执行控制模块,用于往复循环执行所述日志分析模块的日志分析进程及所述增量DML装载模块的DML增量同步。
优选地,所述日志分析模块进一步包括:
日志读取单元,用于从源端数据库中查询出当前日志的路径,读取到最新的写入位置;
解析单元,用于读取日志文件内容,若解析到新写入的数据时,从中读取新加的内容,并从二进制数据中分析出具体的DML操作,其中包含但不限于操作类型,操作对象的id,时间戳及操作产生的数据;
判断处理单元,用于判断解析得到的操作对象是否在所述数据字典中,若该操作对象不在所述数据字典中,则丢弃该操作对象对应的DML操作,否则将解析得到的DML操作写入缓存文件中进行保存,记录下该DML操作的信息。
与现有技术相比,本发明提供一种基于数据库DML同步的持续数据保护方法,自动导出数据字典和基线baseline,通过分析重写日志文件redolog获取源端数据库的增量数据DML,将增量数据DML装载到备份数据库中,在数据库正常运行的情况下进行基线baseline和增量数据DML的衔接,实现了一种方便易用且高效的对于Oracle数据库的连续性数据保护技术。
附图说明
图1为本发明一种基于数据库DML同步的持续数据保护方法的步骤流程图;
图2为本发明一种基于数据库DML同步的持续数据保护装置的系统架构图;
图3为本发明具体实施例中日志分析模块的细部结构图;
图4示出了本发明具体实施例中导出数据字典和baseline的过程。
图5示出了本发明具体实施例中增量日志分析和装载的过程。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
图1为本发明一种基于数据库DML同步的持续数据保护方法的步骤流程图。如图1所示,本发明一种基于数据库DML同步的持续数据保护方法,包括如下步骤:
步骤S1,导出源端数据库的数据字典。
具体地说,从源端Oracle数据库中查询需要同步的表的结构及其他元数据,即数据字典,在本发明具体实施例中,导出数据字典时会记录下每个表的对象号(object#,Oracle中每个对象都有唯一的对象号,表也是一种对象)、表的基本属性包括表的列信息、索引信息、约束信息、触发器信息等,同时记录下数据字典的导出时间戳(scn)。一般地,数据库的元数据存储在数据库的系统表中,包括SYS.OBJ$、SYS.TAB$、SYS.COL$等,以select的形式从系统表中查询出所需元数据。
步骤S2,启动日志分析进程,监听源端数据库的重做日志文件(redolog)的变化,于监听到重做日志文件(redolog)中写入新的数据时,读取新写入的内容,从读取的二进制数据中解析出具体的增量DML操作,并进行缓存。
具体地,步骤S2进一步包括:
步骤S200,从源数据库中查询出当前(current)日志的路径,读取到最新的写入位置。优选地,在日志分析过程中,可能会出现系统事务量大,日志写入速度快,导致日志分析进程无法于在线日志(online log)被覆盖之前读取其中的内容,此时就需要从归档日志(archived_log)中继续读取,如果没有归档日志,则同步失败,此时CDP无法继续,只能返回步骤S1重新导出数据字典和baseline并从新的位置解析当前日志。
步骤S201,读取日志文件内容,若解析到新写入的数据时,从中读取新加的内容,并从二进制数据中分析出具体的DML操作,其中包含了操作类型,操作对象(表)的id,及操作产生的行数据。在顺序读取日志文件内容的时候,如果解析得到了旧的日志块,则等待若干时间(该时间可以预设,例如可以是几十到几百毫秒)再重新读,若没有新文件块则继续等待,直到出现新文件块则继续往下读。
步骤S202,判断解析得到的操作对象是否在数据字典中,若得到的操作对象不在数据字典中,则丢弃此操作对象对应的DML操作,否则将解析得到的DML操作写入缓存文件中进行保存,记录下所有的DML操作的事务id、scn(时间戳)、操作类型(irp,drp,urp)、操作对象(object#)及数据(new,old)等。
步骤S3,在日志分析进程启动后,利用步骤S1导出的数据字典将源端数据库的基线(baseline)导出,并将数据字典和baseline数据发送到备份数据库。在本发明具体实施例中,根据先前导出的数据字典拼接出正确的sql语句,以select语句的形式从数据库中查询出所需表数据,即基线(baseline)。由于数据字典中导出了每个表的所有列信息,这里用表名和列名构成一个“select列1,列2,列3from表”形式的语句从表中抽取数据,在导出的基线(baseline)中记录每个表的基线(baseline)导出时间戳(scn),当导出基线(baseline)后,,装载程序通过数据字典拼接出正确的装载sql,将数据字典和基线(baseline)数据以insert的形式装载到备份数据库中。
这里需说明的是,由于基线(baseline)数据的导出通常耗时较长且每个数据表是逐个导出,此时数据库中的业务正常进行,为保证导出baseline期间增量数据不丢失,步骤S2的日志分析最好先于baseline导出开始进行。
优选地,由于在导出的baseline中记录每个表的baseline导出时间戳(scn),因此,于步骤S202中,还将增量DML操作的时间戳(scn)和对应操作的表的baseline的导出时间戳(scn)进行对比,如果该增量操作先于该对象的导出时间戳(scn),则将该增量DML操作丢弃。这种情况是可能出现的,因为日志分析是先于基线(baseline)导出开始进行。
步骤S4,获取步骤S2得到的增量DML操作,根据其操作类型、操作对象及数据结合数据字典将其装载到备份数据库中。在本发明具体实施例中,从缓存文件中读出增量DML的事务操作,根据其操作类型、操作对象及数据结合数据字典还原出sql语句(insert、delete、update)并装载到备份数据库库中,本发明使用sql语句进行装载保证了装载的数据立即可用。也就是说,当基线(baseline)数据装载完成之后,则将解析得到的DML操作发送到装载模块,装载模块则将获取的操作结合数据字典还原为sql,以insert、delete、update的形式装载到备份数据库中。
步骤S5,往复循环执行步骤S2的重做日志文件redolog的日志分析进程及步骤S4的DML增量同步,即可实现oracle数据库DML操作的连续复制,继而对Oracle数据库实现了CDP保护。
图2为本发明一种基于数据库DML同步的持续数据保护装置的系统架构图。如图2所示,本发明一种基于数据库DML同步的持续数据保护装置,包括:
数据字典导出模块201,用于导出源端数据库的数据字典。
具体地说,从源端Oracle数据库中查询需要同步的表的结构及其他元数据,即数据字典,在本发明具体实施例中,数据字典导出模块201导出数据字典时会记录下每个表的对象号(object#,Oracle中每个对象都有唯一的对象号,表也是一种对象)、表的基本属性包括表的列信息、索引信息、约束信息、触发器信息等,同时记录下数据字典的导出时间戳(scn)。一般地,数据库的元数据存储在数据库的系统表中,包括SYS.OBJ$、SYS.TAB$、SYS.COL$等,以select的形式从系统表中查询出所需元数据。
日志分析模块202,用于启动日志分析进程,监听源端数据库的重做日志文件(redolog)的变化,于监听到重做日志文件(redolog)中写入新的数据时,读取新写入的内容,从读取的二进制数据中解析出具体的增量DML操作,并进行缓存。
具体地,如图3所示,日志分析模块202进一步包括:
日志读取单元2021,用于从源端数据库中查询出当前(current)日志的路径,读取到最新的写入位置。优选地,在日志分析过程中,可能会出现系统事务量大,日志写入速度快,导致日志分析进程无法于在线日志(online log)被覆盖之前读取其中的内容,此时日志读取单元2021就需要从归档日志(archived_log)中继续读取,如果没有归档日志,则同步失败,此时CDP无法继续,只能返回数据字典导出模块201重新导出数据字典和baseline并从新的位置解析当前日志
解析单元2022,用于读取日志文件内容,若解析到新写入的数据时,从中读取新加的内容,并从二进制数据中分析出具体的DML操作,其中包含了操作类型,操作对象(表)的id,及操作产生的行数据。解析单元2022在顺序读取日志文件内容的时候,如果解析得到了旧的日志块,则等待若干时间(该时间可以预设,例如可以是几十到几百毫秒)再重新读,若没有新文件块则继续等待,直到出现新文件块则继续往下读。
判断处理单元2023,用于判断解析得到的操作对象是否在数据字典中,若得到的操作对象不在数据字典中,则丢弃此操作对象对应的DML操作,否则将解析得到的DML操作写入缓存文件中进行保存,记录下所有的DML操作的事务id、scn、操作类型(irp,drp,urp)、操作对象(object#)及数据(new,old)等。
基线导出模块203,用于在日志分析进程启动后,利用数据字典导出模块201导出的数据字典将源端数据库的基线(baseline)导出,并通过数据字典将基线(baseline)数据装载到备份数据库。在本发明具体实施例中,根据先前导出的数据字典拼接出正确的sql语句,以select语句的形式从数据库中查询出所需表数据,即基线(baseline)。由于数据字典中导出了每个表的所有列信息,这里用表名和列名构成一个“select列1,列2,列3from表”形式的语句从表中抽取数据,在导出的基线(baseline)中记录每个表的基线(baseline)导出时间戳(scn)。当基线导出模块203导出基线(baseline)数据后,通过数据字典拼接出正确的装载sql,将基线(baseline)数据以insert的形式装载到备份数据库中
这里需说明的是,由于基线(baseline)数据的导出通常耗时较长且每个数据表是逐个导出,此时数据库中的业务正常进行,为保证导出baseline期间增量数据不丢失,日志分析模块的日志分析最好先于基线导出模块203的基线(baseline)导出开始进行。
优选地,由于在导出的baseline中记录每个表的baseline导出时间戳(scn),于日志分析模块202的判断处理单元2023中,还将增量DML操作的时间戳(scn)和对应操作的表的baseline的导出时间戳(scn)进行对比,如果该增量操作先于该对象的导出时间戳(scn),则将该增量DML操作丢弃。这种情况是可能出现的,因为日志分析是先于基线(baseline)导出开始进行。
增量DML装载模块204,用于获取解析到的DML操作,根据其操作类型、操作对象及数据结合数据字典将其装载到备份数据库中。在本发明具体实施例中,于基线(baseline)数据装载完成之后,增量DML装载模块204则从缓存文件中读出增量DML的事务操作,根据其操作类型、操作对象及数据结合数据字典还原出sql语句,以insert、delete、update的形式,将其装载到备份数据库库中,在本发明具体实施例中,增量DML装载模块使用sql语句进行装载保证了装载的数据立即可用。
循环执行控制模块205,用于往复循环执行所述日志分析模块的日志分析进程及所述增量DML装载模块的DML增量同步,即可实现oracle数据库DML操作的连续复制,继而对Oracle数据库实现了CDP保护。
以下将通过具体实施例来进一步说明本发明:
1、从数据库中查询需要同步的表的结构及其他元数据,即数据字典,导出数据字典。
在本发明具体实施例中,数据库的元数据存储在数据库的系统表中,包括SYS.OBJ$、SYS.TAB$、SYS.COL$等,以select的形式从系统表中查询出所需元数据。如图4所示。
2、启动Redolog解析:
日志解析程序监听redolog日志文件的变化,首先从数据库中查询出当前(current)日志的路径,打开并读取到最新的写入位置。
当redolog中写入新的数据时,从中读取新加的内容,并从二进制数据中分析出具体的DML操作,其中包含了操作类型,操作对象(表)的id,及操作产生的行数据。如图5所示。
在顺序读取日志文件内容的时候,如果解析得到了旧的日志块,则等待一定时间(可以是几十到几百毫秒)重新读,没有新文件块则继续等待,直到出现新块就继续往下读。
3、基线(baseline)数据的导出及装载:
使用先前导出的数据字典拼接出正确的sql语句,以select语句的形式从数据库中查询出所需表数据,即基线(baseline)。
将数据字典和基线(baseline)数据发送到备份数据库上后,装载程序通过数据字典拼接出正确的装载sql,将baseline数据以insert的形式装载到备份数据库中。
4、将解析到的增量DML进行装载:
当基线(baseline)装载完成之后,将解析得到的DML操作发送到装载端,装载程序将获取的操作结合数据字典还原为sql,以insert、delete、update的形式装载到备份数据库中。
5、往复循环执行redolog解析及DML增量同步,即可实现oracle数据库DML操作的连续复制,继而对Oracle数据库实现了CDP保护。
6、在日志分析过程中,可能会出现系统事务量大,日志写入速度快,导致解析进程无法于在线日志(online log)被覆盖之前读取其中的内容,此时就需要从归档日志(archived_log)中继续读取,如果没有归档日志,则同步失败。此时CDP无法继续,只能重新导出数据字典和baseline数据并从新的位置解析当前日志。
综上所述,本发明一种基于数据库DML同步的持续数据保护方法及装置自动导出数据字典和基线baseline,通过分析重写日志文件redolog获取源端数据库的增量数据DML,将增量数据DML装载到备份数据库中,在数据库正常运行的情况下进行基线baseline和增量数据DML的衔接,实现了一种方便易用且高效的对于Oracle数据库的连续性数据保护技术。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。

Claims (7)

1.一种基于数据库DML同步的持续数据保护方法,包括如下步骤:
步骤S1,导出源端数据库的数据字典,记录每个表的对象号、表的基本属性,包括但不限于表的列信息、索引信息、约束信息、触发器信息,并记录下数据字典的导出时间戳;
步骤S2,启动日志分析进程,监听源端数据库的重做日志文件的变化,于监听到重做日志文件中写入新的数据时,读取并解析出具体的增量DML操作,并进行缓存;步骤S2进一步包括:
步骤S200,从源数据库中查询出当前日志的路径,读取到最新的写入位置;
步骤S201,读取日志文件内容,若解析到新写入的数据时,从中读取新加的内容,并从二进制数据中分析出具体的增量DML操作,其中包含但不限于操作类型,操作对象的id,时间戳及操作产生的数据;
步骤S202,判断解析得到的操作对象是否在所述数据字典中,若该操作对象不在所述数据字典中,则丢弃该操作对象对应的增量DML操作,否则将解析得到的DML操作写入缓存文件中进行保存,记录下该增量DML操作的信息;
步骤S3,在所述日志分析进程启动后,利用步骤S1导出的数据字典将源端数据库的基线导出,并通过数据字典将基线数据装载到备份数据库;
步骤S4,获取步骤S2得到的增量DML操作,根据其操作类型、操作对象及数据结合数据字典将其装载到备份数据库中;
步骤S5,往复循环执行步骤S2的日志分析进程及步骤S4的增量DML同步。
2.如权利要求1所述的一种基于数据库DML同步的持续数据保护方法,其特征在于:于步骤S200中,若日志分析进程无法于在线日志被覆盖之前读取其中的内容,则从归档日志中继续读取,若没有归档日志,则同步失败,并返回步骤S1重新导出数据字典和基线并从新的位置解析当前日志。
3.如权利要求2所述的一种基于数据库DML同步的持续数据保护方法,其特征在于:于步骤S3中,根据先前导出的数据字典拼接出正确的sql语句,以select语句的形式从源端数据库中查询出所需表数据,在导出的基线中记录每个表的基线的导出时间戳。
4.如权利要求3所述的一种基于数据库DML同步的持续数据保护方法,其特征在于:于步骤S202中,将增量DML操作的时间戳和对应操作的表的基线的导出时间戳进行对比,如果该增量操作先于该对象的导出时间戳,则将该增量DML操作丢弃。
5.如权利要求4所述的一种基于数据库DML同步的持续数据保护方法,其特征在于:于步骤S3中,当导出基线后,通过数据字典拼接出正确的装载sql,将数据字典和基线数据以insert的形式装载到所述备份数据库中。
6.如权利要求1所述的一种基于数据库DML同步的持续数据保护方法,其特征在于:于步骤S4中,从缓存文件中读出增量DML的事务操作,根据其操作类型、操作对象及数据结合数据字典还原出sql语句,并装载到所述备份数据库库中。
7.一种基于数据库DML同步的持续数据保护装置,包括:
数据字典导出模块,用于导出源端数据库的数据字典;
日志分析模块,用于启动日志分析进程,监听源端数据库的重做日志文件的变化,于监听到所述重做日志文件中写入新的数据时,读取新写入的内容,从读取的二进制数据中解析出具体的增量DML操作,并进行缓存;所述日志分析模块进一步包括:
日志读取单元,用于从源端数据库中查询出当前日志的路径,读取到最新的写入位置;
解析单元,用于读取日志文件内容,若解析到新写入的数据时,从中读取新加的内容,并从二进制数据中分析出具体的增量DML操作,其中包含但不限于操作类型,操作对象的id,时间戳及操作产生的数据;
判断处理单元,用于判断解析得到的操作对象是否在所述数据字典中,若该操作对象不在所述数据字典中,则丢弃该操作对象对应的增量DML操作,否则将解析得到的DML操作写入缓存文件中进行保存,记录下该增量DML操作的信息;
基线导出装载模块,用于在所述日志分析进程启动后,利用所述数据字典导出模块导出的数据字典将所述源端数据库的基线导出,并通过所述数据字典将基线数据装载到备份数据库中;
增量DML装载模块,用于获取解析到的增量DML操作,根据其操作类型、操作对象及数据结合数据字典将其装载到所述备份数据库中;
循环执行控制模块,用于往复循环执行所述日志分析模块的日志分析进程及所述增量DML装载模块的DML增量同步。
CN201910933462.1A 2019-09-29 2019-09-29 一种基于数据库dml同步的持续数据保护方法及装置 Active CN110727548B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910933462.1A CN110727548B (zh) 2019-09-29 2019-09-29 一种基于数据库dml同步的持续数据保护方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910933462.1A CN110727548B (zh) 2019-09-29 2019-09-29 一种基于数据库dml同步的持续数据保护方法及装置

Publications (2)

Publication Number Publication Date
CN110727548A CN110727548A (zh) 2020-01-24
CN110727548B true CN110727548B (zh) 2022-03-04

Family

ID=69219636

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910933462.1A Active CN110727548B (zh) 2019-09-29 2019-09-29 一种基于数据库dml同步的持续数据保护方法及装置

Country Status (1)

Country Link
CN (1) CN110727548B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111427898A (zh) * 2020-03-16 2020-07-17 上海爱数信息技术股份有限公司 一种基于解析Oracle日志的持续数据保护系统及方法
CN111488243B (zh) * 2020-03-19 2023-07-07 北京金山云网络技术有限公司 MongoDB数据库的备份、恢复方法、装置、电子设备及存储介质
CN112181992A (zh) * 2020-10-27 2021-01-05 浪潮云信息技术股份公司 一种oracle数据库增量数据采集实现方法
CN112269823A (zh) * 2020-10-30 2021-01-26 浪潮云信息技术股份公司 一种实现PostgreSQL增量数据同步的方法及系统
CN112632183B (zh) * 2020-12-11 2023-07-11 广东电力通信科技有限公司 一种基于电网网络分区数据表准实时同步方法及系统
CN112650625A (zh) * 2020-12-28 2021-04-13 武汉达梦数据技术有限公司 一种针对数据库的流式备份还原方法、存储介质及装置
CN112612852A (zh) * 2020-12-29 2021-04-06 中国农业银行股份有限公司 数据同步方法及装置、电子设备、存储介质
CN113704213A (zh) * 2021-08-20 2021-11-26 辽宁振兴银行股份有限公司 一种基于sqlldr2和ogg数据同步的实现方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107665153A (zh) * 2016-07-27 2018-02-06 中兴通讯股份有限公司 一种大数据系统中数据备份方法、恢复方法和装置
CN110262946A (zh) * 2019-06-14 2019-09-20 上海英方软件股份有限公司 一种数据库同步规则信息的拓扑显示方法及装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7890466B2 (en) * 2003-04-16 2011-02-15 Oracle International Corporation Techniques for increasing the usefulness of transaction logs
US7287034B2 (en) * 2003-05-08 2007-10-23 Oracle International Corporation On-demand multi-version data dictionary to support distributed applications
US10146631B1 (en) * 2015-09-30 2018-12-04 EMC IP Holding Company LLC Incremental forever backups for exchange
CN105389230B (zh) * 2015-10-21 2018-06-22 上海爱数信息技术股份有限公司 一种结合快照技术的持续数据保护系统及方法
US10180885B2 (en) * 2015-11-10 2019-01-15 Netapp, Inc. Prioritized data recovery from an object storage service and concurrent data backup
CN105868078B (zh) * 2016-04-14 2019-03-08 国家电网公司 基于动态视图监控的Oracle RAC数据库SQL流捕获方法及系统
CN107506260B (zh) * 2017-07-27 2019-11-05 南京南瑞集团公司 一种动态分块数据库增量备份方法
CN109241175B (zh) * 2018-06-28 2021-06-04 东软集团股份有限公司 数据同步方法、装置、存储介质及电子设备
CN109189852B (zh) * 2018-08-01 2021-05-28 武汉达梦数据库有限公司 一种数据同步的方法及用于数据同步的装置
CN109298978B (zh) * 2018-11-14 2021-07-20 武汉烽火信息集成技术有限公司 一种指定位置的数据库集群的恢复方法及系统
CN109656934B (zh) * 2018-11-19 2020-10-27 武汉达梦数据库有限公司 基于日志解析的源端Oracle数据库DDL同步方法及设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107665153A (zh) * 2016-07-27 2018-02-06 中兴通讯股份有限公司 一种大数据系统中数据备份方法、恢复方法和装置
CN110262946A (zh) * 2019-06-14 2019-09-20 上海英方软件股份有限公司 一种数据库同步规则信息的拓扑显示方法及装置

Also Published As

Publication number Publication date
CN110727548A (zh) 2020-01-24

Similar Documents

Publication Publication Date Title
CN110727548B (zh) 一种基于数据库dml同步的持续数据保护方法及装置
USRE48243E1 (en) Log based data replication from a source database to a target database
US10671642B2 (en) Copying data changes to a target database
WO2021184679A1 (zh) 持续数据保护系统及方法
US7577806B2 (en) Systems and methods for time dependent data storage and recovery
US7577807B2 (en) Methods and devices for restoring a portion of a data store
US7991749B2 (en) Database recovery method applying update journal and database log
US7739547B2 (en) Failure recovery and error correction techniques for data loading in information warehouses
US10120767B2 (en) System, method, and computer program product for creating a virtual database
CN108664359B (zh) 一种数据库恢复方法、装置、设备及存储介质
US7996363B2 (en) Real-time apply mechanism in standby database environments
US7552147B2 (en) System and method for minimizing data outage time and data loss while handling errors detected during recovery
US20080162590A1 (en) Method and apparatus for data rollback
EP2746971A2 (en) Replication mechanisms for database environments
EP2575046A2 (en) Recovering from storage transaction failures using checkpoints
CA2652115C (en) Apparatus and method for read consistency in a log mining system
US20070174325A1 (en) Method and system for building a database from backup data images
US8560500B2 (en) Method and system for removing rows from directory tables
CN111078667B (zh) 一种数据迁移的方法以及相关装置
EP3822794B1 (en) Data backup method and apparatus, server and computer readable storage medium
CN104657382A (zh) 用于MySQL主从服务器数据一致性检测的方法和装置
US9760625B2 (en) Method and system for indexing in datastores
CN105573859A (zh) 一种数据库的数据恢复方法和设备
CN114490677A (zh) 数据分析系统中的数据同步
CN115729749A (zh) 一种数据备份方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant