CN113190536B - 一种对双活数据库管理复制系统的快速修复方法及装置 - Google Patents

一种对双活数据库管理复制系统的快速修复方法及装置 Download PDF

Info

Publication number
CN113190536B
CN113190536B CN202110228126.4A CN202110228126A CN113190536B CN 113190536 B CN113190536 B CN 113190536B CN 202110228126 A CN202110228126 A CN 202110228126A CN 113190536 B CN113190536 B CN 113190536B
Authority
CN
China
Prior art keywords
data
source
backup
database
time point
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
CN202110228126.4A
Other languages
English (en)
Other versions
CN113190536A (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 CN202110228126.4A priority Critical patent/CN113190536B/zh
Publication of CN113190536A publication Critical patent/CN113190536A/zh
Application granted granted Critical
Publication of CN113190536B publication Critical patent/CN113190536B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • 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/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • 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/273Asynchronous replication or reconciliation

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种对双活数据库管理复制系统的快速修复方法及装置,该方法包括:步骤S1,确定要抽取源端与备端数据库数据的时间点;步骤S2,根据确定的时间点分别抽取源备端数据及其关键信息,将其及数据来源信息插入到比较池中,并在插入过程中删除源备端数据相同的记录;步骤S3,再次确认一个源端的无事务时间点T3,将该T3时间点发送给备端数据库的装载线程,并根据步骤S2的比对结果从源端抽取数据发送给备端;步骤S4,当接收源端传来的无事务时间T3时,备端在将要进行T3时间后的增量装载操作时暂停线程装载动作,并根据步骤S2的比对结果按照关键信息删除掉数组中备端剩余的记录,接收并插入源端发送的数据。

Description

一种对双活数据库管理复制系统的快速修复方法及装置
技术领域
本发明涉及计算机备份容灾技术领域,特别是涉及一种对双活数据库管理复制系统的快速修复方法及装置。
背景技术
双活数据库管理系统复制技术是一种基于关系型数据库的重做日志的逻辑复制技术。关系型数据库的重做日志是用于保障数据库数据一致性的一种机制,一般记录了关系型数据库所有数据文件的变化,从这些变化中可以解析出数据库管理系统中表的数据变化,然后将这些变化及时地复制到另一套数据库管理系统中,从而达到数据复制的目的.
在该复制技术中,所复制的数据库系统一般称为源端数据库,所复制的目标端数据一般称为备端数据库系统。由于该复制技术所复制的目标端是一个和源端完全不相关的数据库管理系统,因此可以很好的应用于数据库管理系统的读写分离、双活容灾、数据流动整合的应用场景。
然而,由于这种数据库管理系统复制系统的备端数据库也是一个可读写的数据库系统,因此有可能有各种原因(备端应用修改,复制软件解析装载错误等),本应该与源端数据库数据内容一致的数据,产生了差异。由于备端应用可能已经实际承担业务系统的一个环节,因此,如何在不影响备端业务系统和复制软件系统的前提下,快速将数据修复则是目前双活数据库管理系统复制技术的一大挑战。
发明内容
为克服上述现有技术存在的不足,本发明之目的在于提供一种对双活数据库管理复制系统的快速修复方法及系统,以在不影响现有数据复制系统以及备端应用系统的前提下,高速、高效地实现对双活数据库管理复制系统的快速修复。
为达上述目的,本发明提出一种对双活数据库管理复制系统的快速修复方法,包括如下步骤:
步骤S1,确定要抽取源端与备端数据库数据的时间点;
步骤S2,根据确定的时间点分别抽取源备端数据及其关键信息,将其及数据来源信息插入到预先建立的比较池中,并在插入过程中删除源备端数据相同的记录,最终得到的剩余记录即为差异记录比较结果;
步骤S3,再次确认一个源端的无事务时间点T3,将该T3时间点发送给备端数据库的装载线程,并根据步骤S2的比对结果的关键信息从源端抽取数据发送给备端;
步骤S4,当接收源端传来的无事务时间T3时,备端在将要进行T3时间后的增量装载操作时暂停线程装载动作,并根据步骤S2的比对结果按照关键信息删除掉数组中备端剩余的记录,接收并插入源端发送的数据。
优选地,步骤S1进一步包括:
步骤S100,确定源端无事务时间T1作为要抽取源端数据库数据的时间点;
步骤S101,在数据库复制系统向备端装载大于源端T1时间点的增量数据前,暂停备端装载线程,获取备端无事务时间T2,作为要抽取的备端数据库数据的时间点。
优选地,于步骤S100,通过锁表或者监控事务运行状态方法确定源端的无事务时间T1。
优选地,于步骤S2中,在插入过程中,将要插入的数据与该比较池中不同数据源的记录进行比对,若发现该比较池中有相同内容且来自不同数据源的记录,则进行抵消操作,即插入的记录和原有的记录都删除掉。
优选地,于步骤S2中,首先在备端建立比较池,该比较池为一个成员为链表结构的数组结构,抽取T1时间点的源端数据及其关键信息,将该源端数据的MD5值、主键信息以及数据来自于源端数据库的信息插入到所述比较池中,并在插入时将其与所述比较池中来源于备端数据库的记录中数据的MD5值进行比较,若相同,则进行抵消操作;抽取T2时间点的备端数据及其关键信息,将该备端数据的MD5值、主键信息以及数据来自于备端数据库的信息插入到所述比较池中,插入时则将其与所述比较池中来源于源端数据库的记录中数据的MD5值进行比较,若相同,则进行抵消操作。
优选地,于步骤S2中,当比对结束,将所述比较池的剩余记录按源端记录和备端记录归类
优选地,于步骤S2中,抽取源端和备端数据向所述比较池插入的过程为并发插入。
优选地,于步骤S4后,本发明还包括如下步骤:
步骤S5,确认一个源端的无事务时间点T5,将该时间点T5发送给备端,当备端在装载到T5时间之后的操作时,暂停装载进程,获取备端无事务时间点T6,于源端根据所述比较池中源端记录的关键信息再次抽取T5时间点这些记录的源端数据,于备端根据该些记录的关键信息抽取T6时间点该些记录的备端数据,并根据步骤S2将从源端与备端抽取的数据插入一个新的成员为链表结构的链表数组中,根据该新的链表数组的内容确定数据修复是否成功。
为达到上述目的,本发明还提供一种对双活数据库管理复制系统的快速修复装置,包括:
快照点时间获取模块,用于确定要抽取源端与备端数据库数据的时间点;
数据抽取比对模块,用于根据确定的时间点分别抽取源备端数据及其关键信息,将其及数据来源信息插入到预先建立的比较池中,并在插入过程中删除源备端数据相同的记录;
数据修复抽取模块,用于再次确认一个源端的无事务时间点T3,将该T3时间点发送给备端数据库的装载线程,并根据所述数据抽取比对模块的比对结果的关键信息从源端抽取数据发送给备端;
修复装载模块,用于当接收源端传来的无事务时间T3时,在备端将要进行T3时间以后的增量装载操作时暂停线程装载动作,并根据数据抽取比对模块31的比对结果按照关键信息删除掉链表数组中备端剩余的记录,接收并于备端插入源端发送的数据。
优选地,所述装置还包括:
修复结果校验模块,用于确认一个源端的无事务时间点T5,将该时间点T5发送给备端,当备端在装载到T5时间之后的操作时,暂停装载进程,获取备端无事务时间点T6,于源端根据所述比较池中源端记录的关键信息再次抽取T5时间点这些记录的源端数据,于备端根据该些记录的关键信息抽取T6时间点该些记录的备端数据,并根据所述数据抽取比对模块将从源端与备端抽取的数据插入一个新的成员为链表结构的链表数组中,根据该新的链表数组的内容确定数据修复是否成功。
与现有技术相比,本发明一种对双活数据库管理复制系统的快速修复方法及装置,通过先确定要抽取源端与备端数据库数据的时间点,根据确定的时间点分别抽取源备端数据及其关键信息,将其及数据来源信息插入到预先建立的比较池中,并在插入过程中删除源备端数据相同的记录;然后再次确认一个源端的无事务时间点T3,将该T3时间点发送给备端数据库的装载线程,并根据步骤S2的比对结果的关键信息从源端抽取数据发送给备端,当备端接收源端传来的无事务时间T3时,在将要进行T3时间后的增量装载操作时暂停线程装载动作,并根据比较池的比对结果按照关键信息删除掉数组中备端剩余的记录,接收并插入源端发送的数据,本发明可以在不影响现有数据复制系统以及备端应用系统的前提下,高速、高效地实现对双活数据库管理复制系统的快速修复。
附图说明
图1为本发明一种对双活数据库管理复制系统的快速修复方法的步骤流程图;
图2为本发明具体实施例中比较池的结构示意图;
图3为本发明一种对双活数据库管理复制系统的快速修复装置的系统结构图;
图4为本发明实施例中快速修复过程示意图;
图5为本发明实施例中数据抽取对比模块的抽取对比过程示意图;
图6为本发明实施例中对比对结果归类的示意图。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
图1为本发明一种对双活数据库管理复制系统的快速修复方法的步骤流程图。如图1所示,本发明一种对双活数据库管理复制系统的快速修复方法,包括如下步骤:
步骤S1,确定要抽取源端与备端数据库数据的时间点。
在执行本发明之前,首先确认两个数据库的主备关系,即哪一个为源端数据,哪一个为备端数据库,本发明的目的是则是根据这个确认的原则,将备端数据库中的数据修复成与源端一致。本发明由于考虑是运行在数据库复制系统之上,因此需要和数据库复制系统的复制方向一致,即被采集重做日志的数据库为源端数据库,装载数据变化的数据库为备端数据库。
在本发明中,由于源备端数据库的数据都在动态变化,源端由生产业务产生数据,备端由复制软件装载产生数据,源备端每个时间点的数据都有可能不同,因此需要确定要抽取源端与备端数据库数据的时间点。
具体地,步骤S1进一步包括:
步骤S100,确定源端无事务时间T1作为要抽取源端数据库数据的时间点。
在本发明具体实施例中,通过锁表或者监控事务运行状态等方法确定源端的无事务时间T1,并将该时间作为要抽取源端数据库数据的时间点。
步骤S101,在数据库复制系统向备端装载源端大于T1时间点的增量数据前,暂停备端装载线程,获取备端无事务时间T2,作为要抽取的备端数据库数据的时间点。
也就是说,本发明是运行在数据库复制系统之上的,在本发明具体实施例中,该数据库复制系统采用的基于重做日志的复制系统,复制系统实时运行,在该复制系统要向备端装载大于T1时间点的增量数据前,暂停备端装载线程,获取备端无事务时间T2。原备数据如果一致的话,这个源端T1时间点的数据,应该与备端T2时间的完全一致。由于复制系统的增量原理是基于重做日志,因此备端是按照源端的执行顺序,也就是增删改的顺序到备端执行操作的,当确定源端T1时间为无事务时间,因此T1本身并没有操作,但是操作肯定是有两种的,一种是比T1时间小,一种是比T1时间大,比T1时间小的就是T1时间之前发生的操作,比T1时间大的就是T1时间之后发生的操作,因为重做日志复制系统是异步复制,因此理论上当源端T1时间锁表后,通信给备端,备端应该是还没有装载到大于T1时间的操作,当数据库复制系统判断小于T1时间的操作可以装载,当出现大于T1时间的操作时就说明要装载T1时间之后的操作了,此时则不装载这个操作,那么备端此时就也无事务了,即得到备端无事务时间T2,此时理论上应该备端表中的数据等于源端T1时刻的数据。当然也有可能出现交互通信的延迟大于了复制软件复制流程的延迟,此时则需要重新源端锁表,重新再找源端的无事务时间。
步骤S2,分别抽取源备端数据及其关键信息,将其及数据来源信息插入到预先建立的成员为链表结构的数组结构中,在插入过程中与该数组结构中不同数据源的记录进行比对,若发现该数组结构中有相同内容且来自不同数据源的记录,则进行抵消操作。
具体地说,首先在备端建立一个成员为链表结构的数组结构,抽取T1时间点的源端数据及其关键信息,在本发明具体实施例中,对抽取的源端数据会将其计算为MD5值,所述关键信息为其主键或其他唯一标识,如oracle中的虚拟列rowid,将该源端数据的MD5值、主键信息以及数据来自于源端数据库的信息插入到所述数组结构中,插入时将其与该数组结构中来源于备端数据库的记录中数据的MD5值进行比较,若相同,则进行抵消操作,即插入的记录和该数组中原有的来自备端数据库的记录都删除掉,优选地,为避免出现MD5相同但是主键不同的情况,当与该数组结构中来源于备端数据库的记录中数据的MD5值相同时,再次检查其关键信息是否相同,如主键相同,或者oracle中虚拟列rowid为映射关系,则进行抵消操作,否则不予抵消;抽取T2时间点的备端数据及其关键信息,同样地,对抽取的备端数据也会将其计算为MD5值,所述关键信息为其主键或其他唯一标识,将该备端数据的MD5值、主键信息以及数据来自于备端数据库的信息插入到所述数组结构中,插入时则将其与该数组结构中来源于源端数据库的记录中数据的MD5值进行比较,若相同,则进行抵消操作,即插入的记录和该数组中原有的来自源端数据库的记录都删除掉。
具体地,步骤S2进一步包括如下步骤:
步骤S200,在备端构建一个比较池,比较池为一个成员为链表结构的数组结构。
在本发明具体实施例中,所述比较池由list指针数组组成,数组的元素的数量定义为一个常量N,如图2所示。
步骤S201,获取源端数据库与备端数据库的表的表结构的数据字典信息,根据字典信息,组织字段和关键信息的(可选物理主键信息如oracle数据库中的rowid信息或逻辑主键信息)相关语句,将当前抽取的表中数据计算组织成:来源位置(源端或备端)+关键信息+数据的MD5码;
步骤S202,如果当前抽取的数据来源是源端,则在插入比较池的数组前,将当前数据的MD5码hash成一个int值并与(N/2)-1求余得到M,遍历数组成员(M*2)+1所指向的list,如果有MD5码相同的记录,删除掉list中记录,并将此记录丢弃,如果没有找到相同MD5码的记录,则将此记录插入M*2位置的list中;
步骤S203,如果当前抽取的数据来源为备端,则在插入比较池的数组前,将当前数据的MD5码hash成一个int值并与(N/2)-1求余得到M,遍历数组成员M*2所指向的list,如果有MD5码相同的记录,删除掉list中记录,并将此记录丢弃,如果没有找到相同MD5码的记录,则将此记录插入(M*2)+1位置的list中,优选地,若list中有MD5码相同的记录,则再次校验两者的关键信息是否相同,例如主键是否相同,或者oracle中虚拟列rowid是否为映射关系,如果相同,则删除掉list中记录,并将此记录丢弃,否则则将此记录插入(M*2)+1位置的list中。
步骤S204,将所述比较池的剩余记录按源端记录和备端记录归类。
在本发明具体实施例中,经上述比较插入比较操作后,比较池的数组结构中偶数位置剩余的记录属于来自源端的记录,奇数位置剩余的记录则属于来自备端的记录。
在本发明中,抽取源端和备端数据向比较池插入的过程是并发插入的过程,因此需要锁。如果线程数为X,锁的方法是将list指针数组分为X*2个范围,当向比较池插入时,先申请是对应的锁,再执行对该list指针数组的修改工作,然后释放锁;不同的线程产生的M值在一个时间点通常是不同的,因此可以得到并发度约等于X的并发性能。
步骤S3,再次确认一个源端的无事务时间点T3,将该T3时间点发送给备端数据库的装载线程,并根据步骤S2的比对结果的关键信息从源端抽取数据发送给备端。
根据步骤S2,已对比较池的剩余记录按源备端来源归类,因此,于步骤S3中,则根据比较池中源端记录的关键信息,从源端数据库中抽取数据,传输给备端,而在从源端数据库抽取数据前,需要再次通过锁表或监控事务运行状态的方法获取一个源端表的无事务时间点T3,将该T3时间点发送给备端数据库的装载线程,然后开始根据比较池中源端记录的关键信息从源端抽取数据。
步骤S4,当接收源端传来的无事务时间T3时,备端在将要进行T3时间以后的增量装载操作时暂停线程装载动作,并根据步骤S2的比对结果按照关键信息删除掉数组中备端剩余的记录,接收并插入源端发送的数据。
因为在比对的过程,数据库复制系统并未停止复制,备端的数据依然在不停的变化,因此修复的过程必须要暂停装载线程,待暂停装载结束后再继续复制源端传过来的操作。
具体地,当备端接收到源端传来的无事务时间T3时,在将要进行T3时间以后的增量装载操作时,暂停线程装载动作,然后根据比较池中备端记录的关键信息删除掉之前比对池数组中备端剩余的记录,然后接收源端发送的数据并插入从源端发送的数据,当插入结束后,继续源备端表的同步线程。
优选地,于步骤S4后,本发明还包括如下步骤:
步骤S5,对修复结果进行快速校验。具体地,确认一个源端的无事务时间点T5,并将T5时间发送给备端,备端在装载到T5时间之后的操作时,暂停装载进程,获取备端无事务时间点T6,于源端根据比对池中源端记录的关键信息再次抽取T5时间点这些记录的源端数据,于备端根据T6时间点根据该些记录的关键信息抽取该些记录的备端数据,并根据步骤S2的方法将从源端与备端抽取的数据插入一个新的成员为链表结构的链表数组中,根据链表数组的内容确定数据修复是否成功。
在本发明具体实施例中,通过锁表或者监控事务运行状态等方法确定一个源端表的无事务时间点T5,并将T5时间发送给备端同步进程,,装载进程在装载到T5时间之后的操作时,暂停装载进程,获取备端无事务时间T6;然后源端按比对结果,即比较池中源端记录的关键信息再次抽取T5时间点源端数据库的这些记录,备端按照T6时间根据这些记录的关键信息抽取备端数据库中这些对应关键值的记录,将源备端这些记录的关键值和数据的MD5插入一个新的链表数组中,同样是进行MD5值比对,发现相同且不同数据源的数据则进行抵消操作,最后比对完毕,如果该链表数组的内容为空,则表示数据修复成功。
图3为本发明一种对双活数据库管理复制系统的快速修复装置的系统架构图。如图3所示,本发明一种对双活数据库管理复制系统的快速修复装置,包括:
快照点时间获取模块30,用于确定要抽取源端与备端数据库数据的时间点。
在执行本发明之前,首先确认两个数据库的主备关系,即哪一个为源端数据,哪一个为备端数据库,本发明的目的是则是根据这个确认的原则,将备端数据库中的数据修复成与源端一致。本发明由于考虑是运行在数据库复制系统之上,因此需要和数据库复制系统的复制方向一致,即被采集重做日志的数据库为源端数据库,装载数据变化的数据库为备端数据库。
在本发明中,由于源备端数据库的数据都在动态变化,源端由生产业务产生数据,备端由复制软件装载产生数据,源备端每个时间点的数据都有可能不同,因此需要确定要抽取源端与备端数据库数据的时间点。
具体地,快照点时间获取模块30进一步包括:
源端快照时间点获取单元301,用于确定抽取源端数据库数据的时间点。
在本发明具体实施例中,源端快照时间点获取单元301通过锁表或者监控事务运行状态等方法确定源端的无事务时间T1,并将该时间作为要抽取源端数据库数据的时间点。
备端快照时间点获取单元302,在数据库复制系统向备端装载大于源端T1时间点的增量数据前,暂停备端装载线程,获取备端无事务时间T2,作为要抽取的备端数据库数据的时间点。
本发明是运行在数据库复制系统之上的,在本发明具体实施例中,该数据库复制系统采用的基于重做日志的复制系统,复制系统实时运行,在该复制系统要向备端装载大于T1时间点的增量数据前,备端快照时间点获取单元302暂停备端装载线程,并获取备端无事务时间T2。此时如果原备端数据如果一致的话,这个源端T1时间点的数据,应该与备端T2时间的完全一致。
数据抽取比对模块31,用于分别抽取源备端数据及其关键信息,将其及数据来源信息插入到预先建立的成员为链表结构的数组结构中,在插入过程中与该数组结构中不同数据源的记录进行比对,若发现该数组结构中有相同内容且来自不同数据源的记录,则进行抵消操作。
具体地说,首先在备端建立一个成员为链表结构的数组结构,抽取T1时间点的源端数据及其关键信息,在本发明具体实施例中,对抽取的源端数据会将其计算为MD5值,所述关键信息为其主键或其他唯一标识,如oracle中的虚拟列rowid,将该源端数据的MD5值、主键信息以及数据来自于源端数据库的信息插入到所述数组结构中,插入时将其与该数组结构中来源于备端数据库的记录中数据的MD5值进行比较,若相同,则进行抵消操作,即插入的记录和该数组中原有的来自备端数据库的记录都删除掉;抽取T2时间点的备端数据及其关键信息,同样地,对抽取的备端数据也会将其计算为MD5值,所述关键信息为其主键或其他唯一标识,将该备端数据的MD5值、主键信息以及数据来自于备端数据库的信息插入到所述数组结构中,插入时则将其与该数组结构中来源于源端数据库的记录中数据的MD5值进行比较,若相同,则进行抵消操作,即插入的记录和该数组中原有的来自源端数据库的记录都删除掉。
具体地,数据抽取比对模块31进一步包括:
比较池构建单元,用于在备端构建一个比较池,比较池为一个成员为链表结构的数组结构。
在本发明具体实施例中,所述比较池由list指针数组组成,数组的元素的数量定义为一个常量N。
抽取语句规则配置单元,用于获取源端数据库与备端数据库的表的表结构的数据字典信息,根据字典信息,组织字段和关键信息的(可选物理主键信息如oracle数据库中的rowid信息或逻辑主键信息)相关语句,将当前抽取的表中数据配置组织成:来源位置(源端或备端)+关键信息+数据的MD5码;
抽取比对单元,分别抽取源备端数据及其关键信息,如果当前抽取的数据来源为源端,则在插入比较池的数组前,将当前数据的MD5码hash成一个int值并与(N/2)-1求余得到M,遍历数组成员(M*2)+1所指向的list,如果有MD5码相同的记录,删除掉list中记录,并将此记录丢弃,如果没有找到相同MD5码的记录,则将此记录插入M*2位置的list中;如果当前抽取的数据来源为备端,则在插入比较池的数组前,将当前数据的MD5码hash成一个int值并与(N/2)-1求余得到M,遍历数组成员M*2所指向的list,如果有MD5码相同的记录,删除掉list中记录,并将此记录丢弃,如果没有找到相同MD5码的记录,则将此记录插入(M*2)+1位置的list中。
比对结果分析单元,用于将所述比较池的剩余记录按源端记录和备端记录归类。
在本发明具体实施例中,经上述比较插入比较操作后,比较池的数组结构中偶数位置剩余的记录属于来自源端的记录,奇数位置剩余的记录则属于来自备端的记录。
在本发明中,抽取源端和备端数据向比较池插入的过程是并发插入的过程,因此需要锁。如果线程数为X,锁的方法是将list指针数组分为X*2个范围,当向比较池插入时,先申请是对应的锁,再执行对该list指针数组的修改工作,然后释放锁;不同的线程产生的M值在一个时间点通常是不同的,因此可以得到并发度约等于X的并发性能。
数据修复抽取模块32,用于再次确认一个源端的无事务时间点T3,将该T3时间点发送给备端数据库的装载线程,并根据数据抽取比对模块31的比对结果的关键信息从源端抽取数据发送给备端。
根据数据抽取比对模块31,已对比较池的剩余记录按源备端来源归类,因此,数据修复抽取模块32则根据比较池中源端记录的关键信息,从源端数据库中抽取数据,传输给备端,而在从源端数据库抽取数据前,需要再次通过锁表或监控事务运行状态的方法获取一个源端表的无事务时间点T3,将该T3时间点发送给备端数据库的装载线程,然后开始根据比较池中源端记录的关键信息从源端抽取数据。
修复装载模块33,用于当接收源端传来的无事务时间T3时,在备端将要进行T3时间以后的增量装载操作时暂停线程装载动作,并根据数据抽取比对模块31的比对结果按照关键信息删除掉链表数组中备端剩余的记录,接收并于备端插入源端发送的数据。
因为在比对的过程,数据库复制系统并未停止复制,备端的数据依然在不停的变化,因此修复的过程必须要暂停装载线程,待暂停装载结束后再继续复制源端传过来的操作。
具体地,当备端接收到源端传来的无事务时间T3时,在将要进行T3时间以后的增量装载操作时,暂停线程装载动作,然后根据比较池中备端记录的关键信息删除掉之前比对池数组中备端剩余的记录,然后接收源端发送的数据并插入从源端发送的数据,当插入结束后,继续源备端表的同步线程。
优选地,本发明还包括:
修复结果校验模块34,用于对修复结果进行快速校验。具体地,修复结果校验模块34首先确定一个源端的无事务时间点T5,并将T5时间发送给备端,备端在装载到T5时间之后的操作时,暂停装载进程,获取备端无事务时间点T6,然后于源端根据比对池中源端记录的关键信息再次抽取T5时间点这些记录的源端数据,于备端根据T6时间点根据该些记录的关键信息抽取该些记录的备端数据,并根据数据抽取比对模块31将从源端与备端抽取的数据插入一个新的成员为链表结构的链表数组中,根据链表数组的内容确定数据修复是否成功。
在本发明具体实施例中,通过锁表或者监控事务运行状态等方法确定一个源端表的无事务时间点T5,并将T5时间发送给备端同步进程,,装载进程在装载到T5时间之后的操作时,暂停装载进程,获取备端无事务时间T6;然后源端按比对结果,即比较池中源端记录的关键信息再次抽取T5时间点源端数据库的这些记录,备端按照T6时间根据这些记录的关键信息抽取备端数据库中这些对应关键值的记录,将源备端这些记录的关键值和数据的MD5插入一个新的链表数组中,同样是进行MD5值比对,发现相同且不同数据源的数据则进行抵消操作,最后比对完毕,如果该链表数组的内容为空,则表示数据修复成功。
实施例
在本实施例中,首先确认两个数据库的主备关系,即哪一个为源端数据,哪一个为备端数据库,算法将根据这个确认的原则,将备端数据库中的数据修复成与源端一致。本设计由于考虑是运行在数据库复制系统之上,因此需要和数据库复制系统的复制方向一致,即被采集重做日志的数据库为源端数据库,装载数据变化的数据库为备端数据库。具体地,如图4所示,一种对双活数据库管理复制系统的快速修复过程如下:
步骤一,确认要抽取的源端与备端数据库数据的时间点。
由于源备数据库两边数据都在动态变化(源端由生产业务产生数据,备端由复制软件装载产生数据),因此每个时间点的数据都可能不同,因此首先可通过锁表或者监控事务运行状态等方法确认源端无事务时间T1,再根据数据库复制软件的复制关系,在复制软件要在备端装载大于T1时间的增量数据前,暂停备端装载线程,获取备端的无事务时间T2。此时原备端数据如果一致的话,这个源端T1时间的数据,应该与备端T2时间的完全一致。
步骤二,在备端数据库主机软件进程中建立一个比较池,其为一个成员为链表结构的数组结构,抽取源端与备端的数据(将数据计算为MD5值)以及关键信息(主键或其他唯一标识,如oracle中的虚拟列rowid)以及来自于源库还是备库信息,插入到建立的数组中,如果发现有相同的内容,并且来自不同数据源,就进行抵消操作,即插入的记录和原有的记录都删除掉,如图5所示。
步骤三,将比较池剩余记录按源端记录和备端记录归类,如图6所示。
步骤四,源端数据将进入修复抽取模块,按照比较池中源端记录的关键值,从源端数据库中抽取数据,传输给备端的修复装载模块,此时在获取数据前,需要再次通过锁表或者监控事务运行状态等方法确认一个源端表的无事务时间点T3,并先将T3时间发送给备端数据库的装载线程,再开始按比对结果中源端记录的关键信息从源端数据库抽取数据。
步骤五,当备端的修复装载模块接受到源端传来的无事务时间T3时,在将要进行T3时间以后的增量装载操作时,暂停线程装载动作,按照比较池生于记录的关键信息删除掉之前比较池中备端剩余的记录,然后,于备端开始插入源端抽取出的数据。当插入结束后,继续表的同步线程。
步骤六,修复结果的再次快速校验:再次确认一个源端表的无事务时间点T5(通过锁表或者监控事务运行状态等方法获得),将T5时间发送给备端同步进程,装载进程在装载到T5时间之后的操作时,暂停装载进程,获取备端无事务时间T6,源端按比对池中源端记录的关键值再次抽取T5时间点这些记录,备端按照T6时间抽取这些对应关键值的记录,分别将源备端这些记录的关键值和数据的MD5插入一个新的链表数组中,同样是发现相同且不同数据源的数据进行抵消操作,最后统计如果数组链表的内容为空,数据修复成功。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。

Claims (7)

1.一种对双活数据库管理复制系统的快速修复方法,包括如下步骤:
步骤S1,确定要抽取源端与备端数据库数据的时间点;步骤S1进一步包括:
步骤S100,确定源端无事务时间T1作为要抽取源端数据库数据的时间点;
步骤S101,在数据库复制系统向备端装载大于源端T1时间点的增量数据前,暂停备端装载线程,获取备端无事务时间T2,作为要抽取的备端数据库数据的时间点;
步骤S2,根据确定的时间点分别抽取源备端数据、该数据的关键信息,及数据来源信息插入到预先建立的比较池中,并在插入过程中删除源备端数据相同的记录,最终得到的剩余记录即为差异记录比较结果;
步骤S3,再次确认一个源端的无事务时间点T3,将该T3时间点发送给备端数据库的装载线程,并根据步骤S2的比对结果的关键信息从源端抽取数据发送给备端;
步骤S4,当接收源端传来的无事务时间T3时,备端在将要进行T3时间后的增量装载操作时暂停线程装载动作,并根据步骤S2的比对结果按照关键信息删除掉数组中备端剩余的记录,接收并插入源端发送的数据;
步骤S5,确认一个源端的无事务时间点T5,将该时间点T5发送给备端,当备端在装载到T5时间之后的操作时,暂停装载进程,获取备端无事务时间点T6,于源端根据所述比较池中源端记录的关键信息再次抽取T5时间点这些记录的源端数据,于备端根据该些记录的关键信息抽取T6时间点该些记录的备端数据,并根据步骤S2将从源端与备端抽取的数据插入一个新的成员为链表结构的链表数组中,根据该新的链表数组的内容确定数据修复是否成功。
2.如权利要求1所述的一种对双活数据库管理复制系统的快速修复方法,其特征在于:于步骤S100,通过锁表或者监控事务运行状态方法确定源端的无事务时间T1。
3.如权利要求1所述的一种对双活数据库管理复制系统的快速修复方法,其特征在于:于步骤S2中,在插入过程中,将要插入的数据与该比较池中不同数据源的记录进行比对,若发现该比较池中有相同内容且来自不同数据源的记录,则进行抵消操作,即插入的记录和原有的记录都删除掉。
4.如权利要求3所述的一种对双活数据库管理复制系统的快速修复方法,其特征在于:于步骤S2中,首先在备端建立比较池,该比较池为一个成员为链表结构的数组结构,抽取T1时间点的源端数据及其关键信息,将该源端数据的MD5值、主键信息以及数据来自于源端数据库的信息插入到所述比较池中,并在插入时将其与所述比较池中来源于备端数据库的记录中数据的MD5值进行比较,若相同,则进行抵消操作;抽取T2时间点的备端数据及其关键信息,将该备端数据的MD5值、主键信息以及数据来自于备端数据库的信息插入到所述比较池中,插入时则将其与所述比较池中来源于源端数据库的记录中数据的MD5值进行比较,若相同,则进行抵消操作。
5.如权利要求4所述的一种对双活数据库管理复制系统的快速修复方法,其特征在于:于步骤S2中,当比对结束,将所述比较池的剩余记录按源端记录和备端记录归类。
6.如权利要求5所述的一种对双活数据库管理复制系统的快速修复方法,其特征在于,于步骤S2中,抽取源端和备端数据向所述比较池插入的过程为并发插入。
7.一种对双活数据库管理复制系统的快速修复装置,包括:
快照点时间获取模块,用于确定要抽取源端与备端数据库数据的时间点;确定源端无事务时间T1作为要抽取源端数据库数据的时间点;在数据库复制系统向备端装载大于源端T1时间点的增量数据前,暂停备端装载线程,获取备端无事务时间T2,作为要抽取的备端数据库数据的时间点;
数据抽取比对模块,用于根据确定的时间点分别抽取源备端数据、该数据的关键信息及数据来源信息插入到预先建立的比较池中,并在插入过程中删除源备端数据相同的记录,最终得到的剩余记录即为差异记录比较结果;
数据修复抽取模块,用于再次确认一个源端的无事务时间点T3,将该T3时间点发送给备端数据库的装载线程,并根据所述数据抽取比对模块的比对结果的关键信息从源端抽取数据发送给备端;
修复装载模块,用于当接收源端传来的无事务时间T3时,在备端将要进行T3时间以后的增量装载操作时暂停线程装载动作,并根据数据抽取比对模块31的比对结果按照关键信息删除掉链表数组中备端剩余的记录,接收并于备端插入源端发送的数据;
修复结果校验模块,用于确认一个源端的无事务时间点T5,将该时间点T5发送给备端,当备端在装载到T5时间之后的操作时,暂停装载进程,获取备端无事务时间点T6,于源端根据所述比较池中源端记录的关键信息再次抽取T5时间点这些记录的源端数据,于备端根据该些记录的关键信息抽取T6时间点该些记录的备端数据,并根据所述数据抽取比对模块将从源端与备端抽取的数据插入一个新的成员为链表结构的链表数组中,根据该新的链表数组的内容确定数据修复是否成功。
CN202110228126.4A 2021-03-02 2021-03-02 一种对双活数据库管理复制系统的快速修复方法及装置 Active CN113190536B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110228126.4A CN113190536B (zh) 2021-03-02 2021-03-02 一种对双活数据库管理复制系统的快速修复方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110228126.4A CN113190536B (zh) 2021-03-02 2021-03-02 一种对双活数据库管理复制系统的快速修复方法及装置

Publications (2)

Publication Number Publication Date
CN113190536A CN113190536A (zh) 2021-07-30
CN113190536B true CN113190536B (zh) 2023-01-17

Family

ID=76973064

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110228126.4A Active CN113190536B (zh) 2021-03-02 2021-03-02 一种对双活数据库管理复制系统的快速修复方法及装置

Country Status (1)

Country Link
CN (1) CN113190536B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102801543A (zh) * 2011-05-24 2012-11-28 中国银联股份有限公司 一种双活系统间动态数据同步的方法
CN104021132A (zh) * 2013-12-08 2014-09-03 郑州正信科技发展股份有限公司 主备数据库数据一致性核查备份方法及其系统
CN106254094A (zh) * 2016-07-19 2016-12-21 中国银联股份有限公司 一种数据同步方法及系统
CN106469219A (zh) * 2016-09-09 2017-03-01 武汉长光科技有限公司 一种嵌入式设备配置文件同步比较的方法
CN109446267A (zh) * 2018-09-25 2019-03-08 国家电网有限公司客户服务中心 一种基于95598异地双活灾备模型的跨库数据集成系统及方法
CN110134694A (zh) * 2019-05-20 2019-08-16 上海英方软件股份有限公司 一种双活数据库中表数据的快速比对装置及方法
CN110727550A (zh) * 2019-12-18 2020-01-24 中国银联股份有限公司 数据复制处理方法、装置、容灾系统、设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102801543A (zh) * 2011-05-24 2012-11-28 中国银联股份有限公司 一种双活系统间动态数据同步的方法
CN104021132A (zh) * 2013-12-08 2014-09-03 郑州正信科技发展股份有限公司 主备数据库数据一致性核查备份方法及其系统
CN106254094A (zh) * 2016-07-19 2016-12-21 中国银联股份有限公司 一种数据同步方法及系统
CN106469219A (zh) * 2016-09-09 2017-03-01 武汉长光科技有限公司 一种嵌入式设备配置文件同步比较的方法
CN109446267A (zh) * 2018-09-25 2019-03-08 国家电网有限公司客户服务中心 一种基于95598异地双活灾备模型的跨库数据集成系统及方法
CN110134694A (zh) * 2019-05-20 2019-08-16 上海英方软件股份有限公司 一种双活数据库中表数据的快速比对装置及方法
CN110727550A (zh) * 2019-12-18 2020-01-24 中国银联股份有限公司 数据复制处理方法、装置、容灾系统、设备及存储介质

Also Published As

Publication number Publication date
CN113190536A (zh) 2021-07-30

Similar Documents

Publication Publication Date Title
CN110134694B (zh) 一种双活数据库中表数据的快速比对装置及方法
US8108343B2 (en) De-duplication and completeness in multi-log based replication
US7117229B2 (en) Method and system for online reorganization of databases
US11921748B1 (en) Method and apparatus for using representations of blocks of data when continuously comparing two databases which are actively being kept synchronized
US7996363B2 (en) Real-time apply mechanism in standby database environments
CN106815326B (zh) 一种检测无主键数据表一致性的系统及方法
US8560500B2 (en) Method and system for removing rows from directory tables
CN110543446B (zh) 一种基于快照的区块链直接归档方法
CN104346454A (zh) 基于Oracle数据库的数据一致性校验方法
US11531594B2 (en) Data recovery method and apparatus, server, and computer-readable storage medium
CN111259004B (zh) 一种存储引擎中数据索引的方法以及相关装置
CN105573859A (zh) 一种数据库的数据恢复方法和设备
CN112286728A (zh) 数据备份方法、装置、设备及计算机存储介质
US10223205B2 (en) Disaster recovery data sync
US6279117B1 (en) Recovery support method for recovering from failure of an external storage device
WO2022182470A1 (en) Consistency checking for distributed analytical database systems
WO2015084409A1 (en) Nosql database data validation
CN110543485B (zh) 一种基于快照的区块链预约归档方法
US11163799B2 (en) Automatic rollback to target for synchronous replication
CN113190536B (zh) 一种对双活数据库管理复制系统的快速修复方法及装置
CN117112522A (zh) 并发进程日志管理方法、装置、设备和存储介质
CN111198920A (zh) 一种基于数据库同步确定对比表快照的方法及装置
US20240037118A1 (en) Method, database host, and medium for database b-tree branch locking
CN111221801A (zh) 一种数据库迁移方法、系统及相关装置
JP2005250819A (ja) レプリケーションdb整合性確認方法

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