CN115168434A - 一种共享存储集群数据库的数据同步方法及设备 - Google Patents

一种共享存储集群数据库的数据同步方法及设备 Download PDF

Info

Publication number
CN115168434A
CN115168434A CN202210799014.9A CN202210799014A CN115168434A CN 115168434 A CN115168434 A CN 115168434A CN 202210799014 A CN202210799014 A CN 202210799014A CN 115168434 A CN115168434 A CN 115168434A
Authority
CN
China
Prior art keywords
log
thread
lsn
logs
queue
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
CN202210799014.9A
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.)
Wuhan Dream Database Co ltd
Original Assignee
Wuhan Dream Database 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 Wuhan Dream Database Co ltd filed Critical Wuhan Dream Database Co ltd
Priority to CN202210799014.9A priority Critical patent/CN115168434A/zh
Publication of CN115168434A publication Critical patent/CN115168434A/zh
Pending legal-status Critical Current

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/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • 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
    • 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
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

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)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种共享存储集群数据库的数据同步方法及设备。其方法部分主要包括:源端数据库同步系统针对共享存储集群的每个实例对应初始化一个日志读取线程;日志读取线程将读取到的日志送入日志排序线程的待排序队列,日志排序线程通过预先设置的日志依赖关系来排序日志,并将日志按顺序添加到日志分析线程的待分析队列;日志分析线程从待分析队列中按顺序抽取日志进行分析处理,处理完成后加入到日志投递线程的待投递消息队列,日志投递线程将待投递的消息发送到目的端进行入库。本发明可以保证事务同步的次序正确,且能高效排序日志,从而提升整体数据同步性能。

Description

