基于表初始化分组装载的数据库同步方法及设备技术

技术编号:22075730 阅读:24 留言:0更新日期:2019-09-12 14:09
本发明专利技术实施例提供了一种基于表初始化分组装载的数据库同步方法及设备。所述方法包括:在源端数据库对待装载表上S锁,获取源端数据库中日志的LastLSN并与待装载表进行关联,获取第一ROWID和第二ROWID,将两者之间的区间,划分为若干份的区间范围;创建若干线程,与源端数据库建立连接,采用若干线程对若干份的区间范围进行查询,查询完毕后释放S锁并提取查询结果,将查询结果发送至目标端数据同步服务,并插入目标端数据库;若从源端日志中分析得到待装载表的操作,且操作对应的日志LSN大于等于LastLSN,则将操作发送至目标端数据同步进行同步。本发明专利技术实施例提供的基于表初始化分组装载的数据库同步方法及设备,可以提升数据库同步过程中初始化装载的效率。

Database Synchronization Method and Equipment Based on Table Initialization Packet Loading

【技术实现步骤摘要】
基于表初始化分组装载的数据库同步方法及设备
本专利技术实施例涉及数据库同步
,尤其涉及一种基于表初始化分组装载的数据库同步方法及设备。
技术介绍
在数据库数据实时同步技术中,其中基于数据库日志分析的数据实时同步技术因其具备支持异构操作系统和数据库平台、对源端数据库系统侵入性较小、数据同步延时低等特点,而得到广泛研究和应用。异构数据库系统之间的日志格式及日志内容差异较大,因此数据同步源端数据库的日志内容并不能直接应用到目标数据库中。基于日志分析的数据实时同步技术,一般原理是捕获源端数据库的增量日志内容,然后通过网络发送至目标端,在目标端使用SQL逆向生成技术恢复源端数据库的事务操作SQL语句,再通过通用的数据库访问接口如ODBC、OCI等接口,执行恢复后的SQL语句,实现源和目标端的数据实时同步。在同步系统源端,实时读取源端数据库日志文件,捕获源端数据库上的事务增量日志内容;然后实时解析增量日志内容,提取日志中的事务ID、操作表ID、事务的操作类型如INSERT、UPDATE、DELETE,事务操作时间戳、日志LSN值、操作数据等,然后将其组装成特定格式的消息,存放在发送队列中;最后发送队列中的消息通过TCP/IP网络发送到同步系统的目标端。在同步系统目标端,同步软件日志接收模块,接收源端发送的消息,并解析消息内容,根据事务ID将同属于一个事务的操作进行缓存,当接收到事务的COMMIT消息时,则交由日志执行模块进行同步执行;同步软件日志执行模块,根据事务操作内容,构建SQL语句,在目标数据库同步执行。在现实数据库应用中,源端数据库中可能存在成千上万张数据表,并且表数据量大,特别是存在有大对像数据表,装载时提取大对像数据会更加费时费力,导致整个初始化装载数据的过程耗时较长。因此,找到一种加快整个初始化装载的效率,缩短数据库同步搭建花费时间的方法,就成为业界亟待解决的技术问题。
技术实现思路
针对现有技术存在的上述问题,本专利技术实施例提供了一种基于表初始化分组装载的数据库同步方法及设备。第一方面,本专利技术的实施例提供了一种基于表初始化分组装载的数据库同步方法,包括:在源端数据库对待装载表上S锁,获取源端数据库中日志的LastLSN,将所述LastLSN与所述待装载表进行关联,并获取所述待装载表第一ROWID和第二ROWID,将所述第一ROWID和第二ROWID之间的区间,划分为若干份的区间范围;创建若干线程,并与所述源端数据库建立连接,采用所述若干线程对所述若干份的区间范围进行查询,查询完毕后释放所述S锁并提取查询结果,将所述查询结果发送至目标端数据同步服务,并插入目标端数据库;若从源端日志中分析得到所述待装载表的操作,且所述操作对应的日志LSN大于等于所述LastLSN,则将所述操作发送至目标端数据同步进行同步;其中,所述LastLSN为处理若干事务后得到的最终日志序列号;所述LSN为日志序列号;所述ROWID为数据库中一行数据的标记行号。进一步地,在上述方法实施例内容的基础上,本专利技术实施例中提供的基于表初始化分组装载的数据库同步方法,所述第一ROWID,包括:所述待装载表的起始ROWID。进一步地,在上述方法实施例内容的基础上,本专利技术实施例中提供的基于表初始化分组装载的数据库同步方法,所述第二ROWID,包括:所述待装载表的终止ROWID。进一步地,在上述方法实施例内容的基础上,本专利技术实施例中提供的基于表初始化分组装载的数据库同步方法,所述将所述第一ROWID和第二ROWID之间的区间,划分为若干份的区间范围,包括:采用相等的比例,将所述第一ROWID和第二ROWID之间的区间,划分为若干等份的区间范围。进一步地,在上述方法实施例内容的基础上,本专利技术实施例中提供的基于表初始化分组装载的数据库同步方法,还包括:所述若干线程中的线程,与所述若干等份的区间范围中的范围区间,一一对应。进一步地,在上述方法实施例内容的基础上,本专利技术实施例中提供的基于表初始化分组装载的数据库同步方法,所述查询完毕后释放所述S锁并提取查询结果,包括:查询完毕后释放所述S锁,利用数据库的多版本功能,提取查询结果中相应的可见范围。进一步地,在上述方法实施例内容的基础上,本专利技术实施例中提供的基于表初始化分组装载的数据库同步方法,还包括:若从源端日志中分析得到所述待装载表的操作,且所述操作对应的日志LSN小于所述LastLSN,则将所述操作丢弃。第二方面,本专利技术的实施例提供了一种基于表初始化分组装载的数据库同步装置,包括:区间范围划分模块,用于在源端数据库对待装载表上S锁,获取源端数据库中日志的LastLSN,将所述LastLSN与所述待装载表进行关联,并获取所述待装载表第一ROWID和第二ROWID,将所述第一ROWID和第二ROWID之间的区间,划分为若干份的区间范围;目标端数据库插入模块,用于创建若干线程,并与所述源端数据库建立连接,采用所述若干线程对所述若干份的区间范围进行查询,查询完毕后释放所述S锁并提取查询结果,将所述查询结果发送至目标端数据同步服务,并插入目标端数据库;操作同步模块,用于若从源端日志中分析得到所述待装载表的操作,且所述操作对应的日志LSN大于等于所述LastLSN,则将所述操作发送至目标端数据同步进行同步;其中,所述LastLSN为处理若干事务后得到的最终日志序列号;所述LSN为日志序列号;所述ROWID为数据库中一行数据的标记行号。第三方面,本专利技术的实施例提供了一种电子设备,包括:至少一个处理器;以及与处理器通信连接的至少一个存储器,其中:存储器存储有可被处理器执行的程序指令,处理器调用程序指令能够执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的基于表初始化分组装载的数据库同步方法。第四方面,本专利技术的实施例提供了一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的基于表初始化分组装载的数据库同步方法。本专利技术实施例提供的基于表初始化分组装载的数据库同步方法及设备,通过对待装载的表上S锁,然后利用多线程的机制,使用多个连接并行的提取待装载表上某一个区间的数据,然后在目标端数据同步服务并行的插入到目标端数据库,最终组装成一个完整的表数据进行同步,可以提升数据库同步过程中初始化装载的效率,缩短数据库同步搭建的时长。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单的介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的基于表初始化分组装载的数据库同步方法流程图;图2为本专利技术实施例提供的基于表初始化分组装载的数据库同步装置结构示意图;图3为本专利技术实施例提供的电子设备的实体结构示意图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没本文档来自技高网
...

