构建数据的方法和装置以及数据库之间同步数据的系统

文档序号:7621 发布日期:2021-09-17 浏览:37次 英文

构建数据的方法和装置以及数据库之间同步数据的系统

技术领域

本发明涉及计算机

技术领域

,尤其涉及一种构建数据的方法和装置以及数据库之间同步数据的系统。

背景技术

在现有的Mysql数据库中,支持通过binlog(binary log,二进制日志)进行数据备份和数据库之间的数据复制,但是如果binlog系统发生故障,则容易导致数据无法备份或者数据库之间的数据不一致,进而影响实际业务。现有技术在面对该问题时,只能尽量修复binlog系统,但是这个修复过程可能耗时较长,并且即使修复也会丢失故障期间的数据改变信息。

发明内容

有鉴于此,本发明实施例提供一种构建数据的方法和装置以及数据库之间同步数据的系统,能够在目标日志系统发生故障时自动获取数据库操作的关联数据并构建与目标日志数据具有相同格式的模拟日志数据,该模拟日志数据可以代替目标日志数据执行数据恢复或数据复制,从而使数据库可以良好应对目标日志系统发生故障的情形。

为实现上述目的,根据本发明的一个方面,提供了一种构建数据的方法。

本发明实施例的构建数据的方法包括:在数据库的目标日志系统发生故障之后:当监测到针对所述数据库的操作时,获取该操作作用在所述数据库的关联数据;其中,所述目标日志系统中存储有用于执行数据同步或数据恢复的目标日志数据;使用获取到的关联数据并依据目标日志数据的格式构建模拟日志数据,将构建完成的模拟日志数据存储。

可选地,所述构建数据的方法还包括:在所述获取该操作作用在所述数据库的关联数据之前,将所述数据库的操作方法与预设的切面代码关联;以及,当监测到针对所述数据库的操作时,获取该操作作用在所述数据库的关联数据,包括:当监测到针对所述数据库的操作调用相应的操作方法进而触发该操作方法关联的切面代码时,利用触发执行的切面代码获取该操作作用在所述数据库的关联数据。

可选地,所述关联数据中包括操作类型;以及,所述构建数据的方法还包括:在所述使用获取到的关联数据并依据目标日志数据的格式构建模拟日志数据之前,确定操作类型对应的预设模板;其中,所述模板中包括该操作类型对应的模拟日志数据的构建逻辑并维护上下文对象;使用获取到的关联数据并依据目标日志数据的格式构建模拟日志数据,包括:将获取到的关联数据存储在确定的模板的上下文对象中,根据该模板中的构建逻辑构建模拟日志数据。

可选地,所述构建数据的方法还包括:在所述数据库的目标日志系统发生故障之后:接收针对所述数据库的查询语句,确定所述数据库中对应于该查询语句的目的数据;使用所述目的数据并依据目标日志数据的格式构建模拟日志数据,将构建完成的模拟日志数据存储。

可选地,所述数据库是为目标数据库提供支持的源数据库,以及,所述构建数据的方法还包括:在模拟日志数据构造完成之后,将所述模拟日志数据向目标数据库的数据同步系统发送;其中,所述数据同步系统用于将所述模拟日志数据作为目标日志数据执行从源数据库到目标数据库的数据同步。

可选地,源数据库包括Mysql,目标数据库包括Redis和/或Elastic Search;目标日志数据为二进制日志binlog数据,目标日志系统为binlog系统;所述操作类型包括增加、删除和/或更新,所述操作方法包括增加方法、删除方法和/或更新方法;所述关联数据还包括源数据库中操作针对的数据表的标识、以及该数据表中操作针对的记录的操作前数据和操作后数据;所述切面代码为基于面向切面编程AOP的增强代码。

为实现上述目的,根据本发明的另一方面,提供了一种构建数据的装置。

本发明实施例的构建数据的装置可包括:关联数据获取单元,用于:在数据库的目标日志系统发生故障之后:当监测到针对所述数据库的操作时,获取该操作作用在所述数据库的关联数据;其中,所述目标日志系统中存储有用于执行数据同步或数据恢复的目标日志数据;模拟日志数据构建单元:用于使用获取到的关联数据并依据目标日志数据的格式构建模拟日志数据,将构建完成的模拟日志数据存储。

为实现上述目的,根据本发明的又一方面,提供了一种数据库之间同步数据的系统。

本发明实施例的数据库之间同步数据的系统可以包括:源数据库、设置有源数据库对外访问接口的访问系统、由源数据库提供数据支持的目标数据库、以及根据源数据库生成的目标日志数据对目标数据库执行数据同步的数据同步系统;所述访问系统中包括降级工具;其中,在存储有所述目标日志数据的目标日志系统发生故障之后:当降级工具监测到针对源数据库的操作,则获取该操作作用在源数据库的关联数据,使用获取到的关联数据并依据目标日志数据的格式构建模拟日志数据,以及将构建完成的模拟日志数据向数据同步系统发送。