一种共享存储集群数据库的数据同步方法及设备
技术领域
本发明涉及数据库数据处理技术领域,特别是涉及一种共享存储集群数据库的数据同步方法及设备。
背景技术
共享存储集群数据库有多个对外提供服务的实例,每个实例共享一份存储数据,同时,每个实例单独维护日志系统,目前典型的数据库如OracleRAC、DM8DSC等。由于该类数据库每个实例的日志是分散的,操作的数据又是同一份数据,所以,基于日志解析的同步软件在实时同步该数据时,需要将各个实例的日志合并,并且合并时需要采用一定的算法排序日志,保证事务的先后顺序,然后,将有序日志解析发送到目标库入库,这个过程称为共享集群数据库的数据同步过程。在此,每个实例日志的合并排序算法是一个难点,如果排序有误,那么事务同步的次序错乱,就会出现数据同步失败。目前,通常的做法是:根据每个实例日志的时间戳排序,相同时间戳再根据日志SCN排序,或者直接根据SCN排序。这种做法的缺点是存在等待一个时间戳才能进行排序的情况,有时一个时间戳的日志量很大,那么整体排序的性能也会很低,导致数据同步性能不高。
鉴于此,如何克服现有技术所存在的缺陷,如何解决一个时间戳的日志量很大,导致整体排序的性能很低,从而数据同步性能不高的技术问题,就成为业界亟待解决的重要技术难题。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供一种共享存储集群数据库的数据同步方法及设备,来解决一个时间戳内日志量很大,导致整体排序的性能很低,从而数据同步性能不高的问题。共享存储集群数据库的数据同步的核心在于如何合并和排序日志,本发明使用一种日志依赖方式排序日志,并根据依赖关系排序。这种依赖关系是记录在共享集群的每个实例的日志中,内容包含依赖的节点号和最大LSN值。通过将日志的当前节点LSN与依赖节点的最大LSN相比较,在日志的所有依赖节点的最大LSN均比日志的当前节点LSN大时,将该日志送入日志分析线程的待分析队列。按这种依赖规则将日志送入日志分析线程的待分析队列,可以保证事务同步的次序正确,且能高效排序日志,从而提升整体数据同步性能。
本发明实施例采用如下技术方案:
第一方面,本发明提供了一种共享存储集群数据库的数据同步方法,包括:
源端数据库同步系统针对共享存储集群的每个实例对应初始化一个日志读取线程;
日志读取线程将读取到的日志送入日志排序线程的待排序队列,日志排序线程通过预先设置的日志依赖关系来排序日志,并将日志按顺序添加到日志分析线程的待分析队列;
日志分析线程从待分析队列中按顺序抽取日志进行分析处理,处理完成后加入到日志投递线程的待投递消息队列,日志投递线程将待投递的消息发送到目的端进行入库。
进一步的,所述日志读取线程将读取到的日志送入日志排序线程的待排序队列,日志排序线程通过预先设置的日志依赖关系来排序日志,并将日志按顺序添加到日志分析线程的待分析队列具体包括:
日志读取线程从对应实例节点上读取日志,将读取到的日志加入到日志排序线程的日志待排序队列中,并设置当前节点LSN;
日志排序线程按顺序遍历待排序队列中的日志,根据遍历到的日志获取其日志依赖关系,所述日志依赖关系包括该日志依赖的节点号以及依赖节点的最大LSN所形成的数组;
比对日志的当前节点LSN与依赖节点的最大LSN大小,若所有依赖节点的最大LSN均大于当前节点LSN,则将该日志添加到日志分析线程的待分析队列。
进一步的,在根据遍历到的日志获取其日志依赖关系时,若该日志不存在日志依赖关系,则直接将该日志添加到日志分析线程的待分析队列。
进一步的,在比对日志的当前节点LSN与依赖节点的最大LSN大小时,若存在一个依赖节点的最大LSN小于当前节点LSN,则将该依赖节点的当前日志添加到日志分析线程的待分析队列。
进一步的,在比对日志的当前节点LSN与依赖节点的最大LSN大小时,若存在多个依赖节点的最大LSN小于当前节点LSN,则选取其中最小LSN的依赖节点的当前日志加入到日志分析线程的待分析队列。
进一步的,所述日志读取线程从对应实例节点上读取日志时,若没有读到日志,则循环继续读取,直至读取到日志。
进一步的,日志排序线程按顺序遍历待排序队列中的日志时,还获取对应的日志基础信息,所述日志基础信息包括当前日志的节点号、当前日志的最小LSN和最大LSN、前一个日志的最大LSN中的一种或多种。
进一步的,所述方法还包括:
在源端数据库及目的端数据库均部署同步系统;其中,源端数据库同步系统从源端共享存储集群数据库读取日志,目的端数据库同步系统负责把源端发过来的同步操作应用到目的端数据库。
进一步的,所述方法还包括:
目的端数据库同步系统接收到源端数据库同步系统的日志投递线程所投递的消息后,解包该消息,然后通过目的端数据库的接口进行入库。
另一方面,本发明提供了一种共享存储集群数据库的数据同步设备,具体为:包括至少一个处理器和存储器,至少一个处理器和存储器之间通过数据总线连接,存储器存储能被至少一个处理器执行的指令,指令在被处理器执行后,用于完成第一方面中的共享存储集群数据库的数据同步方法。
与现有技术相比,本发明的有益效果在于:通过设置日志依赖关系,得到每个日志的依赖的节点号以及依赖节点的最大LSN所形成的数组,从而将依赖节点的最大LSN与当前节点LSN的大小进行对比,只有在所有依赖节点的最大LSN均大于当前节点LSN时,才将对应日志送入日志分析线程的待分析队列。按这种依赖规则将日志送入日志分析线程的待分析队列,可以保证事务同步的次序正确,且能高效排序日志,从而提升整体数据同步性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1提供的一种共享存储集群数据库的数据同步方法流程图;
图2为本发明实施例1提供的步骤200具体流程图;
图3为本发明实施例2提供的两节点的共享存储集群的数据同步示意图;
图4为本发明实施例2提供的日志读取线程的流程图;
图5为本发明实施例2提供的两节点的排序算法流程图;
图6为本发明实施例3提供的多节点的排序算法流程图;
图7为本发明实施例4提供的一种共享存储集群数据库的数据同步设备结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,并且这里所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外,本发明提供的各个实施例或单个实施例中的技术特征可以相互任意结合,以形成可行的技术方案,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时,应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
本发明是一种特定功能系统的体系结构,因此在具体实施例中主要说明各结构模组的功能逻辑关系,并不对具体软件和硬件实施方式做限定。
下面就参考附图和实施例结合来详细说明本发明。
实施例1:
如图1所示,本发明实施例提供一种共享存储集群数据库的数据同步方法,具体步骤如下。
步骤100:源端数据库同步系统针对共享存储集群的每个实例对应初始化一个日志读取线程。
步骤200:日志读取线程将读取到的日志送入日志排序线程的待排序队列,日志排序线程通过预先设置的日志依赖关系来排序日志,并将日志按顺序添加到日志分析线程的待分析队列。
步骤300:日志分析线程从待分析队列中按顺序抽取日志进行分析处理,处理完成后加入到日志投递线程的待投递消息队列,日志投递线程将待投递的消息发送到目的端进行入库。该步骤中日志分析线程的分析处理包括:从待分析队列中按顺序抽取日志,提取日志中的事务信息、操作类型以及操作涉及的数据,并将其格式化为待同步的消息格式,加入到待投递的消息队列。
需说明的是,本实施例还包括准备步骤:在源端数据库及目的端数据库均部署同步系统;其中,源端数据库同步系统从源端共享存储集群数据库读取日志,目的端数据库同步系统负责把源端发过来的同步操作应用到目的端数据库。本实施例的目的端数据库同步系统还在接收到源端数据库同步系统的日志投递线程所投递的消息后,解包该消息,然后通过目的端数据库的接口进行入库。
具体的,在步骤100中,源端数据库同步系统针对共享存储集群的每个实例对应初始化一个日志读取线程,例如,两节点的共享存储集群则初始化两个日志读取线程,三节点的共享存储集群则初始化两个日志读取线程,以此类推。另外,源端数据库同步系统还初始化其它的线程,包括:一个日志排序线程、一个日志分析线程、一个日志投递线程。其中,日志排序线程根据每个读取线程读到的日志进行合并排序,排完序的日志加入到日志分析线程的待分析日志队列;日志分析线程拥有一个待分析的日志队列,日志分析线程除了用来筛选归类操作以及字典维护以外,还负责组织分派日志操作还原的任务;日志投递线程拥有一个待投递的消息队列,负责投递解析完成后的操作到目的端。
如图2所示,在本优选实施例中,对于步骤200(日志读取线程将读取到的日志送入日志排序线程的待排序队列,日志排序线程通过预先设置的日志依赖关系来排序日志,并将日志按顺序添加到日志分析线程的待分析队列),具体可包括如下步骤。
步骤201:日志读取线程从对应实例节点上读取日志,将读取到的日志加入到日志排序线程的日志待排序队列中,并设置当前节点LSN;该当前节点LSN表示该节点读到的日志的LSN,每个日志中都记录了LSN,这个LSN就是当前LSN,这个LSN会根据读到的不同日志而变化。
步骤202:日志排序线程按顺序遍历待排序队列中的日志,根据遍历到的日志获取其日志依赖关系,所述日志依赖关系包括该日志依赖的节点号以及依赖节点的最大LSN所形成的数组;这里的“依赖”含义是指数据库内部实现上针对同一个数据页并发冲突引起的先后关系,这个关系能够表示事务的逻辑顺序。举例说明:节点0上对表T(c1)更新值为1,节点1上对T(c1)同一行更新为2,那么这里就有先后顺序,那么这个依赖关系表示为:节点1依赖节点0的更新,体现到日志中为:节点1日志(LSN1)依赖节点0日志(LSN0),那么LSN0就是LSN1依赖的最大LSN。如果节点0上读到的日志LSNx比LSN0小,那么就需要等待,一直等到最大LSN0为止。
步骤203:比对日志的当前节点LSN与依赖节点的最大LSN大小,若所有依赖节点的最大LSN均大于当前节点LSN,则将该日志添加到日志分析线程的待分析队列。根据日志获取的依赖信息可以表示为P(x,y),P(x,y)具体为依赖的其他节点的日志信息,x表示依赖的节点号,y表示依赖的最大LSN。这个依赖信息P(x,y)表示的是一个依赖信息对,即不止存在一个。依次遍历这些依赖的节点,直到所有的依赖节点都满足依赖LSN大于节点LSN,才将该日志添加到日志分析线程的待分析队列。
在本优选实施例的步骤201中,所述日志读取线程从对应实例节点上读取日志时,若没有读到日志,则循环继续读取,直至读取到日志。
在本优选实施例的步骤202中,在根据遍历到的日志获取其日志依赖关系时,若该日志不存在日志依赖关系,则直接将该日志添加到日志分析线程的待分析队列。没有依赖关系指的是当前这个日志并不依赖其他节点的日志,那么该日志就可以直接加入到待分析队列。
在本优选实施例的步骤202中,日志排序线程按顺序遍历待排序队列中的日志时,还获取对应的日志基础信息,所述日志基础信息包括当前日志的节点号、当前日志的最小LSN和最大LSN、前一个日志的最大LSN中的一种或多种。
在本优选实施例的步骤203中,在比对日志的当前节点LSN与依赖节点的最大LSN大小时,若只存在一个依赖节点的最大LSN小于当前节点LSN,则将该依赖节点的当前日志添加到日志分析线程的待分析队列。这是因为只有一个依赖节点的最大LSN小于当前节点LSN时,说明该依赖节点的最大LSN时间最早,所以将其的当前日志添加到日志分析线程的待分析队列。
在本优选实施例的步骤203中,在比对日志的当前节点LSN与依赖节点的最大LSN大小时,若存在多个依赖节点的最大LSN小于当前节点LSN,则选取其中最小LSN的依赖节点的当前日志加入到日志分析线程的待分析队列。
上述过程中,日志依赖关系的格式为:依赖的节点数、依赖其他节点的节点号和LSN组成的数组。具体为:n[(EPNOi,PLSNi),...],n表示依赖的节点数,EPNOi表示依赖的节点号,PLSNi表示依赖的节点LSN。
例如:在2个节点的共享集群环境中,节点01的节点号为1,日志为log1,节点02的节点号为2,日志为log2,log1依赖log2的LSN为200,那么log1的依赖格式为:1[(2,200)],1表示1个依赖节点,2表示依赖节点号为2的节点,200表示依赖节点2的LSN。如果在3个节点的共享集群环境中,存在节点01、节点02、节点03,对应的节点号为1、2、3,对应的日志为log1、log2、log3,对应的日志LSN为100、200、300,那么log1的依赖若为2[(2,200),(3,300)],表示log1依赖其他的2个节点,分别依赖节点02的log2的200,节点03的log3的300。
日志依赖关系的3个基本规则如下:
(1)不存在自依赖,即不存在依赖自身节点,例如节点01的日志log1的LSN为100,日志log2的LSN为200,log1依赖log2的200,这种情况不存在。
(2)不存在相互依赖,例如节点01日志log1的当前LSN为100,节点02的日志log2的当前LSN为200,log1依赖log2的200,log2依赖log1的100,这种情况不存在。
(3)不存在环依赖,例如节点01日志log1的当前LSN为100,节点02日志log2的当前LSN为200,节点03的日志log3的当前LSN为300,log1依赖log2的200,log2依赖log3的300,log3依赖log1的100,这种情况不存在。
综上所述,本优选实施例通过设置日志依赖关系,得到每个日志的依赖的节点号以及依赖节点的最大LSN所形成的数组,从而将依赖节点的最大LSN与当前节点LSN的大小进行对比,只有在所有依赖节点的最大LSN均大于当前节点LSN时,才将当前节点对应日志送入日志分析线程的待分析队列。按这种依赖规则将日志送入日志分析线程的待分析队列,可以保证事务同步的次序正确,且能高效排序日志,从而提升整体数据同步性能。
实施例2:
基于实施例1提供的共享存储集群数据库的数据同步方法,本实施例2通过一个具体的应用例子来对本发明进行更详细的说明。
如图3所示,为本实施例的两节点的共享存储集群的数据同步示意图,本实施例以两节点的共享存储集群为例,但不限于该两节点的共享存储集群。参考图3,本实施例的日志读取线程有两个,分别对应两个实例节点,日志排序线程位于数据同步软件的中间层,其根据日志读取线程获取的实例日志进行合并排序,然后将排序的日志送入日志解析线程进行解析,最后将解析的日志送入日志发送线程进行发送。
如图4所示,为本实施例的日志读取线程的流程图,日志读取线程从对应实例节点上读取日志,如果没有读到日志,则循环继续读,如果读到日志,则将日志加入到日志排序线程的待排序队列中,并设置对应的当前节点LSN。
如图5所示,为本实施例的排序算法流程图。假设现在共享存储集群存在2个节点,分别为ep01和ep02,节点号分别为1和2,当前的日志分别为log1和log2,当前的日志LSN分别为CLSN1和CLSN2,当前日志的依赖分别为P1和P2,P1为空或者P1=1[(2,PSLN2)],P2为空或者P2=1[(1,PSLN1)],节点02的下一个日志记为logi,对应日志LSN为CLSNi,依赖为Pi。
参考图5,从log1开始的一趟排序算法流程如下:
步骤1.如果P1为空,即log1没有依赖,进入步骤2;如果P1为1[(2,PLSN2)],则进入步骤3。
步骤2.将log1加入到待解析队列,进入步骤8。
步骤3.判断PLSN2是否小于CLSN2,如果是,则进入步骤2;如果不是,进入步骤4。
步骤4.如果P2为空,即log2没有依赖,进入步骤6;如果P2为1[(1,PLSN1)],则进入步骤5。
步骤5.判断PLSN1是否小于CSLN1,如果是,进入步骤6;否则,存在相互依赖,不符合依赖规则,进入步骤8。
步骤6.将log2加入待解析队列,进入步骤7。
步骤7.取节点02的下一个日志logi,其日志LSN为CLSNi,其依赖为Pi,设置log2=logi,CLSN2=CLSNi,P2=Pi,进入步骤3。
步骤8.本次排序结束。
1og1完成排序,按照相同的排序算法,继续对log2排序,直到2个节点的日志都完成排序。
基于上述流程,本实施例通过设置日志依赖关系,得到每个日志的依赖的节点号以及依赖节点的最大LSN所形成的数组,从而将依赖节点的最大LSN与当前节点LSN的大小进行对比,只有在所有依赖节点的最大LSN均大于当前节点LSN时,才将当前节点对应日志送入日志分析线程的待分析队列。按这种依赖规则将日志送入日志分析线程的待分析队列,可以保证事务同步的次序正确,且能高效排序日志,从而提升整体数据同步性能。
实施例3:
如图6所示,基于实施例1、实施例2提供的共享存储集群数据库的数据同步方法,本实施例3对具有多个依赖节点的排序算法流程进行更详细的说明。
假如共享集群有3个实例节点,分别为EP01、EP02、EP03,对应的节点号分别为1、2、3,节点日志分别为:log1、log2、log3,对应日志LSN分别为:CLSN1、CLSN2、CLSN3,对应依赖分别为P1、P2、P3。log2和log3对应下一个日志分别为logi和logj,下一个依赖分别为Pi和Pj,下一个日志LSN分别为CLSNi和CLSNj。P1为空或者P1=2[(2,PLSN12),(3,PLSN13)],P2为空或者P2=2[(1,PLSN21),(3,PLSN23)],P3为空或者P3=2[(1,PLSN31),(2,PLSN32)]。
参考图6,从log1开始的一趟排序算法流程如下:
步骤1:判断P1是否为空,如果是,进入步骤2;否则,进入步骤3。
步骤2:将log1加入到待解析队列,进入步骤25。
步骤3:判断PLSN12是否小于CLSN2,如果是进入步骤4;否则,进入步骤5。
步骤4:判断PLSN13是否小于CLSN3,如果是进入步骤2;否则,进入步骤6。
步骤5:判断P2是否为空,如果是,进入步骤7;否则进入步骤11。
步骤6:判断P3是否为空,如果是,进入步骤8;否则进入步骤12。
步骤7:将log2加入待解析队列,进入步骤9。
步骤8:将log3加入待解析队列,进入步骤10。
步骤9:取节点02的下一个日志logi,其日志LSN为CLSNi,其依赖为Pi,设置log2=logi,CLSN2=CLSNi,P2=Pi,进入步骤3。
步骤10:取节点03的下一个日志logj,其日志LSN为CLSNj,其依赖为Pj,设置log3=logj,CLSN3=CLSNj,P3=Pj,进入步骤4。
步骤11:判断PLSN21是否小于CLSN1,如果是,进入步骤13;否则,存在相互依赖,不符合规则,进入步骤25。
步骤12:判断PLSN31是否小于CLSN1,如果是,进入步骤14;否则,存在环依赖,不符合规则,进入步骤25。
步骤13:判断PLSN23是否小于CLSN3,如果是,进入步骤7;否则,进入步骤15。
步骤14:判断PLSN32是否小于CLSN2,如果是,进入步骤8;否则,进入步骤16。
步骤15:判断P3是否为空,如果是,进入步骤21;否则,进入步骤17。
步骤16:判断P2是否为空,如果是,进入步骤22;否则,进入步骤18。
步骤17:判断PLSN31是否小于CLSN1,如果是,进入步骤19;否则,存在环依赖,不符合规则,进入步骤25。
步骤18:判断PLSN21是否小于CLSN1,如果是,进入步骤20;否则,存在环依赖,不符合规则,进入步骤25。
步骤19:判断PLSN32是否小于CLSN2,如果是,进入步骤21;否则,存在环依赖,不符合规则,进入步骤25。
步骤20:判断PLSN23是否小于CLSN3,如果是,进入步骤22;否则,存在环依赖,不符合规则,进入步骤25。
步骤21:将log3加入到待解析队列,进入步骤23。
步骤22:将log2加入到待解析队列,进入步骤24。
步骤23:取节点03的下一个日志logj,其日志LSN为CLSNj,其依赖为Pj,设置log3=logj,CLSN3=CLSNj,P3=Pj,进入步骤13。
步骤24:取节点02的下一个日志logi,其日志LSN为CLSNi,其依赖为Pi,设置log2=logi,CLSN2=CLSNi,P2=Pi,进入步骤14。
步骤25:本次排序结束。
1og1完成排序,按照相同的算法,继续对log2、log3排序,直至3个节点的日志都完成排序。
实施例4:
在上述实施例1至实施例3提供的共享存储集群数据库的数据同步方法的基础上,本发明还提供了一种可用于实现上述方法的共享存储集群数据库的数据同步设备,如图7所示,是本发明实施例的设备架构示意图。本实施例的共享存储集群数据库的数据同步设备包括一个或多个处理器21以及存储器22。其中,图7中以一个处理器21为例。
处理器21和存储器22可以通过总线或者其他方式连接,图7中以通过总线连接为例。
存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1至实施例2中的共享存储集群数据库的数据同步方法。处理器21通过运行存储在存储器22中的非易失性软件程序、指令以及模块,从而执行共享存储集群数据库的数据同步设备的各种功能应用以及数据处理,即实现实施例1至实施例3的共享存储集群数据库的数据同步方法。
存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
程序指令/模块存储在存储器22中,当被一个或者多个处理器21执行时,执行上述实施例1至实施例3中的共享存储集群数据库的数据同步方法,例如,执行以上描述的图1、图5、图6所示的各个步骤。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ReadOnlyMemory,简写为:ROM)、随机存取存储器(RandomAccessMemory,简写为:RAM)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种共享存储集群数据库的数据同步方法,其特征在于,包括:
源端数据库同步系统针对共享存储集群的每个实例对应初始化一个日志读取线程;
日志读取线程将读取到的日志送入日志排序线程的待排序队列,日志排序线程通过预先设置的日志依赖关系来排序日志,并将日志按顺序添加到日志分析线程的待分析队列;
日志分析线程从待分析队列中按顺序抽取日志进行分析处理,处理完成后加入到日志投递线程的待投递消息队列,日志投递线程将待投递的消息发送到目的端进行入库。
2.根据权利要求1所述的共享存储集群数据库的数据同步方法,其特征在于,所述日志读取线程将读取到的日志送入日志排序线程的待排序队列,日志排序线程通过预先设置的日志依赖关系来排序日志,并将日志按顺序添加到日志分析线程的待分析队列具体包括:
日志读取线程从对应实例节点上读取日志,将读取到的日志加入到日志排序线程的日志待排序队列中,并设置当前节点LSN;
日志排序线程按顺序遍历待排序队列中的日志,根据遍历到的日志获取其日志依赖关系,所述日志依赖关系包括该日志依赖的节点号以及依赖节点的最大LSN所形成的数组;
比对日志的当前节点LSN与依赖节点的最大LSN大小,若所有依赖节点的最大LSN均大于当前节点LSN,则将该日志添加到日志分析线程的待分析队列。
3.根据权利要求2所述的共享存储集群数据库的数据同步方法,其特征在于,在根据遍历到的日志获取其日志依赖关系时,若该日志不存在日志依赖关系,则直接将该日志添加到日志分析线程的待分析队列。
4.根据权利要求2所述的共享存储集群数据库的数据同步方法,其特征在于,在比对日志的当前节点LSN与依赖节点的最大LSN大小时,若存在一个依赖节点的最大LSN小于当前节点LSN,则将该依赖节点的当前日志添加到日志分析线程的待分析队列。
5.根据权利要求2所述的共享存储集群数据库的数据同步方法,其特征在于,在比对日志的当前节点LSN与依赖节点的最大LSN大小时,若存在多个依赖节点的最大LSN小于当前节点LSN,则选取其中最小LSN的依赖节点的当前日志加入到日志分析线程的待分析队列。
6.根据权利要求2所述的共享存储集群数据库的数据同步方法,其特征在于,所述日志读取线程从对应实例节点上读取日志时,若没有读到日志,则循环继续读取,直至读取到日志。
7.根据权利要求2所述的共享存储集群数据库的数据同步方法,其特征在于,日志排序线程按顺序遍历待排序队列中的日志时,还获取对应的日志基础信息,所述日志基础信息包括当前日志的节点号、当前日志的最小LSN和最大LSN、前一个日志的最大LSN中的一种或多种。
8.根据权利要求1-7任一所述的共享存储集群数据库的数据同步方法,其特征在于,所述方法还包括:
在源端数据库及目的端数据库均部署同步系统;其中,源端数据库同步系统从源端共享存储集群数据库读取日志,目的端数据库同步系统负责把源端发过来的同步操作应用到目的端数据库。
9.根据权利要求1-7任一所述的共享存储集群数据库的数据同步方法,其特征在于,所述方法还包括:
目的端数据库同步系统接收到源端数据库同步系统的日志投递线程所投递的消息后,解包该消息,然后通过目的端数据库的接口进行入库。
10.一种共享存储集群数据库的数据同步设备,其特征在于:
包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储能被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成权利要求1-9中任一项所述的共享存储集群数据库的数据同步方法。
CN202210799014.9A 2022-07-08 2022-07-08 一种共享存储集群数据库的数据同步方法及设备 Pending CN115168434A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210799014.9A CN115168434A (zh) 2022-07-08 2022-07-08 一种共享存储集群数据库的数据同步方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210799014.9A CN115168434A (zh) 2022-07-08 2022-07-08 一种共享存储集群数据库的数据同步方法及设备