【技术保护点】
1.一种基于表初始化分组装载的数据库同步方法,其特征在于,包括:在源端数据库对待装载表上S锁,获取源端数据库中日志的LastLSN,将所述LastLSN与所述待装载表进行关联,并获取所述待装载表第一ROWID和第二ROWID,将所述第一ROWID和第二ROWID之间的区间,划分为若干份的区间范围;创建若干线程,并与所述源端数据库建立连接,采用所述若干线程对所述若干份的区间范围进行查询,查询完毕后释放所述S锁并提取查询结果,将所述查询结果发送至目标端数据同步服务,并插入目标端数据库;若从源端日志中分析得到所述待装载表的操作,且所述操作对应的日志LSN大于等于所述LastLSN,则将所述操作发送至目标端数据同步进行同步;其中,所述LastLSN为处理若干事务后得到的最终日志序列号;所述LSN为日志序列号;所述ROWID为数据库中一行数据的标记行号。

【技术特征摘要】
1.一种基于表初始化分组装载的数据库同步方法,其特征在于,包括:在源端数据库对待装载表上S锁,获取源端数据库中日志的LastLSN,将所述LastLSN与所述待装载表进行关联,并获取所述待装载表第一ROWID和第二ROWID,将所述第一ROWID和第二ROWID之间的区间,划分为若干份的区间范围;创建若干线程,并与所述源端数据库建立连接,采用所述若干线程对所述若干份的区间范围进行查询,查询完毕后释放所述S锁并提取查询结果,将所述查询结果发送至目标端数据同步服务,并插入目标端数据库;若从源端日志中分析得到所述待装载表的操作,且所述操作对应的日志LSN大于等于所述LastLSN,则将所述操作发送至目标端数据同步进行同步;其中,所述LastLSN为处理若干事务后得到的最终日志序列号;所述LSN为日志序列号;所述ROWID为数据库中一行数据的标记行号。2.根据权利要求1所述的基于表初始化分组装载的数据库同步方法,其特征在于,所述第一ROWID,包括:所述待装载表的起始ROWID。3.根据权利要求1所述的基于表初始化分组装载的数据库同步方法,其特征在于,所述第二ROWID,包括:所述待装载表的终止ROWID。4.根据权利要求1所述的基于表初始化分组装载的数据库同步方法,其特征在于,所述将所述第一ROWID和第二ROWID之间的区间,划分为若干份的区间范围,包括:采用相等的比例,将所述第一ROWID和第二ROWID之间的区间,划分为若干等份的区间范围。5.根据权利要求4所述的基于表初始化分组装载的数据库同步方法,其特征在于,还包括:所述若干线程中的线程,与所述若干等份的区间范围中的范围区间,一一对应。6.根据权利要求1所述的基于表初始化分组装载的数据库同步方法,其特征在于,所述查询完毕后释放所述S锁并提取查询...

【专利技术属性】
技术研发人员:付铨孙峰余院兰赵家威
申请(专利权)人:武汉达梦数据库有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1