可选地,所述访问系统中设置有管理界面;以及,降级工具还用于:当监测到针对源数据库的操作调用相应的操作方法进而触发该操作方法预先关联的切面代码时,利用该切面代码获取该操作作用在源数据库的关联数据,并将获取到的关联数据存储在预先确定的模板的上下文对象中,根据该模板中的构建逻辑构建模拟日志数据;当接收到管理界面输入的、且针对所述数据库的查询语句时,确定源数据库中对应于该查询语句的目的数据,使用所述目的数据并依据目标日志数据的格式构建模拟日志数据,以及将构建完成的模拟日志数据向数据同步系统发送。

可选地,降级工具通过消息队列将所述模拟日志数据向数据同步系统发送;源数据库包括Mysql,目标数据库包括Redis和/或Elastic Search;目标日志数据为二进制日志binlog数据,目标日志系统为binlog系统;所述操作类型包括增加、删除和/或更新,所述操作方法包括增加方法、删除方法和/或更新方法;所述关联数据还包括源数据库中操作针对的数据表的标识、以及该数据表中操作针对的记录的操作前数据和操作后数据;所述切面代码为基于面向切面编程AOP的增强代码。

为实现上述目的,根据本发明的又一方面,提供了一种电子设备。

本发明的一种电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明所提供的构建数据的方法。

为实现上述目的,根据本发明的再一方面,提供了一种计算机可读存储介质。

本发明的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明所提供的构建数据的方法。

根据本发明的技术方案,上述发明中的一个实施例具有如下优点或有益效果:在目标日志系统发生故障时,可以根据预先与数据库操作方法关联的切面代码获取数据库操作的关联数据如操作类型、数据表标识、操作前数据、操作后数据等,并根据预设模板中的构建逻辑构建与目标日志数据格式相同的模拟日志数据,该模拟日志数据可以在目标日志系统发生故障期间代替目标日志数据用于数据恢复或数据库之间的数据同步。通过上述设置,能够良好应对目标日志系统发生故障的情形,保证可靠的数据恢复或者数据库之间的数据一致性。以上方法操作简单,可靠性高,保留了目标日志系统数据同步一致性强、异常处理简洁等优点,可最大程度复用原有代码,不会产生分布式事物问题。此外,管理员在数据库查询所需数据并执行相应动作也可以构建模拟日志数据来执行后续的数据恢复或数据复制。

上述的非惯用的可选方式所具有的进一步效果将在下文中结合

具体实施方式

包括:在数据库的目标日志系统发生故障之后:当监测到针对数据库的操作时,获取该操作作用在数据库的关联数据;目标日志系统中存储有用于执行数据同步或数据恢复的目标日志数据;使用获取到的关联数据并依据目标日志数据的格式构建模拟日志数据,将构建完成的模拟日志数据存储。该实施方式能够在目标日志系统发生故障时自动获取数据库操作的关联数据并构建与目标日志数据具有相同格式的模拟日志数据,该模拟日志数据可以代替目标日志数据执行数据恢复或数据复制,从而使数据库可以良好应对目标日志系统发生故障的情形。 ">

为遏制恶意抓取行为,请关注公众号获取访问口令


二维码

微信扫二维码关注公众号,发送“口令”获取

提交

提示:只需正确输入一次口令,该弹窗便不再弹出!

CN113407619A - 构建数据的方法和装置以及数据库之间同步数据的系统 - Google Patents

构建数据的方法和装置以及数据库之间同步数据的系统 Download PDF

Info

Publication number
CN113407619A
CN113407619A CN202010181867.7A CN202010181867A CN113407619A CN 113407619 A CN113407619 A CN 113407619A CN 202010181867 A CN202010181867 A CN 202010181867A CN 113407619 A CN113407619 A CN 113407619A
Authority
CN
China
Prior art keywords
data
database
target
log data
log
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
CN202010181867.7A
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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology 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 Beijing Jingdong Century Trading Co Ltd, Beijing Wodong Tianjun Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN202010181867.7A priority Critical patent/CN113407619A/zh
Publication of CN113407619A publication Critical patent/CN113407619A/zh
Pending legal-status Critical Current

