CN109086295B - 数据同步方法、装置、计算机设备及存储介质 - Google Patents
数据同步方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN109086295B CN109086295B CN201810606715.XA CN201810606715A CN109086295B CN 109086295 B CN109086295 B CN 109086295B CN 201810606715 A CN201810606715 A CN 201810606715A CN 109086295 B CN109086295 B CN 109086295B
- Authority
- CN
- China
- Prior art keywords
- data
- synchronization
- synchronized
- target
- database
- 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
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明公开了通过获取其中一条待同步数据作为当前待同步数据,基于kettle将当前待同步数据同步到目标数据库中,确定同步成功,将未同步的待同步数据确定为当前待同步数据,或确定同步失败,记录同步失败原因,根据同步失败原因更新目标数据库,通过基于高效稳定的kettle将源数据迅速地同步到目标数据库中,当同步成功时,获取下一条源数据信息进行同步,直到各条待同步数据均被成功同步,当同步失败时,根据同步失败的不同情况更新目标数据库,重新将同步失败对应的源数据进行同步,从而不需要人工花费时间找出同步失败的原因,加以解决同步失败的问题,进而提高了数据同步的效率。
Description
技术领域
本发明涉及金融领域,尤其涉及一种数据同步方法、装置、计算机设备及存储介质。
背景技术
在当前大数据信息时代,数据信息对于金融公司起到至关重要的作用,金融公司常常需要对数据进行备份,当数据信息有变动时,还需要对数据信息再一次进行备份。
在备份过程中,需要将一个数据库中的所有数据信息同步到另一个数据库中,但是,在同步的过程中,常常出现同步失败,一旦出现同步失败,则需要人工花费时间找出同步失败的原因,人工花费时间加以解决同步失败的问题,从而导致数据同步效率低。
发明内容
基于此,有必要针对上述技术问题,提供一种可以提高数据同步效率的数据同步方法、装置、计算机设备及存储介质。
一种数据同步方法,包括:
将源数据库中一条待同步数据作为当前待同步数据;
基于kettle将当前待同步数据同步到目标数据库中,得到同步结果;
检测所述同步结果是同步成功还是同步失败;
若所述同步结果为同步成功,则在直到所述源数据库中所有待同步数据均被成功同步到所述目标数据库中之前将所述源数据库中的下一条待同步数据确定为新的当前待同步数据;
若所述同步结果为同步失败,则记录同步失败原因,根据所述同步失败原因更新所述目标数据库,以使所述当前待同步数据被成功同步到所述目标数据库中,并在直到所述源数据库中所有待同步数据均被成功同步到所述目标数据库中之前将所述源数据库中的下一条待同步数据确定为新的当前待同步数据。
获取模块,用于将源数据库中一条待同步数据作为当前待同步数据;
同步模块,用于基于kettle将当前待同步数据同步到目标数据库中,得到同步结果;
检测模块,用于检测所述同步结果是同步成功还是同步失败;
第一确定模块,用于若所述同步结果为同步成功,则在直到所述源数据库中所有待同步数据均被成功同步到所述目标数据库中之前将所述源数据库中的下一条待同步数据确定为新的当前待同步数据;
更新模块,用于所述同步结果为同步失败,则记录同步失败原因,根据所述同步失败原因更新所述目标数据库,以使所述当前待同步数据被成功同步到所述目标数据库中,并在直到所述源数据库中所有待同步数据均被成功同步到所述目标数据库中之前将所述源数据库中的下一条待同步数据确定为新的当前待同步数据。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据同步方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据同步方法的步骤。
上述数据同步方法、装置、计算机设备及存储介质,首先,通过将源数据库中一条待同步数据作为当前待同步数据,然后,基于kettle将当前待同步数据同步到目标数据库中,得到同步结果,接下来,检测同步结果是同步成功还是同步失败,最后,确定同步成功,将未同步的待同步数据确定为当前待同步数据,或确定同步失败,记录同步失败原因,根据同步失败原因更新目标数据库,通过基于高效稳定的kettle将源数据迅速地同步到目标数据库中,当同步成功时,获取下一条源数据同步到目标数据库中,直到各条待同步数据均被成功同步到目标数据库中,当同步失败时,根据同步失败的不同情况修正目标数据库,重新将同步失败对应的源数据同步到目标数据库中,直到各条待同步数据均被成功同步到目标数据库中,从而不需要人工花费时间找出同步失败的原因,人工花费时间加以解决同步失败的问题,进而提高了数据同步的效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中数据同步方法的一应用环境示意图;
图2是本发明一实施例中数据同步方法的一流程图;
图3是本发明一实施例中数据同步方法的待同步数据预处理和确定同步类型的一流程图;
图4是本发明一实施例中数据同步方法的检测同步条件是否满足和成功连接数据库的一流程图;
图5是本发明一实施例中数据同步装置的一示意图;
图6是本发明一实施例中计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请提供的数据同步方法,可应用在如图1的应用环境中,其中,计算机设备通过网络与服务器进行通信。服务端获取源数据库中的一条待同步数据作为当前待同步数据,服务端基于kettle将当前待同步数据同步到目标数据库中,得到同步结果,若同步结果为同步成功,则服务端将下一条待同步数据确定为当前待同步数据,直到各条待同步数据均被成功同步到目标数据库中,若同步结果为同步失败,则服务端记录同步失败原因,服务端根据同步失败原因更新目标数据库,以使当前待同步数据被成功同步到目标数据库中,直到源数据库中所有待同步数据均被成功同步到目标数据库中。其中,计算机设备可以但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一实施例中,如图2所示,提供一种数据同步方法,该数据同步方法应用在金融行业中,以该方法应用在图1中的服务器为例进行说明,包括如下步骤:
S10:将源数据库中一条待同步数据作为当前待同步数据。
在本实施例中,源数据库是指存储待同步数据的数据库。
需要说明的是,源数据库存储有多条同步数据信息。
具体地,首先,获取源数据库中的其中一条待同步数据的路径信息,然后,根据该路径信息采用SQL脚本从源数据库提取该条待同步数据,最后,将该条待同步数据作为当前的待同步数据。
S20:基于kettle将当前待同步数据同步到目标数据库中,得到同步结果。
在本实施例中,Kettle,全称为Kettle ETTL Envirnonment,是一款ETL工具,可以作为数据同步的工具。ELT的全称为Extract-Transform-Load,是指按照统一的规则将数据从数据源向目标数据仓库转化的技术。同步结果包括同步成功和同步失败。
具体地,基于kettle将当前待同步数据同步到目标数据库中,得到同步结果为同步成功或同步结果为同步失败。
S30:检测同步结果是同步成功还是同步失败。
具体地,检测同步结果是同步成功还是同步失败,也即,判断同步结果与同步成功是否一致,若一致,则检测同步结果为同步成功,若不一致,则检测同步结果为同步失败。
S40:若同步结果为同步成功,则在直到源数据库中所有待同步数据均被成功同步到目标数据库中之前将源数据库中的下一条待同步数据确定为新的当前待同步数据。
具体地,若同步结果为同步成功,则首先,判断源数据库中所有待同步数据是否均被成功同步到目标数据库中,若是,则停止本次同步操作,若否,则将源数据库中的下一条未同步的待同步数据确定为当前待同步数据,并返回执行步骤S20,直到各条待同步数据均被成功同步到目标数据库中为止。
需要说明的是,未同步的待同步数据可以通过打标签方式与已同步的待同步数据区分开来,未同步的待同步数据的标签号可以为0,已同步的待同步数据的标签号可以为1,标签号的具体内容,可以根据实际应用进行设定,此处不做限制。
S50:若同步结果为同步失败,则记录同步失败原因,根据同步失败原因更新目标数据库,以使当前待同步数据被成功同步到目标数据库中,并在直到源数据库中所有待同步数据均被成功同步到目标数据库中之前将源数据库中的下一条待同步数据确定为新的当前待同步数据。
在本实施例中,同步失败原因包括数据长度不对称和数据表不存在。
具体地,若同步结果为同步失败,则记录同步失败原因,根据同步失败原因的不同情况更新目标数据库,以使得当前待同步数据能够被成功同步到目标数据库中,并判断源数据库中所有待同步数据是否均被成功同步到目标数据库中,若是,则停止本次同步操作,若否,则将源数据库中的下一条未同步的待同步数据确定为当前待同步数据,并返回执行步骤S20,直到各条待同步数据均被成功同步到目标数据库中为止。
在图2对应的实施例中,首先,通过将源数据库中一条待同步数据作为当前待同步数据,然后,基于kettle将当前待同步数据同步到目标数据库中,得到同步结果,接下来,检测同步结果是同步成功还是同步失败,最后,确定同步成功,将未同步的待同步数据确定为当前待同步数据,或确定同步失败,记录同步失败原因,根据同步失败原因更新目标数据库,通过基于高效稳定的kettle将源数据迅速地同步到目标数据库中,当同步成功时,获取下一条源数据同步到目标数据库中,直到各条待同步数据均被成功同步到目标数据库中,当同步失败时,根据同步失败的不同情况更新目标数据库,重新将同步失败对应的源数据同步到目标数据库中,直到各条待同步数据均被成功同步到目标数据库中,从而不需要人工花费时间找出同步失败的原因,人工花费时间加以解决同步失败的问题,进而提高了数据同步的效率。
在一实施例中,该数据同步方法应用在金融行业中,同步失败原因为数据长度不对称或数据表不存在,在确定同步失败原因为数据长度不对称或数据表不存在之前,需要检查同步失败原因是数据长度不对称还是数据表不存在,步骤S40中,即同步失败原因更新目标数据库,具体包括如下步骤:
S401:若确定同步失败原因为数据长度不对称,则将目标数据库中同步位置的空间长度增长至目标长度,同步位置是指当前待同步数据要同步到目标数据库中的位置,目标长度大于或等于当前待同步数据的长度。
在本实施例中,数据长度不对称是指当前待同步数据的长度与目标数据的长度不对称,即数据长度不对称是指当前待同步数据的长度比目标数据的长度更长。
具体地,若同步失败原因为数据长度不对称,则采用数据库锁机制,将目标数据库锁住,然后,将目标数据库中同步位置的空间长度增长至目标长度,以便足以存储当前待同步数据,最后,将目标数据库解锁,其中,同步位置是指当前待同步数据要同步到目标数据库中的位置,目标长度大于或等于当前待同步数据的长度。
需要说明的是,数据库锁机制是指当在预设时间段内一个数据库正在被一个用户访问时,对该数据库加锁,另一个用户在该预设时间段内不能同时对该数据库进行访问。
S402:若确定同步失败原因为数据表不存在,则在目标数据库中新建一个目标数据表,目标数据表的空间大小与当前待同步数据所属源表的空间大小相同。
具体地,若同步失败原因为数据表不存在,则先获得源数据库中当前待同步数据所属源表的空间大小,然后采用SQL脚本在目标数据库中,新建一个与该当前待同步数据空间大小相同的目标数据表。
为了更好地理解步骤S60,下面通过一个例子进行说明,具体表述如下:
例如,假设源数据库为mysql数据库,当前待同步数据所属源表的空间大小为1020字符存储空间,目标数据库为oracle数据库,同步失败原因为数据表不存在,数据表不存在具体为SQL:ErrorTablex“syllabus”'doesn'texist'onquery.Defaultdatabase:’t591'.Query:INSERTINTO`“syllabus”`(type,post_id,browsenum)SELECTtype,post_id,browsenumFROM“syllabus”WHERE hitdate='20090209”,Error_code:1146,则,先获得mysql数据库中1020字符存储空间,然后采用CREATE TABLE syllabus
(
Englishs varchar(255),
maths varchar(255),
physics varchar(255),
chemistry varchar(255)
),在oracle数据库中,新建一个与1020字符存储空间相同的syllabus,其中,CREATE TABLE为SQL语句,代表创建表格,syllabus为表格名称,Englishs varchar(255)、maths varchar(255)、physics varchar(255)和chemistry varchar(255)的组合为表格内容,Englishs varchar(255)是指科目英语,占255个字符存储空间,maths varchar(255)是指科目数学,占255个字符存储空间,physics varchar(255)是指科目物理,占255个字符存储空间,chemistry varchar(255)是指科目化学,占255个字符存储空间。
在本实施例中,当同步失败原因为数据长度不对称时,将目标数据库中同步位置的空间长度增长至目标长度,同步位置是指当前待同步数据要同步到目标数据库中的位置,目标长度大于或等于当前待同步数据的长度,若确定同步失败原因为数据表不存在,则在目标数据库中新建一个目标数据表,目标数据表的空间大小与当前待同步数据所属源表的空间大小相同,通过当确定数据同步失败的原因是数据长度不对称时,将目标数据库锁住,然后,再将未同步到的目标数据对应的空间长度增长到当前待同步数据的长度,当确定数据同步失败的原因是数据表不存在时,将目标数据库锁住,然后,再新建一个与当前待同步数据所在的源表对应的空间大小相同的目标表,从而可以避免正在进行操作目标数据库存储空间分配时受到外界影响,进而保证了数据同步的准确性。
在一实施例中,该数据同步方法应用在金融行业中,如图3所示,在步骤S20前,该数据同步方法还包括如下步骤:
S50:判断当前待同步数据的数据类型与目标数据库中的目标数据的数据类型是否一致。
在本实施例中,数据类型包括字符型、数值型和日期型。
具体地,首先,获得目标数据的路径信息,然后,根据该路径信息采用SQL脚本从目标数据库提取该条目标数据,最后,对比当前待同步数据的数据类型与目标数据库中的目标数据的数据类型是否一致。
S60:若不一致,则按照预设的转换方式将目标数据的数据类型转换成当前待同步数据的数据类型,得到转换后的目标数据。
在本实施例中,预设的转换方式可以为将中文转换为英文和阿拉伯数字的组合,预设的转换方式的具体内容,可以根据实际应用进行设定,此处不做限制。
具体地,若当前待同步数据的数据类型与目标数据库中的目标数据的数据类型不一致,则按照预设的转换方式采用SQL脚本将目标数据的数据类型转换成当前待同步数据的数据类型,得到转换后的目标数据,并确定转换成功。
为了更好地理解步骤S60,下面通过一个例子进行说明,具体表述如下:
例如,假设当前待同步数据的数据类型为字符型,当前待同步数据具体为二零一八年二月二日十点十分十秒,目标数据库为mysql数据库,目标数据的数据类型为数值型,目标数据的数据类型具体为yyyy-mm-dd hh24:mi:ss,YYYY为年份,mm为月份,dd为日,hh24为24小时制,mi为分,ss为秒,SQL脚本为select char to_sysdate(sysdate,'yyyy-mm-ddhh24:mi:ss')from dual,预设的转换方式为将中文转换为英文和阿拉伯数字的组合,则确定字符型与mysql数据库中的数值型不一致,则按照将中文转换为英文和阿拉伯数字的组合的转换方式采用select char to_sysdate(sysdate,'yyyy-mm-dd hh24:mi:ss')fromdual将字符型转换成数值型,得到2018-02-02 10:10:10,并确定转换成功。
S70:若一致,则将当前待同步数据与目标数据进行全量比对,得到比对结果。
在本实施例中,全量比对是指两个数据进行全面的比较。比对结果包括多、少、一致和不一致。
需要说明的是,全量比对是按位进行比较。
具体地,若当前待同步数据的数据类型与目标数据库中的目标数据的数据类型一致或确定转换成功,则将当前待同步数据与目标数据进行按位全量比对,得到多、少、一致或不一致。
S80:根据比对结果确定待同步数据对应的同步类型。
在本实施例中,同步类型包括数据增加、数据删除、数据不变和数据更新。
具体地,若当前待同步数据比目标数据库中的目标数据多,则待同步数据对应的同步类型为数据增加;若当前待同步数据比目标数据库中的目标数据少,则待同步数据对应的同步类型为数据删除;若当前待同步数据与目标数据库中的目标数据一致,则待同步数据对应的同步类型为数据不变;若当前待同步数据与目标数据库中的目标数据不一致,则待同步数据对应的同步类型为数据更新。
在图3对应的实施例中,通过判断当前待同步数据的数据类型与未被同步的目标数据的数据类型是否一致,若不一致,则将目标数据的数据类型转换为当前待同步数据的数据类型,并确定转换成功若一致或确定转换成功,则将待同步数据与目标数据进行全量比对,得到比对结果,根据比对结果确定待同步数据对应的同步类型,当数据类型不一致时,将目标数据的数据类型与当前待同步数据的数据类型进行统一类型,保证了数据能够同步,当数据类型一致时,待同步数据与目标数据进行按位全量比对,确定出待同步数据比目标数据多,或当前待同步数据比目标数据少,或前待同步数据与目标数据一致,当前待同步数据与目标数据不一致,从而可以确定出操作动作为复制、删除、保持或更新,进而提高了数据的操纵性。
在一实施例中,该数据同步方法应用在金融行业中,步骤S20具体为基于kettle将当前待同步数据同步到目标数据库中,得到同步结果具体包括如下步骤:
S201:若确定同步类型为数据增加,则基于kettle将当前待同步数据与目标数据相比的增量信息复制到目标数据库中,按照预设的拼接方式将目标数据与增量信息进行拼接处理,得到拼接后的目标数据,并确定同步结果为同步成功,若执行所述基于kettle将当前待同步数据与目标数据相比的增量信息复制到所述目标数据库中的步骤失败,则确定同步结果为同步失败。
在本实施例中,预设的拼接方式可以为将两个数据进行连接,预设的拼接方式的具体内容,可以根据实际应用进行设定,此处不做限制。
具体地,若同步类型为数据增加,则基于kettle将当前待同步数据与目标数据库中的目标数据相比的增量信息复制到目标数据库中,同时确定复制成功,按照预设的拼接方式将该目标数据与该复制成功的增量信息进行拼接处理,得到拼接后的目标数据,并确定同步结果为同步成功,若执行所述基于kettle将当前待同步数据与目标数据相比的增量信息复制到所述目标数据库中的步骤失败,则确定同步结果为同步失败。
为了更好地理解步骤S60,下面通过一个例子进行说明,具体表述如下:
例如,假设源数据库为第一mysql数据库,待同步数据为“NAME=张三丰”,目标数据库为第二mysql数据库,目标数据为“NAME=张三”,其中,add2为kettle的增加数据的判断条件图元,add为kettle的增加数据图元,mod_del为kettle的撤回数据图元,add_rec为增量信息,具体为“add_rec=丰”,则基于kettle将第一mysql数据库种的“NAME=张三丰”与“NAME=张三”相比的“add_rec=丰”复制到第二mysql数据库中,将“add_rec=丰”赋予给kettle的标签图元flagfield,得到“flagfield=丰”,按照“flagfield=丰”和add连接的拼接方式将“NAME=张三”与“add_rec=丰”进行拼接处理,得到拼接后的“NAME=张三丰”,并确定同步结果为同步成功,若执行所述基于kettle将第一mysql数据库种的“NAME=张三丰”与“NAME=张三”相比的“add_rec=丰”复制到第二mysql数据库中的步骤失败,则确定同步结果为同步失败。
S202:若确定同步类型为数据删除,则基于kettle将目标数据与当前待同步数据相比的增量信息删除,得到删除后的目标数据,并确定同步结果为同步成功,若执行所述基于kettle将目标数据与当前待同步数据相比的增量信息删除的步骤失败,则确定同步结果为同步失败。
具体地,若同步类型为数据删除,则基于kettle将目标数据库中的目标数据与当前待同步数据相比的增量信息删除,得到删除后的目标数据,并确定同步结果为同步成功,若执行所述基于kettle将目标数据库中的目标数据与当前待同步数据相比的增量信息删除的步骤失败,则确定同步结果为同步失败。
S203:若同步类型为数据不变,则基于kettle保持目标数据不变,得到保持后的目标数据,并确定同步结果为同步成功,若执行所述基于kettle保持目标数据不变的步骤失败,则确定同步结果为同步失败。
具体地,若同步类型为数据不变,则基于kettle保持目标数据库中的目标数据不变,得到保持后的目标数据,并确定同步结果为同步成功,若执行所述基于kettle保持目标数据不变的步骤失败,则确定同步结果为同步失败。
S204:若同步类型为数据更新,则基于kettle将当前待同步数据替代目标数据,得到替代后的目标数据,并确定同步结果为同步成功,若执行所述基于kettle将当前待同步数据替代目标数据的步骤失败,则确定同步结果为同步失败。
具体地,若同步类型为数据更新,则基于kettle将当前待同步数据替代目标数据库中的目标数据,得到替代后的目标数据,并确定同步结果为同步成功,若执行所述基于kettle将当前待同步数据替代目标数据的步骤失败,则确定同步结果为同步失败。
在本实施例中,当同步类型为数据增加时,则基于kettle将当前待同步数据与目标数据相比的增量信息复制到目标数据库中,按照预设的拼接方式将目标数据与增量信息进行拼接处理,得到拼接后的目标数据,并确定同步结果为同步成功,反之,则确定同步结果为同步失败,当同步类型为数据删除时,则基于kettle将目标数据与当前待同步数据相比的增量信息删除,得到删除后的目标数据,并确定同步结果为同步成功,反之,则确定同步结果为同步失败,当同步类型为数据不变,则基于kettle保持目标数据不变,得到保持后的目标数据,并确定同步结果为同步成功,反之,则确定同步结果为同步失败,当同步类型为数据更新时,则基于kettle将当前待同步数据替代目标数据,得到替代后的目标数据,并确定同步结果为同步成功,反之,则确定同步结果为同步失败,通过根据同步类型的不同情况,基于高效稳定的kettle将目标数据做对应的不同修正,高效将待同步数据同步到目标数据库中,从而能够提高了数据同步的效率。
在一实施例中,该数据同步方法应用在金融行业中,如图4所示,在步骤S10前,该数据同步方法还包括如下步骤:
S90:检测当前同步时间是否在预设时间段内。
在本实施例中,当前同步时间是指系统当前时间。
需要说明的是,若在预设时间段之内,则允许数据同步,若在预设时间段之外,则不允许数据同步。
具体地,获取当前系统时间作为当前同步时间,若当前同步时间大于或等于预设时间段的开始值且小于或等于预设时间段的结束值,则被认为当前同步时间在预设时间段内;若当前同步时间小于预设时间段的开始值或大于预设时间段的结束值,则被认为当前同步时间不在预设时间段内。
S100:若当前同步时间是在预设时间段内,则删除历史同步数据。
在本实施例中,在历史数据同步过程中,会加载历史同步数据信息到数据同步程序的临时数据库,当新的数据信息需要同步时,则必须先清除临时数据库中的内容。
具体地,若当前同步时间是在预设时间段内,则删除数据同步程序的临时数据库中的历史同步数据信息。
若当前同步时间不是在预设时间段内,则停止本次数据同步程序。
S110:连接源数据库。
具体地,采用SQL命令连接源数据库。
为了更好地理解步骤S10,下面通过一个例子进行说明,具体表述如下:
例如,假设源数据库为mysql数据库,mysql数据库的IP为:172.16.0.220,用户名为root,密码为abcd123则采用mysql-h172.16.0.220-u root-p 123命令连接mysql数据库。
S120:若连接源数据库成功,则基于SPOON将源数据库指向目标数据库,SPOON基于kettle预先生成得到。
在本实施例中,SPOON是Kettle中的一个具有图形化界面的数据转换的组件。
具体地,若连接源数据库成功,则基于SPOON将源数据库指向目标数据库,SPOON基于kettle预先生成得到;若连接源数据库失败,则返回执行步骤S110。
为了更好地理解步骤S120,下面通过一个例子进行说明,具体表述如下:
例如,假设源数据库为MySql数据库,目标数据库为Oracle数据库,则,采用SPOON将MySql数据库指向Oracle数据库。
在图4对应的实施例中,通过检测当前同步时间是否在预设时间段内,若当前同步时间是在预设时间段内,则删除历史同步数据,然后,连接源数据库,若连接源数据库成功,则基于SPOON将源数据库指向目标数据库,通过确定当前同步时间是否是允许同步的时间,当确定是允许同步的时间,则删除数据同步程序中干扰新的数据同步的历史数据,从而保证新的数据信息同步时不会受到其他数据干扰,然后,连接源数据库,以便获取待同步数据,通过基于直观可视化的图形界面的SPOON将源数据库指向目标数据库,从而可以避免待同步数据在预设的时间段内因受到干扰而难以获取,进而提高了数据同步的实效性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种数据同步装置,该数据同步装置与上述实施例中数据同步方法一一对应。如图5所示,该数据同步装置包括获取模块101、同步模块102、第一检测模块103、第一确定模块104、更新模块105、判断模块106、转换模块107、比对模块108、第二确定模块109、检测模块110、删掉模块111、连接模块112和指向模块113。各功能模块详细说明如下:
获取模块101,用于获取源数据库中的各条待同步数据的一条待同步数据作为当前待同步数据;
同步模块102,用于基于kettle将当前待同步数据同步到目标数据库中,得到同步结果;
第一检测模块103,用于检测同步结果是同步成功还是同步失败;
第一确定模块104,用于若同步结果为同步成功,则在直到源数据库中所有待同步数据均被成功同步到目标数据库中之前将源数据库中的下一条待同步数据确定为新的当前待同步数据;
更新模块105,用于同步结果为同步失败,则记录同步失败原因,根据同步失败原因更新目标数据库,以使当前待同步数据被成功同步到目标数据库中,并在直到源数据库中所有待同步数据均被成功同步到目标数据库中之前将源数据库中的下一条待同步数据确定为新的当前待同步数据;
判断模块106,用于判断当前待同步数据的数据类型与目标数据库中的目标数据的数据类型是否一致;
转换模块107,用于若不一致,则按照预设的转换方式将目标数据的数据类型转换成当前待同步数据的数据类型,得到转换后的目标数据;
比对模块108,用于若一致,则将待同步数据与目标数据进行全量比对,得到比对结果;
第二确定模块109,用于根据比对结果确定待同步数据对应的同步类型;
第二检测模块110,用于检测当前同步时间是否在预设时间段内;
删掉模块111,用于若当前同步时间是在预设时间段内,则删除历史同步数据;
连接模块112,用于连接源数据库;
指向模块113,用于若连接源数据库成功,则基于SPOON将源数据库指向目标数据库,SPOON基于kettle预先生成得到。
进一步地,更新模块105包括:
增长子模块1051,用于若确定同步失败原因为数据长度不对称,则将未同步到的目标数据对应的空间长度增长到当前待同步数据的长度;
建立子模块1052,用于若同步失败原因为数据表不存在,则在目标数据库中,新建一个与当前待同步数据所在的源表对应的空间大小相同的目标表。
进一步地,同步模块102包括:
复制子模块1021,用于若确定同步类型为数据增加,则基于kettle将当前待同步数据与目标数据相比的增量信息复制到目标数据库中,按照预设的拼接方式将目标数据与增量信息进行拼接处理,得到拼接后的目标数据,并确定同步结果为同步成功,若执行所述基于kettle将当前待同步数据与目标数据相比的增量信息复制到目标数据库中的步骤失败,则确定同步结果为同步失败;
删除子模块1022,用于若确定同步类型为所述数据删除,则基于kettle将目标数据与当前待同步数据相比的增量信息删除,得到删除后的目标数据,并确定同步结果为同步成功,若执行所述基于kettle将目标数据与当前待同步数据相比的增量信息删除的步骤失败,则确定同步结果为同步失败;
保持子模块1023,用于若同步类型为所述数据不变,则基于kettle保持目标数据不变,得到保持后的目标数据,并确定同步结果为同步成功,若执行所述基于kettle保持目标数据不变的步骤失败,则确定同步结果为同步失败;
替代子模块1024,用于若同步类型为数据更新,则基于kettle将当前待同步数据替代目标数据,得到替代后的目标数据,并确定同步结果为同步成功,若执行所述基于kettle将当前待同步数据替代目标数据的步骤失败,则确定同步结果为同步失败。
关于数据同步装置的具体限定可以参见上文中对于数据同步方法的限定,在此不再赘述。上述数据同步装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据同步方法涉及到的数据信息。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据同步方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例数据同步方法的步骤,例如图2所示的步骤S10至步骤S40。或者,处理器执行计算机程序时实现上述实施例中数据同步装置的各模块/单元的功能,例如图5所示获取模块101至指向模块113的功能。为避免重复,这里不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例中数据同步方法,或者,该计算机程序被处理器执行时实现上述装置实施例中数据同步装置中各模块/单元的功能。为避免重复,这里不再赘述。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (8)
1.一种数据同步方法,其特征在于,所述数据同步方法包括:
将源数据库中一条待同步数据作为当前待同步数据;
判断所述当前待同步数据的数据类型与目标数据库中的目标数据的数据类型是否一致;
若不一致,则按照预设的转换方式将所述目标数据的数据类型转换成所述当前待同步数据的数据类型,得到转换后的目标数据;
若一致,则将所述当前待同步数据与所述目标数据进行全量比对,得到比对结果;
根据所述比对结果确定所述待同步数据对应的同步类型;其中,所述同步类型包括数据增加、数据删除、数据不变或数据更新;
若确定所述同步类型为所述数据增加,则基于kettle将所述当前待同步数据与所述目标数据相比的增量信息复制到所述目标数据库中,按照预设的拼接方式将所述目标数据与所述增量信息进行拼接处理,得到拼接后的目标数据,并确定所述同步结果为同步成功,若执行所述基于kettle将所述当前待同步数据与所述目标数据相比的增量信息复制到所述目标数据库中的步骤失败,则确定所述同步结果为同步失败;
若确定所述同步类型为所述数据删除,则基于kettle将所述目标数据与所述当前待同步数据相比的增量信息删除,得到删除后的目标数据,并确定所述同步结果为同步成功,若执行所述基于kettle将所述目标数据与所述当前待同步数据相比的增量信息删除的步骤失败,则确定所述同步结果为同步失败;
若所述同步类型为所述数据不变,则基于kettle保持所述目标数据不变,得到保持后的目标数据,并确定所述同步结果为同步成功,若执行所述基于kettle保持所述目标数据不变的步骤失败,则确定所述同步结果为同步失败;
若所述同步类型为所述数据更新,则基于kettle将所述当前待同步数据替代所述目标数据,得到替代后的目标数据,并确定所述同步结果为同步成功,若执行所述基于kettle将所述当前待同步数据替代所述目标数据的步骤失败,则确定所述同步结果为同步失败;
检测所述同步结果是同步成功还是同步失败;
若所述同步结果为所述同步成功,则在直到所述源数据库中所有待同步数据均被成功同步到所述目标数据库中之前将所述源数据库中的下一条待同步数据确定为新的当前待同步数据;
若所述同步结果为所述同步失败,则记录同步失败原因,根据所述同步失败原因更新所述目标数据库,以使所述当前待同步数据被成功同步到所述目标数据库中,并在直到所述源数据库中所有待同步数据均被成功同步到所述目标数据库中之前将所述源数据库中的下一条待同步数据确定为新的当前待同步数据。
2.如权利要求1所述的数据同步方法,其特征在于,所述同步失败原因为数据长度不对称或数据表不存在,所述根据所述同步失败原因更新所述目标数据库具体包括:
若确定所述同步失败原因为所述数据长度不对称,则将所述目标数据库中同步位置的空间长度增长至目标长度,所述同步位置是指所述当前待同步数据要同步到所述目标数据库中的位置,所述目标长度大于或等于所述当前待同步数据的长度;
若确定所述同步失败原因为所述数据表不存在,则在所述目标数据库中新建一个目标数据表,所述目标数据表的空间大小与所述当前待同步数据所属源表的空间大小相同。
3.如权利要求1或2所述的数据同步方法,其特征在于,在所述将源数据库中一条待同步数据作为当前待同步数据之前,所述数据同步方法还包括:
检测当前同步时间是否在预设时间段内;
若所述当前同步时间是在预设时间段内,则删除历史同步数据;
连接所述源数据库;
若连接所述源数据库成功,则基于SPOON将所述源数据库指向所述目标数据库,SPOON基于kettle预先生成得到。
4.一种数据同步方法装置,其特征在于,所述数据同步方法装置包括:
获取模块,用于将源数据库中一条待同步数据作为当前待同步数据;
同步模块,用于判断所述当前待同步数据的数据类型与目标数据库中的目标数据的数据类型是否一致;若不一致,则按照预设的转换方式将所述目标数据的数据类型转换成所述当前待同步数据的数据类型,得到转换后的目标数据;若一致,则将所述当前待同步数据与所述目标数据进行全量比对,得到比对结果;根据所述比对结果确定所述待同步数据对应的同步类型;其中,所述同步类型包括数据增加、数据删除、数据不变或数据更新;
所述同步模块,还用于若确定所述同步类型为所述数据增加,则基于kettle将所述当前待同步数据与所述目标数据相比的增量信息复制到所述目标数据库中,按照预设的拼接方式将所述目标数据与所述增量信息进行拼接处理,得到拼接后的目标数据,并确定所述同步结果为同步成功,若执行所述基于kettle将所述当前待同步数据与所述目标数据相比的增量信息复制到所述目标数据库中的步骤失败,则确定所述同步结果为同步失败;若确定所述同步类型为所述数据删除,则基于kettle将所述目标数据与所述当前待同步数据相比的增量信息删除,得到删除后的目标数据,并确定所述同步结果为同步成功,若执行所述基于kettle将所述目标数据与所述当前待同步数据相比的增量信息删除的步骤失败,则确定所述同步结果为同步失败;若所述同步类型为所述数据不变,则基于kettle保持所述目标数据不变,得到保持后的目标数据,并确定所述同步结果为同步成功,若执行所述基于kettle保持所述目标数据不变的步骤失败,则确定所述同步结果为同步失败;若所述同步类型为所述数据更新,则基于kettle将所述当前待同步数据替代所述目标数据,得到替代后的目标数据,并确定所述同步结果为同步成功,若执行所述基于kettle将所述当前待同步数据替代所述目标数据的步骤失败,则确定所述同步结果为同步失败;
第一检测模块,用于检测所述同步结果是同步成功还是同步失败;
第一确定模块,用于若所述同步结果为同步成功,则在直到所述源数据库中所有待同步数据均被成功同步到所述目标数据库中之前将所述源数据库中的下一条待同步数据确定为新的当前待同步数据;
更新模块,用于所述同步结果为同步失败,则记录同步失败原因,根据所述同步失败原因更新所述目标数据库,以使所述当前待同步数据被成功同步到所述目标数据库中,并在直到所述源数据库中所有待同步数据均被成功同步到所述目标数据库中之前将所述源数据库中的下一条待同步数据确定为新的当前待同步数据。
5.如权利要求4所述的数据同步方法装置,其特征在于,所述同步失败原因包括数据长度不对称和数据表不存在,所述更新模块包括:
增长子模块,用于若确定所述同步失败原因为所述数据长度不对称,则将所述目标数据库中同步位置的空间长度增长至目标长度,所述同步位置是指所述当前待同步数据要同步到所述目标数据库中的位置,所述目标长度大于或等于所述当前待同步数据的长度目标数据;
建立子模块,用于若确定所述同步失败原因为所述数据表不存在,则在所述目标数据库中新建一个目标数据表,所述目标数据表的空间大小与所述当前待同步数据所属源表的空间大小相同。
6.如权利要求4或5所述的数据同步方法装置,其特征在于,在所述基于kettle将所述当前待同步数据同步到目标数据库中之前,所述数据同步方法装置还包括:
判断模块,用于判断所述当前待同步数据的数据类型与所述目标数据库中的目标数据的数据类型是否一致;
转换模块,用于若不一致,则按照预设的转换方式将所述目标数据的数据类型转换成所述当前待同步数据的数据类型,得到转换后的目标数据;
比对模块,用于若一致,则将所述当前待同步数据与所述目标数据进行全量比对,得到比对结果;
第二确定模块,用于根据所述比对结果确定所述待同步数据对应的同步类型。
7.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至3中任一项所述数据同步方法的步骤。
8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至3中任一项所述数据同步方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810606715.XA CN109086295B (zh) | 2018-06-13 | 2018-06-13 | 数据同步方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810606715.XA CN109086295B (zh) | 2018-06-13 | 2018-06-13 | 数据同步方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109086295A CN109086295A (zh) | 2018-12-25 |
CN109086295B true CN109086295B (zh) | 2023-05-30 |
Family
ID=64839488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810606715.XA Active CN109086295B (zh) | 2018-06-13 | 2018-06-13 | 数据同步方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109086295B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109783580A (zh) * | 2019-01-24 | 2019-05-21 | 北京致远互联软件股份有限公司 | 数据同步方法及装置 |
CN110162461B (zh) * | 2019-04-16 | 2023-08-15 | 平安科技(深圳)有限公司 | 数据同步验证方法、装置和计算机设备 |
CN110443034B (zh) * | 2019-08-05 | 2021-09-14 | 中国工商银行股份有限公司 | 风险程序文件的识别方法、装置、计算设备以及介质 |
CN110928947A (zh) * | 2019-10-16 | 2020-03-27 | 中国平安财产保险股份有限公司 | 基于kettle的数据同步方法、装置及相关设备 |
CN111178028A (zh) * | 2019-12-11 | 2020-05-19 | 深圳金赋科技有限公司 | 一种财务数据的清洗方法、设备及存储介质 |
CN111125065B (zh) * | 2019-12-24 | 2023-09-12 | 阳光人寿保险股份有限公司 | 可视化数据同步方法、系统、终端和计算机可读存储介质 |
CN111309806B (zh) * | 2020-02-05 | 2021-07-23 | 杭州数梦工场科技有限公司 | 数据同步方法、装置、电子设备、存储介质 |
CN111400104B (zh) * | 2020-03-24 | 2021-09-28 | 杭州数梦工场科技有限公司 | 数据同步方法及装置、电子设备、存储介质 |
CN112000733A (zh) * | 2020-07-17 | 2020-11-27 | 杭州海康威视数字技术股份有限公司 | 图数据存储的方法和装置 |
CN112422682A (zh) * | 2020-11-18 | 2021-02-26 | 青岛海尔科技有限公司 | 数据发送方法及装置、存储介质、电子装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107040578A (zh) * | 2016-12-30 | 2017-08-11 | 平安科技(深圳)有限公司 | 数据同步方法、装置和系统 |
CN107368503A (zh) * | 2016-05-13 | 2017-11-21 | 北京京东尚科信息技术有限公司 | 基于Kettle的数据同步方法和系统 |
CN107679058A (zh) * | 2017-06-26 | 2018-02-09 | 平安科技(深圳)有限公司 | 数据同步方法、装置及计算机可读存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103354560B (zh) * | 2013-06-28 | 2017-05-17 | 广州市动景计算机科技有限公司 | 数据的分解同步方法及系统 |
-
2018
- 2018-06-13 CN CN201810606715.XA patent/CN109086295B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368503A (zh) * | 2016-05-13 | 2017-11-21 | 北京京东尚科信息技术有限公司 | 基于Kettle的数据同步方法和系统 |
CN107040578A (zh) * | 2016-12-30 | 2017-08-11 | 平安科技(深圳)有限公司 | 数据同步方法、装置和系统 |
CN107679058A (zh) * | 2017-06-26 | 2018-02-09 | 平安科技(深圳)有限公司 | 数据同步方法、装置及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109086295A (zh) | 2018-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109086295B (zh) | 数据同步方法、装置、计算机设备及存储介质 | |
US11416344B2 (en) | Partial database restoration | |
CN107391758B (zh) | 数据库切换方法、装置及设备 | |
US10031816B2 (en) | Systems and methods for healing images in deduplication storage | |
US8874515B2 (en) | Low level object version tracking using non-volatile memory write generations | |
US20140095432A1 (en) | Schema versioning for cloud hosted databases | |
US9454590B2 (en) | Predicting validity of data replication prior to actual replication in a transaction processing system | |
US20110082835A1 (en) | Periodic file system checkpoint manager | |
US11886298B2 (en) | Using a storage log to generate an incremental backup | |
CN109460438B (zh) | 消息数据存储方法、装置、计算机设备和存储介质 | |
US20190121793A1 (en) | Data updating method and device for a distributed database system | |
EP2797001B1 (en) | System and method for creating variants in a test database during various test stages | |
CN109462661B (zh) | 数据同步方法、装置、计算机设备和存储介质 | |
US8595271B1 (en) | Systems and methods for performing file system checks | |
CN102073554A (zh) | 一种文件异常关闭的恢复方法和装置 | |
CN111090701B (zh) | 业务请求处理方法、装置、可读存储介质和计算机设备 | |
CN110287183B (zh) | 数据库表水位的处理方法、装置、计算机设备及存储介质 | |
CN115277677B (zh) | 批量档案挂接方法、装置、计算机设备及存储介质 | |
CN115658391A (zh) | 基于QianBase MPP数据库的WAL机制的备份恢复方法 | |
CN111209138A (zh) | 数据存储系统的运维方法及装置 | |
US20230214301A1 (en) | Copy Data Management System and Method for Modern Application | |
US7647362B1 (en) | Content-based file versioning | |
US20150249708A1 (en) | System and method for asynchronous replication of a storage in a computing environment | |
US20170300387A1 (en) | Always Current backup and recovery method on large databases with minimum resource utilization. | |
CN115374218B (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 |