一种数据同步的装置及方法

文档序号:8361581阅读:309来源:国知局
一种数据同步的装置及方法
【技术领域】
[0001]本发明涉及数据处理技术领域,特别涉及一种数据同步的装置及方法。
【背景技术】
[0002]Sqoop是一个数据相互转移的工具,可以将一个关系型数据库中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
[0003]针对大数据平台中,利用sqoop针对关系型数据库与非关系型数据库间进行数据同步过程中,当源数据库中的数据需要分别同步到多个目标数据库中时,需要将sqoop分别与不同的目标数据库单独相连,实现数据同步。举例来说,当源数据库中的数据需要分别同步到两个目标数据库中时,将源数据库与sqoop相连,再将sqoop与第一个目标数据库相连,然后,将源数据库中的数据通过sqoop同步到第一个目标数据库中,同步完成后,将sqoop与第一个目标数据库断开,再将sqoop与第二个目标数据库相连,将源数据库中的数据通过sqoop同步到第二个目标数据库中。
[0004]通过上述描述可见,现有技术中,将数据源中的数据通过sqoop同步到多个目标数据库中时,数据同步的效率较低。

【发明内容】

[0005]有鉴于此,本发明提供了一种数据同步的装置及方法,能够提高数据同步的效率。
[0006]一方面,本发明提供了一种数据同步的装置,包括:
[0007]数据源与sqoop相连,所述sqoop与消息队列MQ相连,所述MQ与至少一个目标数据库相连;
[0008]所述sqoop,用于获取所述数据源中的带有预设标签的待同步的数据,并对所述待同步的数据进行同步处理,将处理后的数据发送给所述MQ ;
[0009]所述MQ,用于接受所述目标数据库对用于标识数据的标签的订阅,根据所述预设标签,将所述sqoop发来的数据,发送给所述订阅所述预设标签的目标数据库。
[0010]进一步地,所述MQ,还用于接收所述目标数据库发来的接收数据失败的失败消息,并当在发送所述sqoop发来的数据后的第一预设时间内接收到所述失败消息时,向所述失败消息对应的目标数据库发送所述失败消息对应的数据。
[0011]进一步地,所述sqoop,还用于获取所述数据源的数据库同步日志,将所述数据库同步日志发送给所述MQ;
[0012]所述MQ,用于将所述数据库同步日志发送给所述目标数据库,并将所述数据库同步日志保存第二预设时间。
[0013]进一步地,所述MQ,用于接收所述至少一个目标数据库发来的订阅的标签的信息,根据所述订阅的标签的信息,建立标签与目标数据库的对应关系,根据所述预设标签,将所述sqoop发来的数据,发送给所述预设标签对应的目标数据库。
[0014]进一步地,所述MQ,用于将所述sqoop发来的数据进行数据分割得到分割后的子数据,将得到的每个子数据进行数据封装,将封装后的子数据写入到MQ的队列中,读取所述队列,将读取的队列中的数据进行包封装得到数据包,将所述数据包发送给所述目标数据库。
[0015]另一方面,本发明提供了一种数据同步的方法,包括:
[0016]S1:sq00p获取所述数据源中的带有预设标签的待同步的数据,并对所述待同步的数据进行同步处理,将处理后的数据发送给消息队列MQ ;
[0017]S2:所述MQ接受所述目标数据库对用于标识数据的标签的订阅,根据所述预设标签,将所述sqoop发来的数据,发送给所述订阅所述预设标签的目标数据库。
[0018]进一步地,还包括:
[0019]所述MQ接收所述目标数据库发来的接收数据失败的失败消息,并当在发送所述sqoop发来的数据后的第一预设时间内接收到所述失败消息时,向所述失败消息对应的目标数据库发送所述失败消息对应的数据。
[0020]进一步地,还包括:
[0021]所述sqoop获取所述数据源的数据库同步日志,将所述数据库同步日志发送给所述MQ ;
[0022]所述MQ将所述数据库同步日志发送给所述目标数据库,并将所述数据库同步日志保存第二预设时间。
[0023]进一步地,在所述步骤SI之前还包括:
[0024]所述MQ接收所述至少一个目标数据库发来的订阅的标签的信息;
[0025]所述MQ根据所述订阅的标签的信息,建立所述标签与目标数据库的对应关系;
[0026]所述S2,包括:
[0027]所述MQ根据所述预设标签,将所述sqoop发来的数据,发送给所述预设标签对应的目标数据库。
[0028]进一步地,所述S2包括:
[0029]所述MQ将所述sqoop发来的数据进行数据分割得到分割后的子数据,将得到的每个子数据进行数据封装,将封装后的子数据写入到MQ的队列中,读取所述队列,将读取的队列中的数据进行包封装得到数据包,将所述数据包发送给所述目标数据库。
[0030]本发明提供了一种数据同步的装置及方法,sqoop与MQ相连,MQ可以与多个目标数据库相连,目标数据库可以在MQ上订阅标签,当MQ接收到带有该标签的数据时就会发送给所有订阅该标签的目标数据库,这样就实现了将数据源中的数据同时同步到多个目标数据库中,提高了数据同步的效率。
【附图说明】
[0031]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0032]图1是本发明一实施例提供的一种数据同步的装置的示意图;
[0033]图2是本发明一实施例提供的一种数据同步的方法的流程图;
[0034]图3是本发明一实施例提供的另一种数据同步的方法的流程图。
【具体实施方式】
[0035]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0036]如图1所示,本发明实施例提供了一种数据同步的装置,该装置包括:
[0037]数据源与sqooplOl 相连,所述 sqooplOl 与 MQ (Message Queue,消息队列)102 相连,所述MQ102与至少一个目标数据库相连;
[0038]所述sqooplOl,用于获取所述数据源中的带有预设标签的待同步的数据,并对所述待同步的数据进行同步处理,将处理后的数据发送给所述MQ102 ;
[0039]所述MQ102,用于接受所述目标数据库对用于标识数据的标签的订阅,根据所述预设标签,将所述sqooplOl发来的数据,发送给所述订阅所述预设标签的目标数据库。
[0040]本发明实施例提供了一种数据同步的装置,sqoop与MQ相连,MQ可以与多个目标数据库相连,目标数据库可以在MQ上订阅标签,当MQ接收到带有该标签的数据时就会发送给所有订阅该标签的目标数据库,这样就实现了将数据源中的数据同时同步到多个目标数据库中,提高了数据同步的效率。
[0041]另外,通过本发明实施例提供的一种数据同步的装置,通过目标数据库向MQ订阅标签,将数据同步的数据源与目标数据库进行有效解耦,动态扩展数据同步需求。
[0042]对于因网络等原因造成的数据同步中断,进行数据重发处理,可以通过MQ进行数据重发,提高了容错处理,当MQ连接目标数据库时,对于消费数据失败时,MQ可以针对未被消费的数据进行自动重发,直到消费成功,可以有效保障数据最终实现成功同步,而且整个重试过程均由MQ自动处理,无需人工控制,可以进一步提高数据同步的自动化效率和可靠性。
[0043]该装置包括:所述MQ,还用于接收所述目标数据库发来的接收数据失败的失败消息,并当在发送所述sqoop发来的数据后的第一预设时间内接收到所述失败消息时,向所述失败消息对应的目标数据库发送所述失败消息对应的数据。另外,当不在发送所述sqoop发来的数据后的第一预设时间内接收到所述失败消息时,忽略该失败消息。
[0044]举例来说,MQ将数据A发送给目标数据库后,目标数据库接收失败,向MQ发送了失败消息,MQ在发送数据A后的第一预设时间内接收到了该失败消息,向目标数据库发送数据A。
[0045]在一种可能的实现方式中,该装置包括:
[0046]所述sqoop,还用于获取所述数据源的数据库同步日志,将所述数据库同步日志发送给所述MQ ;
[0047]所述MQ,用于将所述数据库同步日志发送给所述目标数据库,并将所述数据库同步日志保存第二预设时间。
[0048]通过sqoop进行数据同步时,对于sqoop传送的数据库同步日志通过MQ进行有效的持久化保存,方便数据追溯。在分布式系统中,消息从发送到接收,环节非常多,没有任何一个环节是安全的,而任何环节出了问题,都会导致丢消息。通过MQ实现消息持久化,保证在不是绝对安全的多环节里,完成消息安全的传输。sqoop将数据传送给MQ,由MQ实现一段时间内的持久化,可以是默认保留48小时,即第二预设时间为48小时,有利于实现同步数据的回溯,提高数据同步的容错能力。
[0049]对MQ进行标签的订阅可以通过以下实现方式实现,所述MQ,用于接收所述至少一个目标数据库发来的订阅的标签的信息,根据所述订阅的标签的信息,建立标签与目标数据库的对应关系,根据所述预设标签,将所述sqoop发来的数据,发送给所述预设标签对应的目标数据库。
[0050]在一种可能的实现方式中,所述MQ,用于将所述sqoop发来的数据进行数据分割得到分割后的子数据,将得到的每个子数据进行数据封装,将封装后的子数据写入到MQ的队列中,读取所述队列,将读取的队列中的数据进行包封装得到数据包,将所述数据包发送给所述目标数据库。
[0051]上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
[0052]参见图2,本发明实施例提供了一种
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1