Links

  • 238000004088 simulation Methods 0.000 claims abstract description 76
  • 238000011084 recovery Methods 0.000 claims abstract description 31
  • 230000000875 corresponding Effects 0.000 claims description 48
  • 238000010276 construction Methods 0.000 claims description 25
  • 238000004590 computer program Methods 0.000 claims description 9
  • 230000015556 catabolic process Effects 0.000 claims description 8
  • 230000004059 degradation Effects 0.000 claims description 8
  • 238000006731 degradation reaction Methods 0.000 claims description 8
  • 230000001960 triggered Effects 0.000 claims description 7
  • 239000000126 substance Substances 0.000 claims 1
  • 238000010586 diagram Methods 0.000 description 17
  • 238000000034 method Methods 0.000 description 7
  • 238000004891 communication Methods 0.000 description 4
  • 230000004048 modification Effects 0.000 description 4
  • 238000006011 modification reaction Methods 0.000 description 4
  • 230000003287 optical Effects 0.000 description 4
  • 230000000694 effects Effects 0.000 description 2
  • 230000000644 propagated Effects 0.000 description 2
  • 239000004065 semiconductor Substances 0.000 description 2
  • 210000003666 Nerve Fibers, Myelinated Anatomy 0.000 description 1
  • 239000000969 carrier Substances 0.000 description 1
  • 230000001276 controlling effect Effects 0.000 description 1
  • 238000005516 engineering process Methods 0.000 description 1
  • 239000000835 fiber Substances 0.000 description 1
  • 239000003365 glass fiber Substances 0.000 description 1
  • 239000004973 liquid crystal related substance Substances 0.000 description 1
  • 238000000926 separation method Methods 0.000 description 1
  • 238000006467 substitution reaction Methods 0.000 description 1
  • 230000001360 synchronised Effects 0.000 description 1

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/275Synchronous replication

Abstract

本发明公开了一种构建数据的方法和装置以及数据库之间同步数据的系统,涉及计算机技术领域。该方法的一具体实施方式包括:在数据库的目标日志系统发生故障之后:当监测到针对数据库的操作时,获取该操作作用在数据库的关联数据;目标日志系统中存储有用于执行数据同步或数据恢复的目标日志数据;使用获取到的关联数据并依据目标日志数据的格式构建模拟日志数据,将构建完成的模拟日志数据存储。该实施方式能够在目标日志系统发生故障时自动获取数据库操作的关联数据并构建与目标日志数据具有相同格式的模拟日志数据,该模拟日志数据可以代替目标日志数据执行数据恢复或数据复制,从而使数据库可以良好应对目标日志系统发生故障的情形。

Description

构建数据的方法和装置以及数据库之间同步数据的系统

技术领域

本发明涉及计算机技术领域,尤其涉及一种构建数据的方法和装置以及数据库之间同步数据的系统。

背景技术

在现有的Mysql数据库中,支持通过binlog(binary log,二进制日志)进行数据备份和数据库之间的数据复制,但是如果binlog系统发生故障,则容易导致数据无法备份或者数据库之间的数据不一致,进而影响实际业务。现有技术在面对该问题时,只能尽量修复binlog系统,但是这个修复过程可能耗时较长,并且即使修复也会丢失故障期间的数据改变信息。

发明内容

有鉴于此,本发明实施例提供一种构建数据的方法和装置以及数据库之间同步数据的系统,能够在目标日志系统发生故障时自动获取数据库操作的关联数据并构建与目标日志数据具有相同格式的模拟日志数据,该模拟日志数据可以代替目标日志数据执行数据恢复或数据复制,从而使数据库可以良好应对目标日志系统发生故障的情形。

为实现上述目的,根据本发明的一个方面,提供了一种构建数据的方法。

本发明实施例的构建数据的方法包括:在数据库的目标日志系统发生故障之后:当监测到针对所述数据库的操作时,获取该操作作用在所述数据库的关联数据;其中,所述目标日志系统中存储有用于执行数据同步或数据恢复的目标日志数据;使用获取到的关联数据并依据目标日志数据的格式构建模拟日志数据,将构建完成的模拟日志数据存储。

可选地,所述构建数据的方法还包括:在所述获取该操作作用在所述数据库的关联数据之前,将所述数据库的操作方法与预设的切面代码关联;以及,当监测到针对所述数据库的操作时,获取该操作作用在所述数据库的关联数据,包括:当监测到针对所述数据库的操作调用相应的操作方法进而触发该操作方法关联的切面代码时,利用触发执行的切面代码获取该操作作用在所述数据库的关联数据。

可选地,所述关联数据中包括操作类型;以及,所述构建数据的方法还包括:在所述使用获取到的关联数据并依据目标日志数据的格式构建模拟日志数据之前,确定操作类型对应的预设模板;其中,所述模板中包括该操作类型对应的模拟日志数据的构建逻辑并维护上下文对象;使用获取到的关联数据并依据目标日志数据的格式构建模拟日志数据,包括:将获取到的关联数据存储在确定的模板的上下文对象中,根据该模板中的构建逻辑构建模拟日志数据。

可选地,所述构建数据的方法还包括:在所述数据库的目标日志系统发生故障之后:接收针对所述数据库的查询语句,确定所述数据库中对应于该查询语句的目的数据;使用所述目的数据并依据目标日志数据的格式构建模拟日志数据,将构建完成的模拟日志数据存储。

可选地,所述数据库是为目标数据库提供支持的源数据库,以及,所述构建数据的方法还包括:在模拟日志数据构造完成之后,将所述模拟日志数据向目标数据库的数据同步系统发送;其中,所述数据同步系统用于将所述模拟日志数据作为目标日志数据执行从源数据库到目标数据库的数据同步。

