分布式数据库日志处理方法和装置、电子设备和存储介质制造方法及图纸

技术编号:38760072 阅读:9 留言:0更新日期:2023-09-10 09:44
本申请提供了一种分布式数据库日志处理方法和装置、电子设备和存储介质。其中,方法包括:获取分布式数据库下多个数据节点中每个数据节点的日志文件;根据日志文件中每个节点事务的事务提交信息,确定出与每个分布式事务对应的节点事务,其中,每个节点事务的事务提交信息用于指示每个节点事务在开始写操作的次序以及每个节点事务所属的分布式事务提交时的全局顺序;按照与每个分布式事务对应的节点事务,对各个节点事务进行组合,得到用于指示每个分布式事务的全局日志。通过本申请,解决了相关技术中存在的因为需要对每一个数据节点都部署一个队列,导致的不仅需要大量的人力保障运维,还需要额外增加大量中间机资源,费效比非常低下的问题。效比非常低下的问题。效比非常低下的问题。

【技术实现步骤摘要】
分布式数据库日志处理方法和装置、电子设备和存储介质


[0001]本申请涉及分布式数据库
,尤其涉及一种分布式数据库日志处理方法和装置、电子设备和存储介质。

技术介绍

[0002]传统数据库系统中,都会对外提供CDC(change data capture)接口。CDC 即变化数据捕捉。是数据库进行备份的一种方式,常用于大量数据的备份工作。分为入侵式的和非入侵式的备份方法,入侵式的备份方法包括:基于触发器备份、基于时间戳备份、基于快照备份,非入侵式的备份方法是基于日志的备份。例如mysql 基于日志的CDC就是非入侵式的备份方法,即开启mysql binary log。
[0003]而目前主流的分布式数据库因为其自身的分布式特性,数据分布存储在若干个数据分片中,导致其对外没有统一的CDC(change data capture)接口。对于很多需要消费分布式数据库备份数据的第三方工具来说如果没有统一的CDC接口的话,其对每一个分片(即,数据节点,一个分布式数据库包括多个数据节点)都需要部署一个队列,这样不仅需要大量的人力保障运维,还需要额外增加大量中间机资源,费效比非常低下。因此,提供一种面向分布式数据库的CDC数据备份方法和系统对分布式数据库兼容性的完善与对外服务功能的加强有着重要的意义。
[0004]由此可见,相关技术中的消费分布式数据库备份数据的第三方工具存在对每一个数据节点都需要部署一个队列,不仅需要大量的人力保障运维,还需要额外增加大量中间机资源,费效比非常低下的技术问题。
专利技术内容
[0005]本申请提供了一种分布式数据库日志处理方法和装置、电子设备和存储介质,以至少解决相关技术中存在的至少一个技术的问题。
[0006]根据本申请实施例的一个方面,提供了一种分布式数据库日志处理方法,包括:获取所述分布式数据库下多个数据节点中每个数据节点的日志文件;根据所述日志文件中每个节点事务的事务提交信息 ,确定出与每个分布式事务对应的所述节点事务,其中,所述每个节点事务的事务提交信息用于指示所述每个节点事务开始写操作的次序以及所述每个节点事务所属的分布式事务提交时的全局顺序;按照所述与每个分布式事务对应的所述节点事务,对各个所述节点事务进行组合,得到用于指示每个分布式事务的全局日志。
[0007]可选地,如前述的方法,所述获取所述分布式数据库下多个数据节点中每个数据节点的日志文件,包括:获取分布式数据库下多个数据节点中的每个数据节点的二进制日志;将所有所述二进制日志复制至目标备机,得到所述每个数据节点的日志文件。
[0008]可选地,如前述的方法,所述根据所述日志文件中每个节点事务的事务提交信息,
确定出与每个分布式事务对应的所述节点事务,包括:将每个日志文件中的节点事务,读取至所述每个日志文件对应的事务队列中;按照所述每个节点事务的事务提交信息,并通过对各个所述事务队列中的节点事务进行读取,得到所述每个分布式事务对应的所述节点事务。
[0009]可选地,如前述的方法,所述将每个日志文件中的节点事务,读取至所述每个日志文件对应的事务队列中,包括:启动与所述数据节点对应的FETCH线程,并创建与每个FETCH线程对应的所述事务队列;按照与所述每个数据节点对应的FETCH线程,通过所述每个FETCH线程对所述目标备机中的每个日志文件进行读取,得到与所述每个数据节点对应的中继日志;将所述中继日志中的所述节点事务读取至所述事务队列中。
[0010]可选地,如前述的方法,所述按照所述每个节点事务的事务提交信息,并通过对各个所述事务队列中的节点事务进行读取,得到所述每个分布式事务对应的所述节点事务,包括:启动一个目标线程,打开用于存储所述分布式数据库的全局日志信息的全局日志文件,并创建所述目标线程对应的完整队列;通过所述目标线程读取得到每个FETCH线程对应的事务队列中位于第一的首位事务;通过解析每个首位事务的事务提交信息中的首位分布式事务ID以及首位分片信息后,在所有首位事务中确定出指定分布式节点事务,其中,分布式事务ID用于指示唯一的分布式事务,分片信息用于指示所对应的分布式事务中的每个节点事务所分布于的数据节点,分布式节点事务所对应的分片信息涉及多个数据节点,对于任一个所述指定分布式节点事务,所述指定分布式节点事务的首位分片信息指示包含所述指定分布式节点事务的指定分布式事务分布于多个数据节点;按照每个指定分布式节点事务的首位分布式事务ID,依次确定出与每个首位分布式事务ID对应的节点事务组,并将所述节点事务组放入所述完整队列中,其中,与每个首位分布式事务ID对应的节点事务组中包括:所有指定分布式节点事务中与所述每个首位分布式事务ID对应的第一目标分布式节点事务,以及通过所述第一目标分布式节点事务的所述首位分片信息指示的目标数据节点,在所述目标数据节点对应的所述事务队列中,查询到的第二目标分布式节点事务,所述目标数据节点异于所述指定分布式节点事务对应的指定数据节点,所述第二目标分布式节点事务的分布式事务ID与所述第一目标分布式节点事务的所述首位分布式事务ID相同;基于所述与每个首位分布式事务ID对应的节点事务组,得到所述每个分布式事务对应的所述节点事务。
[0011]可选地,如前述的方法,在所述通过所述目标线程读取得到每个FETCH线程中位于第一的首位事务之后,所述方法还包括:对于任一个所述首位事务,在解析所述首位事务的事务提交信息中的首位分布式事务ID以及首位指定分片信息后,确定所述首位事务为单机事务的情况下,将所述首位事务写入所述全局日志文件中。
[0012]可选地,如前任一项所述的方法,在所述获取所述分布式数据库下多个数据节点中的日志信息之前,所述方法还包括:计算节点在确定指定事务开始写操作时,向全局管理组件申请得到与所述指定事务对应的指定全局事务ID;计算节点接收到指定COMMIT(即,提交)请求时,向全局管理组件申请得到与所述指定COMMIT请求所提交的指定分布式事务对应的指定分布式事务ID,确定出所述分布式数据库全局已提交的指定最小全局事务ID,并基于出所述分布式事务涉及的数据单元确定出指定分片信息,其中,所述指定分布式事务包括所述指定事务;所述计算节点将包括所述指定全局事务ID、所述指定分布式事务ID、所述指定最小全局事务ID以及所述指定分片信息的指定事务提交信息作为指定COMMIT请求中的hint信息发送给所述指定事务对应的指定数据节点;所述指定数据节点将作为所述hint信息的所述指定事务提交信息与所述指定事务绑定写入所述指定数据节点的指定日志文件中。
[0013]根据本申请实施例的另一个方面,还提供了一种分布式数据库日志处理装置,包括:获取模块,用于获取所述分布式数据库下多个数据节点中每个数据节点的日志文件;确定模块,用于根据所述日志文件中每个节点事务的事务提交信息,确定出与每个分布式事务对应的所述节点事务,其中,所述每个节点事务的事务提交信息用于指示所述每个节点事务开始写操作的次序以及所述每个节点事务所属的分布式事务提交时的全局本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式数据库日志处理方法,其特征在于,包括:获取所述分布式数据库下多个数据节点中每个数据节点的日志文件;根据所述日志文件中每个节点事务的事务提交信息,确定出与每个分布式事务对应的所述节点事务,其中,所述每个节点事务的事务提交信息用于指示所述每个节点事务开始写操作的次序以及所述每个节点事务所属的分布式事务提交时的全局顺序;按照所述与每个分布式事务对应的所述节点事务,对各个所述节点事务进行组合,得到用于指示每个分布式事务的全局日志。2.根据权利要求1所述的方法,其特征在于,所述获取所述分布式数据库下多个数据节点中每个数据节点的日志文件,包括:获取分布式数据库下多个数据节点中的每个数据节点的二进制日志;将所有所述二进制日志复制至目标备机,得到所述每个数据节点的日志文件。3.根据权利要求2所述的方法,其特征在于,所述根据所述日志文件中每个节点事务的事务提交信息,确定出与每个分布式事务对应的所述节点事务,包括:将每个日志文件中的节点事务,读取至所述每个日志文件对应的事务队列中;按照所述每个节点事务的事务提交信息,并通过对各个所述事务队列中的节点事务进行读取,得到所述每个分布式事务对应的所述节点事务。4.根据权利要求3所述的方法,其特征在于,所述将每个日志文件中的节点事务,读取至所述每个日志文件对应的事务队列中,包括:启动与所述数据节点对应的FETCH线程,并创建与每个FETCH线程对应的所述事务队列;按照与所述每个数据节点对应的FETCH线程,通过所述每个FETCH线程对所述目标备机中的每个日志文件进行读取,得到与所述每个数据节点对应的中继日志;将所述中继日志中的所述节点事务读取至所述事务队列中。5.根据权利要求4所述的方法,其特征在于,所述按照所述每个节点事务的事务提交信息,并通过对各个所述事务队列中的节点事务进行读取,得到所述每个分布式事务对应的所述节点事务,包括:启动一个目标线程,打开用于存储所述分布式数据库的全局日志信息的全局日志文件,并创建所述目标线程对应的完整队列;通过所述目标线程读取得到每个FETCH线程对应的事务队列中位于第一的首位事务;通过解析每个首位事务的事务提交信息中的首位分布式事务ID以及首位分片信息后,在所有首位事务中确定出指定分布式节点事务,其中,分布式事务ID用于指示唯一的分布式事务,分片信息用于指示所对应的分布式事务中的每个节点事务所分布于的数据节点,分布式节点事务所对应的分片信息涉及多个数据节点,对于任一个所述指定分布式节点事务,所述指定分布式节点事务的首位分片信息指示包含所述指定分布式节点事务的指定分布式事务分布于多个数据节点;按照每个指定分布式节点事务的首位分布式事务ID,依次确定出与每个首位分布式事务ID对应的节点事务组,并将所述节点事务组放入所述完整队列中,其中,与每个首位分布式事务ID对应的节点事务组中包括:所有指定分布式节点事务中与所述每个首位分布式事务ID对应的第一目标分布式节点事务,以及通...

【专利技术属性】
技术研发人员:吴沛霆付裕马玉伟周亚运岳新新
申请(专利权)人:金篆信科有限责任公司
类型:发明
国别省市:

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

1