Publications (1)

Publication Number Publication Date
CN115168434A true CN115168434A (zh) 2022-10-11

Family

ID=83491309

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210799014.9A Pending CN115168434A (zh) 2022-07-08 2022-07-08 一种共享存储集群数据库的数据同步方法及设备

Country Status (1)

Country Link
CN (1) CN115168434A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116860869A (zh) * 2023-05-29 2023-10-10 玖章算术(浙江)科技有限公司 一种主键并发场景下的队列投递方法和系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116860869A (zh) * 2023-05-29 2023-10-10 玖章算术(浙江)科技有限公司 一种主键并发场景下的队列投递方法和系统

Similar Documents

Publication Publication Date Title
US20130227194A1 (en) Active non-volatile memory post-processing
CN112598525B (zh) 一种智能合约分簇并行的区块链实现方法及装置
CN113760513B (zh) 一种分布式任务调度方法、装置、设备和介质
CN111177254B (zh) 一种异构关系型数据库之间数据同步的方法和装置
CN111125013B (zh) 一种数据入库方法、装置、设备及介质
CN103150149A (zh) 处理数据库重做数据的方法和装置
CN114116665B (zh) 数据库中并行写入事务日志以提升处理效率的方法
CN115168434A (zh) 一种共享存储集群数据库的数据同步方法及设备
Liu et al. Optimizing shuffle in wide-area data analytics
CN115185787A (zh) 处理事务日志的方法及装置
CN111694798A (zh) 一种基于日志解析的数据同步方法及数据同步系统
CN114756629A (zh) 基于sql的多源异构数据交互分析引擎及方法
CN116304390B (zh) 时序数据处理方法、装置、存储介质及电子设备
CN115409507A (zh) 区块处理方法、区块处理装置、计算机设备及存储介质
CN112612855A (zh) 高可用数据库日志接收队列、同步方法及装置
CN112559525A (zh) 数据检查系统、方法、装置和服务器
CN114119242B (zh) 基于自适应窗口分片的联盟链性能优化方法及装置
CN111782373B (zh) 作业调度方法及装置
Nykiel et al. Sharing across multiple MapReduce jobs
CN115422286A (zh) 一种分布式数据库的数据同步方法及设备
CN114579280A (zh) 一种准实时调度方法及系统
RU2490702C1 (ru) Способ ускорения обработки множественных запросов типа select к rdf базе данных с помощью графического процессора
CN112596895A (zh) 一种sql语义感知的弹性倾斜处理方法及系统
CN110851399B (zh) 一种分布式文件系统文件数据块传输效率优化方法及系统
CN117763052B (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