可选地,源数据库包括Mysql,目标数据库包括Redis和/或Elastic Search;目标日志数据为二进制日志binlog数据,目标日志系统为binlog系统;所述操作类型包括增加、删除和/或更新,所述操作方法包括增加方法、删除方法和/或更新方法;所述关联数据还包括源数据库中操作针对的数据表的标识、以及该数据表中操作针对的记录的操作前数据和操作后数据;所述切面代码为基于面向切面编程AOP的增强代码。

为实现上述目的,根据本发明的另一方面,提供了一种构建数据的装置。

本发明实施例的构建数据的装置可包括:关联数据获取单元,用于:在数据库的目标日志系统发生故障之后:当监测到针对所述数据库的操作时,获取该操作作用在所述数据库的关联数据;其中,所述目标日志系统中存储有用于执行数据同步或数据恢复的目标日志数据;模拟日志数据构建单元:用于使用获取到的关联数据并依据目标日志数据的格式构建模拟日志数据,将构建完成的模拟日志数据存储。

为实现上述目的,根据本发明的又一方面,提供了一种数据库之间同步数据的系统。

本发明实施例的数据库之间同步数据的系统可以包括:源数据库、设置有源数据库对外访问接口的访问系统、由源数据库提供数据支持的目标数据库、以及根据源数据库生成的目标日志数据对目标数据库执行数据同步的数据同步系统;所述访问系统中包括降级工具;其中,在存储有所述目标日志数据的目标日志系统发生故障之后:当降级工具监测到针对源数据库的操作,则获取该操作作用在源数据库的关联数据,使用获取到的关联数据并依据目标日志数据的格式构建模拟日志数据,以及将构建完成的模拟日志数据向数据同步系统发送。

可选地,所述访问系统中设置有管理界面;以及,降级工具还用于:当监测到针对源数据库的操作调用相应的操作方法进而触发该操作方法预先关联的切面代码时,利用该切面代码获取该操作作用在源数据库的关联数据,并将获取到的关联数据存储在预先确定的模板的上下文对象中,根据该模板中的构建逻辑构建模拟日志数据;当接收到管理界面输入的、且针对所述数据库的查询语句时,确定源数据库中对应于该查询语句的目的数据,使用所述目的数据并依据目标日志数据的格式构建模拟日志数据,以及将构建完成的模拟日志数据向数据同步系统发送。

可选地,降级工具通过消息队列将所述模拟日志数据向数据同步系统发送;源数据库包括Mysql,目标数据库包括Redis和/或Elastic Search;目标日志数据为二进制日志binlog数据,目标日志系统为binlog系统;所述操作类型包括增加、删除和/或更新,所述操作方法包括增加方法、删除方法和/或更新方法;所述关联数据还包括源数据库中操作针对的数据表的标识、以及该数据表中操作针对的记录的操作前数据和操作后数据;所述切面代码为基于面向切面编程AOP的增强代码。

为实现上述目的,根据本发明的又一方面,提供了一种电子设备。

本发明的一种电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明所提供的构建数据的方法。

为实现上述目的,根据本发明的再一方面,提供了一种计算机可读存储介质。

本发明的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明所提供的构建数据的方法。

根据本发明的技术方案,上述发明中的一个实施例具有如下优点或有益效果:在目标日志系统发生故障时,可以根据预先与数据库操作方法关联的切面代码获取数据库操作的关联数据如操作类型、数据表标识、操作前数据、操作后数据等,并根据预设模板中的构建逻辑构建与目标日志数据格式相同的模拟日志数据,该模拟日志数据可以在目标日志系统发生故障期间代替目标日志数据用于数据恢复或数据库之间的数据同步。通过上述设置,能够良好应对目标日志系统发生故障的情形,保证可靠的数据恢复或者数据库之间的数据一致性。以上方法操作简单,可靠性高,保留了目标日志系统数据同步一致性强、异常处理简洁等优点,可最大程度复用原有代码,不会产生分布式事物问题。此外,管理员在数据库查询所需数据并执行相应动作也可以构建模拟日志数据来执行后续的数据恢复或数据复制。

上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是现有技术中数据库之间同步数据的系统的示意图;

图2是本发明实施例中构建数据的方法的主要步骤示意图;

图3是本发明实施例中构建数据的方法的具体执行步骤示意图;

图4是本发明实施例中构建数据的装置的组成部分示意图;

图5是本发明实施例中数据库之间同步数据的系统的架构示意图;

图6是用来实现本发明实施例中构建数据的方法的电子设备结构示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

在当今的大规模互联网应用系统中,由于访问量巨大,传统数据库的查询性能无法提供稳定支持,因此需要引入Redis(一种键值对数据库)、ES(Elastic Search,弹性搜索引擎)等支持查询,即,将Mysql等类型的数据库作为源数据库,执行增加(即create)、删除(即delete)、更新(即update)等数据库操作,将Redis、ES等数据库作为目标数据库实现面向用户的数据读取和查询,从而达到读写分离。需要说明的是,本发明中的操作包括增加、删除、更新,不包括查询。以上每一种操作都可以调用数据库写接口例如DAO(Data AccessObject,数据访问对象)写接口的相应操作方法,如增加操作可以调用增加方法(即insertinto方法),删除操作可以调用删除方法(即delete方法),更新操作可以调用更新方法(即update方法)。

在上述系统中,源数据库与目标数据库之间需要通过目标日志数据来进行数据同步。一般地,目标日志数据中含有数据库操作执行前后的数据变化,目标数据库能够依据目标日志数据与源数据库保持数据同步。图1是现有技术中数据库之间同步数据的系统的示意图,如图1所示,目标日志系统用于存储源数据库生成的目标日志数据并将目标日志数据向数据同步系统提供,数据同步系统用于依据目标日志数据对目标数据库执行操作从而实现与源数据库的数据同步。图1中还示出了设置有源数据库对外接口(即对外访问接口)的访问系统和基于目标数据库并面向用户的查询系统,访问系统还设置有针对源数据库的DAO写接口和DAO读接口。

在图1所示系统中,数据同步系统不断接收目标日志数据,目标日志数据在各种业务场景中分别加锁并比较版本号来保证目标数据库写入最新数据,如果某个环节出现问题则可抛出异常进行重试来保证数据库之间不会产生分布式事务问题,当增加数据表时只需增加相应处理模板则可避免入侵原有代码从而保障系统安全。可以看到,以上的数据同步方法对目标日志系统形成很强的依赖,如果目标日志系统出现故障,则会造成各数据库之间数据不一致,从而影响业务运行。实际应用中,上述目标日志数据还可以用于源数据库的数据恢复,目标日志系统出现故障时也会对数据恢复造成影响。本发明提供的方法即可用于应对目标日志系统发生故障的情形,能够降低或者避免目标日志系统故障对数据同步、数据恢复等场景的影响。

需要说明的是,本发明实施例中的源数据库和目标数据库可以是各种数据库,目标日志数据也可以是具有上述数据同步和/或数据恢复功能的日志数据,例如源数据库可以是Mysql或者Oracle,目标数据库可以是ES和/或Redis,目标日志数据可以是Mysql中的binlog或者Oracle中的重做日志redo log数据。以下将主要以源数据库为Mysql、目标数据库为ES和Redis、目标日志数据为binlog为例进行说明。此外,在不冲突的情况下,本发明的实施例以及实施例中的技术特征可以相互结合。

图2是本发明实施例中构建数据的方法的主要步骤示意图,如图2所示,本发明实施例的构建数据的方法可具体按照如下步骤执行:

步骤S201:在数据库的目标日志系统发生故障之后:当监测到针对数据库的操作时,获取该操作作用在数据库的关联数据;其中,目标日志系统中存储有用于执行数据同步或数据恢复的目标日志数据。

本步骤中的数据库可以是图1中的源数据库,目标日志系统发生故障可以是目标日志系统无法生成目标日志数据或者无法将目标日志数据向数据同步系统提供。为了监测数据库操作,可以在执行本步骤之前利用AOP(Aspect Oriented Programming,面向切面编程)技术对针对源数据库的操作方法进行增强。具体地,可以将针对源数据库的增加方法、删除方法和更新方法作为切点(即Pointcut)与预设的切面代码关联。切面代码为AOP中的增强代码(即Advice),其可以通过调用源数据库的DAO读接口读取针对源数据库的操作作用在源数据库的关联数据。实际应用中,还可以在AOP中设置用于控制切面代码执行的降级开关(降级指的是从使用目标日志系统切换到使用本发明方法进行数据同步或数据恢复),降级开关可以通过自动或手动方式切换,当降级开关开启时,增强代码可以执行;当降级开关关闭时,增强代码无法执行。实际应用中,如果管理员检测到目标日志系统发生故障,可以立即开启动态开关。

上述关联数据可以包括操作针对的数据表的标识(例如数据表名称)、操作类型(即操作是增加、删除还是更新)、操作时间、数据表中相应记录(即操作针对的记录)的操作前数据和操作后数据。如果源数据库为多个数据库,关联数据中还可以包括操作针对的源数据库的标识。可以理解,对于增加操作,上述记录中相应字段(即操作针对的字段)的操作前数据为空值;对于删除操作,上述记录中相应字段的操作后数据为空值;对于更新操作,上述记录中相应字段的操作前数据和操作后数据都不是空值,以下将主要以更新操作为例进行说明。

在本发明实施例中,可以将对于操作方法的增强类型设置为前置增强,这样,当外部调用操作方法执行针对源数据库的相应操作时,在该操作方法执行之前相应的切面代码即被触发执行,从而能够获取相应的关联数据。较佳地,本发明可以预先为每一种数据库操作类型建立一个模板,该模板定义了获取关联数据的逻辑以及用于构建下文将要说明的模拟日志数据的逻辑(以下称为构建逻辑),同时该模板中可以维护一个上下文对象用于暂存各种关联数据。另外,本发明还可以为源数据库中的每一数据表设置一个处理器,该处理器具有数据查询、模拟日志数据构建以及消息组装功能(该消息用于传输模拟日志数据),还可以具有其它自定义功能。

基于模板获取关联数据的具体过程如下:当监测到某操作方法被调用时,与该操作方法关联的切面代码首先被触发执行,则通过该切面代码首先获取操作类型(操作类型与操作方法的类型对应)和数据表标识,接着即可确定操作类型对应的模板,此后可以按照模板中的相应逻辑获取关联数据。以更新操作为例,首先可以初始化模板维护的上下文对象并确定数据表对应的处理器,之后调用DAO读接口查询相应记录的操作前数据放入上下文对象,在操作执行后再次调用DAO读接口查询相应记录的操作后数据放入上下文对象。

步骤S202:使用获取到的关联数据并依据目标日志数据的格式构建模拟日志数据,将构建完成的模拟日志数据存储。

在本步骤中,可以使用上下文对象中的关联数据来构建模拟日志数据。在本发明实施例中,模拟日志数据用于模拟目标日志数据,其自身可以不是日志数据。较佳地,模拟日志数据可以与目标日志数据具有相同格式,因此在构建模拟日志数据时可以按照目标日志数据的格式来构建。一般地,目标日志数据的格式可以根据实际需要设置。例如,如果对应于更新操作的一条目标日志数据依次由4字节的校验码、第一类型的开始事件、对应于更新操作的事件、第二类型的结束事件组成,则对应于更新操作的模拟日志数据也可以依次包括4字节校验码、第一类型的开始事件、更新操作事件、第二类型的结束事件。具体应用中,上述构建过程可以由处理器执行,处理器可以根据模板中的构建逻辑对上下文对象中的关联数据进行加工,从而得到模拟日志数据。通过上述方式构建的模拟日志数据与目标日志数据具有相同的格式,因此可以代替目标日志数据执行目标日志数据的各种功能。最后,可以将构建完成的模拟日志数据存储用于后续的数据恢复,也可以将模拟日志数据组装成消息经消息队列向数据同步系统发送从而实现数据同步。可以理解,模拟日志数据构建完成之后,也可以将其直接向数据同步系统发送,存储后的模拟日志数据也可以用在数据恢复、数据同步之外的其它场景。

在一些实施例中,进一步支持基于源数据库管理界面的数据恢复和数据同步。例如,在需要恢复或同步少量数据时,管理员可以在管理界面输入查询语句(例如结构化查询语言SQL语句),此后系统首先调用源数据库的DAO读接口确定对应于该查询语句的目的数据,之后使用目的数据并依据目标日志数据的格式构建模拟日志数据,最后将构建完成的模拟日志数据存储或发送到目标数据库。使用目的数据构建模拟日志数据的方式与使用关联数据构建模拟日志数据的方式相似,不同之处在于上述场景中需要使用该场景对应的模板来执行目的数据获取以及模拟日志数据构建。

图3是本发明实施例中构建数据的方法的具体执行步骤示意图,如图3所示,当目标日志数据发生故障时,管理员开启AOP中的降级开关。当某更新操作调用操作方法触发关联的切面代码时,可利用切面代码获取该操作方法的名称从而确定操作类型并获取数据表的标识,此后可以根据操作类型获取相应的模板并根据模板中的逻辑执行以下步骤:首先初始化上下文对象并根据数据表标识获取相应的处理器,之后查询数据表相应记录的操作前数据放入上下文对象,在操作执行之后查询该记录的操作后数据放入上下文对象,最后利用处理器构建模拟日志数据并组装为消息向数据同步系统发送,从而完成从源数据库到目标数据库的数据同步。

根据本发明实施例的技术方案,在目标日志系统发生故障时,可以根据预先与数据库操作方法关联的切面代码获取数据库操作的关联数据如操作类型、数据表标识、操作前数据、操作后数据等,并根据预设模板中的构建逻辑构建与目标日志数据格式相同的模拟日志数据,该模拟日志数据可以在目标日志系统发生故障期间代替目标日志数据用于数据恢复或数据库之间的数据同步。通过上述设置,能够良好应对目标日志系统发生故障的情形,保证可靠的数据恢复或者数据库之间的数据一致性。以上方法操作简单,可靠性高,保留了目标日志系统数据同步一致性强、异常处理简洁等优点,可最大程度复用原有代码,不会产生分布式事物问题。此外,管理员在数据库查询所需数据并执行相应动作也可以构建模拟日志数据来执行后续的数据恢复或数据复制。

需要说明的是,对于前述的各方法实施例,为了便于描述,将其表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,某些步骤事实上可以采用其它顺序进行或者同时进行。此外,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是实现本发明所必须的。

为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。

请参阅图4所示,本发明实施例提供的构建数据的装置可以包括:关联数据获取单元401和模拟日志数据构建单元402。

其中,关联数据获取单元401可用于:在数据库的目标日志系统发生故障之后:当监测到针对所述数据库的操作时,获取该操作作用在所述数据库的关联数据;其中,所述目标日志系统中存储有用于执行数据同步或数据恢复的目标日志数据;模拟日志数据构建单元402可用于使用获取到的关联数据并依据目标日志数据的格式构建模拟日志数据,将构建完成的模拟日志数据存储。

在本发明实施例中,所述装置400还包括面向切面编程单元,其用于:在所述获取该操作作用在所述数据库的关联数据之前,将所述数据库的操作方法与预设的切面代码关联。关联数据获取单元401还可用于:当监测到针对所述数据库的操作调用相应的操作方法进而触发该操作方法关联的切面代码时,利用触发执行的切面代码获取该操作作用在所述数据库的关联数据。

实际应用中,所述关联数据中可以包括操作类型。所述装置400还可以包括模板获取单元,其用于:在所述使用获取到的关联数据并依据目标日志数据的格式构建模拟日志数据之前,确定操作类型对应的预设模板;其中,所述模板中包括该操作类型对应的模拟日志数据的构建逻辑并维护上下文对象。模拟日志数据构建单元402还可用于:将获取到的关联数据存储在确定的模板的上下文对象中,根据该模板中的构建逻辑构建模拟日志数据。

作为一个优选方案,所述装置400还可以包括后台处理单元,其用于:在所述数据库的目标日志系统发生故障之后,接收针对所述数据库的查询语句,确定所述数据库中对应于该查询语句的目的数据;使用所述目的数据并依据目标日志数据的格式构建模拟日志数据,将构建完成的模拟日志数据存储。

较佳地,所述数据库是为目标数据库提供支持的源数据库。所述装置还可以包括同步单元,其可用于:在模拟日志数据构造完成之后,将所述模拟日志数据向目标数据库的数据同步系统发送;其中,所述数据同步系统用于将所述模拟日志数据作为目标日志数据执行从源数据库到目标数据库的数据同步。

此外,在本发明实施例中,源数据库包括Mysql,目标数据库包括Redis和/或Elastic Search;目标日志数据为二进制日志binlog数据,目标日志系统为binlog系统;所述操作类型包括增加、删除和/或更新,所述操作方法包括增加方法、删除方法和/或更新方法;所述关联数据还包括源数据库中操作针对的数据表的标识、以及该数据表中操作针对的记录的操作前数据和操作后数据;所述切面代码为基于面向切面编程AOP的增强代码。

根据本发明实施例的技术方案,在目标日志系统发生故障时,可以根据预先与数据库操作方法关联的切面代码获取数据库操作的关联数据如操作类型、数据表标识、操作前数据、操作后数据等,并根据预设模板中的构建逻辑构建与目标日志数据格式相同的模拟日志数据,该模拟日志数据可以在目标日志系统发生故障期间代替目标日志数据用于数据恢复或数据库之间的数据同步。通过上述设置,能够良好应对目标日志系统发生故障的情形,保证可靠的数据恢复或者数据库之间的数据一致性。以上方法操作简单,可靠性高,保留了目标日志系统数据同步一致性强、异常处理简洁等优点,可最大程度复用原有代码,不会产生分布式事物问题。此外,管理员在数据库查询所需数据并执行相应动作也可以构建模拟日志数据来执行后续的数据恢复或数据复制。

图5是本发明实施例中数据库之间同步数据的系统的架构示意图,如图5所示,本发明实施例的数据库之间同步数据的系统可以包括:源数据库、目标数据库、访问系统、数据同步系统。

其中,源数据库对目标数据库提供数据支持,数据同步系统可以根据源数据库生成的目标日志数据对目标数据库执行数据同步,访问系统设置有源数据库的对外访问接口以及针对源数据库的读接口和写接口(即图5中的DAO读接口、DAO写接口)。特别地,访问系统中还设置有用于执行前述构建数据的方法的降级工具,该降级工具可以作为获取前述关联数据或目的数据、构建模拟日志数据以及组装消息并向数据同步系统发送的主体,访问系统中还可设置用于输入查询语句的管理界面。较佳地,在本发明实施例中,降级工具可以包括模板工厂和处理器工厂,模板工厂中包括每一种操作方法对应的模板以及后台处理场景(后台处理场景将在下文说明)对应的模板,处理器工厂中包括与每一数据表对应的处理器,处理器具有数据查询、模拟日志数据构建、消息组装等功能,还可以根据需要实现各种自定义功能。模板与处理器的具体功能已在前文介绍,此处不再重复。图5中还示出了基于目标数据库并面向用户的查询系统。

实际应用中,可以预先利用AOP技术对DAO写接口的每一方法进行增强,即将DAO写接口的每一方法与预设的切面代码关联,并在AOP设置降级开关用来控制切面代码的执行。当目标日志系统发生故障之后,管理员可以手动开启降级开关从而执行前述构建数据的方法。当针对源数据库的某一操作执行时,降级工具可以通过触发的切面代码获取该操作作用在源数据库的关联数据,并使用获取到的关联数据、依据目标日志数据的格式构建模拟日志数据,最后将构建完成的模拟日志数据向数据同步系统发送。具体而言,降级工具在监测到针对源数据库的操作调用相应的操作方法进而触发该操作方法关联的切面代码时,首先利用该切面代码获取操作类型和数据表标识,进而获取操作类型对应的模板,此后执行该模板中的相应逻辑来获取各种关联数据并将获取到的关联数据存储在模板维护的上下文对象中,最后根据模板中的构建逻辑构建模拟日志数据并将相应消息经消息队列向数据同步系统发送。需要说明的是,上述模板在设计时采用责任链设计模式,可以拆分成多个独立、可复用的代码块,由此提高开发效率。同时,由于降级工具中使用了工厂、责任链等设计模式,使代码结构清晰并满足开闭原则(即软件中的类、模块、函数等对象对于扩展是开放的,对于修改是封闭的),当新的场景或者新的数据表接入时只需单独开发新的模板和处理器,不会污染原有代码,从而保障系统的稳定性。

在后台处理场景中(例如需要使用管理界面同步少量数据的场景),管理员可以在管理界面输入查询语句,此后降级工具首先调用源数据库的DAO读接口确定对应于该查询语句的目的数据,之后使用目的数据并依据目标日志数据的格式构建模拟日志数据,最后将构建完成的模拟日志数据发送到目标数据库。

在一可选实现方式中,源数据库包括Mysql,目标数据库包括Redis和/或ElasticSearch;目标日志数据为二进制日志binlog数据,目标日志系统为binlog系统;所述操作类型包括增加、删除和/或更新,所述操作方法包括增加方法、删除方法和/或更新方法;所述关联数据还包括源数据库中操作针对的数据表的标识、以及该数据表中操作针对的记录的操作前数据和操作后数据;所述切面代码为基于面向切面编程AOP的增强代码。

在本发明实施例的技术方案中,当目标日志系统发生故障时,可以根据预先与数据库操作方法关联的切面代码获取数据库操作的关联数据如操作类型、数据表标识、操作前数据、操作后数据等,并根据预设模板中的构建逻辑构建与目标日志数据格式相同的模拟日志数据,该模拟日志数据可以在目标日志系统发生故障期间代替目标日志数据用于数据库之间的数据同步。通过上述设置,能够良好应对目标日志系统发生故障的情形,保证可靠的数据恢复或者数据库之间的数据一致性。以上方法操作简单,可靠性高,保留了目标日志系统数据同步一致性强、异常处理简洁等优点,可最大程度复用原有代码,不会产生分布式事物问题。此外,管理员在数据库查询所需数据并执行相应动作也可以构建模拟日志数据来实现数据复制。

本发明还提供了一种电子设备。本发明实施例的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明所提供的构建数据的方法。

下面参考图6,其示出了适于用来实现本发明实施例的电子设备的计算机系统600的结构示意图。图6示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM603中,还存储有计算机系统600操作所需的各种程序和数据。CPU601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。

以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便从其上读出的计算机程序根据需要被安装入存储部分608。

特别地,根据本发明公开的实施例,上文的主要步骤图描述的过程可以被实现为计算机软件程序。例如,本发明实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤图所示的方法的程序代码。在上述实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元601执行时,执行本发明的系统中限定的上述功能。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。在本发明中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括关联数据获取单元和模拟日志数据构建单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,关联数据获取单元还可以被描述为“向模拟日志数据构建单元提供关联数据的单元”。

作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中的。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该设备执行时,使得该设备执行的步骤包括:在数据库的目标日志系统发生故障之后:当监测到针对所述数据库的操作时,获取该操作作用在所述数据库的关联数据;其中,所述目标日志系统中存储有用于执行数据同步或数据恢复的目标日志数据;使用获取到的关联数据并依据目标日志数据的格式构建模拟日志数据,将构建完成的模拟日志数据存储。

根据本发明实施例的技术方案,在目标日志系统发生故障时,可以根据预先与数据库操作方法关联的切面代码获取数据库操作的关联数据如操作类型、数据表标识、操作前数据、操作后数据等,并根据预设模板中的构建逻辑构建与目标日志数据格式相同的模拟日志数据,该模拟日志数据可以在目标日志系统发生故障期间代替目标日志数据用于数据恢复或数据库之间的数据同步。通过上述设置,能够良好应对目标日志系统发生故障的情形,保证可靠的数据恢复或者数据库之间的数据一致性。以上方法操作简单,可靠性高,保留了目标日志系统数据同步一致性强、异常处理简洁等优点,可最大程度复用原有代码,不会产生分布式事物问题。此外,管理员在数据库查询所需数据并执行相应动作也可以构建模拟日志数据来执行后续的数据恢复或数据复制。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:基于异构Hadoop集群环境的数据块放置方法及系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!