CN117763046A - 集群间数据同步的方法、装置、设备及存储介质 - Google Patents
集群间数据同步的方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117763046A CN117763046A CN202311845109.0A CN202311845109A CN117763046A CN 117763046 A CN117763046 A CN 117763046A CN 202311845109 A CN202311845109 A CN 202311845109A CN 117763046 A CN117763046 A CN 117763046A
- Authority
- CN
- China
- Prior art keywords
- node
- log
- cluster
- active
- written
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 230000008859 change Effects 0.000 claims abstract description 21
- 230000001360 synchronised effect Effects 0.000 claims abstract description 20
- 238000004891 communication Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 27
- 238000011084 recovery Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000009286 beneficial effect Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 230000002085 persistent effect Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请提供一种集群间数据同步的方法、装置、设备及存储介质。该方法包括:主集群中的任一节点在检测到主集群的节点发生变更时,可以执行节点检查操作,并生成预写式日志,将预写式日志归档至节点对应的归档目录中;备集群中的预设同步节点在备集群启动后,可以从主集群的每个节点对应的归档目录中读取节点的预写式日志,根据每个节点的预写式日志中的活跃节点列表,更新优先队列中的日志记录,根据优先队列中的日志记录依次对主集群节点的数据进行同步。本申请的方法,可以在预写式日志中获取集群活跃节点列表,实现了主集群中的节点变更时,备集群可以同步读取主集群节点变更信息,进行正确的数据同步。
Description
技术领域
本申请涉及通计算机领域,尤其涉及一种集群间数据同步的方法、装置、设备及存储介质。
背景技术
归档技术是一种用于持久化和备份数据库事务日志的方法,可以将数据库的预写式日志写入到归档目录中,以便在需要时进行恢复和还原操作。对于复杂且重要的计算业务,需要创造一个高可用的主备集群,需要具备随时准备取代失效主集群的一个或者多个备集群,在主备集群的搭建过程中,归档技术可以用于确保备集群与主集群之间的数据同步和一致性。
在主集群中完成对一个预写式日志的写操作后,可以通知归档进程将其进行归档至归档目录,备集群可以对存在于归档目录里的预写式日志进行恢复,以达到主集群与备集群的数据同步。在主集群宕机的时候,备集群可以自动或手动触发提升为主集群对外提供服务。
然而,在现有技术中,主备集群分别为具有多个节点的共享集群,在主集群有节点加入时,备集群无法读取加入节点产生的预写式日志;主集群有节点退出时,备集群则会一直等待该退出节点的预写式日志。备集群无法同步读取主集群节点变更信息,导致备集群不能进行正确的数据同步。
发明内容
本申请提供一种集群间数据同步的方法、装置、设备及存储介质,用以解决备集群无法同步读取主集群节点变更信息,导致备集群不能进行正确的数据同步的问题。
第一方面,本申请提供一种集群间数据同步的方法,应用于主集群中的任一节点,包括:
在检测到所述主集群的节点发生变更时,执行节点检查操作,并生成预写式日志,所述预写式日志中包括活跃节点列表,所述活跃节点列表中包括当前处于活跃状态的所有节点;
将所述预写式日志归档至所述节点对应的归档目录中。
在一种可能的实施方式中,所述在检测到所述主集群的节点发生变更时,执行节点检查操作,并生成预写式日志,包括:
若检测到所述主集群中新增至少一个节点,则对所述主集群执行节点检查操作,并生成所述预写式日志;其中,所述活跃节点列表中包括所述主集群中原活跃节点的标识以及所述至少一个节点的标识。
在一种可能的实施方式中,所述在检测到所述主集群的节点发生变更时,执行节点检查操作,并生成预写式日志,包括:
若检测到所述节点退出所述主集群时,则在本地执行节点检查操作,生成所述预写式日志;其中,所述活跃节点列表中包括从所述主集群中原活跃节点的标识中删除所述节点的标识后剩余节点的标识。
第二方面,本申请提供一种集群间数据同步的方法,应用于备集群中的预设同步节点,包括:
在所述备集群启动后,从主集群的每个节点对应的归档目录中读取所述节点的预写式日志;其中,预写式日志中包括日志记录和活跃节点列表,所述活跃节点列表中包括所述主集群的当前处于活跃状态的所有节点;
根据每个节点的预写式日志中的活跃节点列表,更新优先队列中的日志记录;
根据所述优先队列中的日志记录依次对所述主集群节点的数据进行同步。
在一种可能的实施方式中,所述根据每个节点的预写式日志中的活跃节点列表,更新优先队列中的日志记录,包括:
若任一节点的预写式日志中的活跃节点列表中指示所述主集群中增加至少一个节点,则在所述优先队列中增加所述至少一个节点中的每个节点对应的队列位置,并在每个节点对应队列位置中加入所述节点的日志记录。
在一种可能的实施方式中,所述根据每个节点的预写式日志中的活跃节点列表,更新优先队列中的日志记录,包括:
若任一节点的预写式日志中的活跃节点列表中指示所述节点退出所述主集群,则在所述优先队列中删除所述节点对应的队列位置。
在一种可能的实施方式中,所述方法还包括:
针对任一节点,若读取到的所述节点的预写式日志中的活跃节点列表相较于上一次的预写式日志中的活跃节点列表,增加了所述至少一个节点的标识,则确定所述主集群中增加所述至少一个节点。
在一种可能的实施方式中,所述方法还包括:
针对任一节点,若读取到的所述节点的预写式日志中的活跃节点列表相较于上一次的预写式日志中的活跃节点列表,删除了所述节点的标识,则确定所述节点退出所述主集群。
第三方面,本申请提供一种集群间数据同步的装置,包括:
处理模块,用于在检测到主集群的节点发生变更时,执行节点检查操作,并生成预写式日志,所述预写式日志中包括活跃节点列表,所述活跃节点列表中包括当前处于活跃状态的所有节点;
归档模块,用于将所述预写式日志归档至所述节点对应的归档目录中。
在一种可能的实施方式中,所述处理模块,具体用于:
若检测到所述主集群中新增至少一个节点,则对所述主集群执行节点检查操作,并生成所述预写式日志;其中,所述活跃节点列表中包括所述主集群中原活跃节点的标识以及所述至少一个节点的标识。
在一种可能的实施方式中,所述处理模块,具体用于:
若检测到所述节点退出所述主集群时,则在本地执行节点检查操作,生成所述预写式日志;其中,所述活跃节点列表中包括从所述主集群中原活跃节点的标识中删除所述节点的标识后剩余节点的标识。
第四方面,本申请提供一种集群间数据同步的装置,包括:
读取模块,用于在备集群启动后,从主集群的每个节点对应的归档目录中读取所述节点的预写式日志;其中,预写式日志中包括日志记录和活跃节点列表,所述活跃节点列表中包括所述主集群的当前处于活跃状态的所有节点;
更新模块,用于根据每个节点的预写式日志中的活跃节点列表,更新优先队列中的日志记录;
同步模块,用于根据所述优先队列中的日志记录依次对所述主集群节点的数据进行同步。
在一种可能的实施方式中,所述更新模块,具体用于:
若任一节点的预写式日志中的活跃节点列表中指示所述主集群中增加至少一个节点,则在所述优先队列中增加所述至少一个节点中的每个节点对应的队列位置,并在每个节点对应队列位置中加入所述节点的日志记录。
在一种可能的实施方式中,所述更新模块,具体用于:
若任一节点的预写式日志中的活跃节点列表中指示所述节点退出所述主集群,则在所述优先队列中删除所述节点对应的队列位置。
在一种可能的实施方式中,所述读取模块,还用于:
针对任一节点,若读取到的所述节点的预写式日志中的活跃节点列表相较于上一次的预写式日志中的活跃节点列表,增加了所述至少一个节点的标识,则确定所述主集群中增加所述至少一个节点。
在一种可能的实施方式中,所述读取模块,还用于:
针对任一节点,若读取到的所述节点的预写式日志中的活跃节点列表相较于上一次的预写式日志中的活跃节点列表,删除了所述节点的标识,则确定所述节点退出所述主集群。
第五方面,本申请提供一种电子设备,包括:处理器、存储器和通信接口;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如第一方面或第二方面任一项所述的集群间数据同步的方法。
第六方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当所述计算机执行指令被处理器执行时用于实现第一方面或第二方面任一项所述的集群间数据同步的方法。
第七方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面或第二方面任一项所述的集群间数据同步的方法。
本申请提供的集群间数据同步的方法、装置、设备及存储介质,通过在控制和管理数据库的事务日志结构中加入活跃节点列表获得预写式日志,在检测到主集群的节点发生变更时,执行节点检查操作,生成带有活跃节点列表的预写式日志,将预写式日志归档至节点对应的归档目录中,在备集群启动后,可以从主集群的每个节点对应的归档目录中读取节点的预写式日志,根据每个节点的预写式日志中的活跃节点列表,更新优先队列中的日志记录;根据优先队列中的日志记录依次对主集群节点的数据进行同步。实现了主集群中的节点变更时,备集群可以同步读取主集群节点变更信息,进行正确的数据同步。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种集群间数据同步的示意图;
图2为本申请提供的集群间数据同步的方法实施例一的流程示意图;
图3为本申请实施例提供的一种预写式日志的结构示意图;
图4为本申请提供的集群间数据同步的方法实施例二的流程示意图;
图5为本申请提供的集群间数据同步的方法实施例三的流程示意图;
图6为本申请实施例提供的一种备集群升为主集群的流程示意图;
图7为本申请提供的集群间数据同步的装置实施例一的结构示意图;
图8为本申请提供的集群间数据同步的装置实施例二的结构示意图;
图9为本申请实施例提供的一种电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
为了便于理解,下面,结合图1,对本申请实施例所适用的应用场景进行说明。
图1为本申请实施例提供的一种集群间数据同步的示意图。请参见图1,主集群可以包括多个节点,在节点中对数据进行写入操作或修改操作时都可以独立产生预写式日志,并将产生的预写式日志归档至节点对应的归档目录中。备集群中的预设同步节点可以从主集群的每个节点对应的归档目录中读取节点的预写式日志,并根据预写式日志对主集群节点的数据进行同步。
例如,主集群可以包括节点1和节点2,归档目录可以包括归档目录1和归档目录2,备集群可以包括预设同步节点。其中,归档目录1用来归档节点1产生的预写式日志,归档目录2用来归档节点2产生的预写式日志,预设同步节点可以读取归档目录1和归档目录2中归档的预写式日志。
在节点1写入了一条数据1时,节点1可以产生预写式日志1,并将产生的预写式日志1归档至节点1对应的归档目录1中,备集群中的预设同步节点可以从主集群的节点1对应的归档目录1中读取节点1的预写式日志1,并根据预写式日志1对主集群节点1写入的数据1进行同步。
可选的,在主备集群启动前,备集群中可以备份有与主集群一致的数据,在主备集群启动后,对主集群节点2中的一条数据进行修改得到数据2时,节点2可以产生预写式日志2,并将产生的预写式日志2归档至节点2对应的归档目录2中,备集群中的预设同步节点可以从主集群的节点2对应的归档目录2中读取节点2的预写式日志2,并根据预写式日志2对备集群中对应的数据进行修改得到数据2。
然而,在现有技术中,主备集群分别为具有多个节点的共享集群,在主集群有节点加入时,备集群无法读取加入节点产生的预写式日志;主集群有节点退出时,备集群则会一直等待该退出节点的预写式日志。备集群无法同步读取主集群节点变更信息,导致备集群不能进行正确的数据同步。
针对现有技术中,备集群在主集群节点变更之时,无法同步获得变更信息的问题,发明人在研究集群间数据同步的过程中发现,可以通过在控制和管理数据库的事务日志结构中加入活跃节点列表获得预写式日志,在检测到主集群的节点发生变更时,执行节点检查(checkpoint)操作,生成带有活跃节点列表的预写式日志,将预写式日志归档至节点对应的归档目录中,在备集群启动后,可以从主集群的每个节点对应的归档目录中读取节点的预写式日志,根据每个节点的预写式日志中的活跃节点列表,更新优先队列中的日志记录,根据优先队列中的日志记录依次对主集群节点的数据进行同步。基于此,发明人提出一种集群间数据同步的方法、装置、设备及存储介质,可以实现主集群中节点变更时,备集群可以同步读取主集群节点变更信息,进行正确的数据同步。
下面,对通过具体实施例对本申请所示的技术方案进行详细说明。需要说明的是,下面几个实施例可以单独存在,也可以相互结合,对于相同或相似的内容,在不同的实施例中不再重复说明。
图2为本申请提供的集群间数据同步的方法实施例一的流程示意图。请参见图2,该方法包括:
S101、在检测到主集群的节点发生变更时,执行节点检查操作,并生成预写式日志。
主集群的任一节点在检测到主集群的节点发生变更时,可以执行checkpoint操作,顺序生成预写式日志,预写式日志中包括活跃节点列表,活跃节点列表中包括当前处于活跃状态的所有节点。
在一种具体的实施方式中,节点在执行全局checkpoint或者本地checkpoint后,生成的预写式日志中可以包括活跃节点列表,否则,节点正常工作时产生的预写式日志中不包括活跃节点列表。
图3为本申请实施例提供的一种预写式日志的结构示意图。请参见图3,节点在执行checkpoint后,可以生产预写式日志,预写式日志中可以包括活跃节点列表。
checkpoint是一种机制,用于控制和管理数据库的事务日志,以确保系统的一致性和恢复能力,checkpoint是在数据库中定期创建的一个标记,它表示此时数据库的一致状态,并将相关的事务日志写入持久存储。
在一种具体的实施方式中,预写式日志中还包括日志记录,可以用来对主集群节点的数据进行同步。例如,预写式日志1还包括日志记录1、预写式日志2还包括日志记录2、……、预写式日志8还包括日志记录8。
可选的,活跃节点是指在主备集群信息同步的过程中,节点可以连续产生预写式日志,并根据归档命令持续进行归档,将节点产生的预写式日志归档到各个节点对应的归档目录中。
可选的,节点变更是指主集群在工作过程中新增加了活跃节点或者有活跃节点退出。
在一种具体的实施方式中,集群在搭建完成后,主集群和备集群可以分别拥有不同数量的节点。例如,集群在搭建完成后,主集群可以拥有3个节点,分别为节点1、节点2和节点3;备集群可以有2个节点,分别为节点1和节点2,其中,节点1可以为预设同步节点,用来从主集群的每个节点对应的归档目录中读取节点的预写式日志。
可选的,在基于共享存储的多节点集群中,采用的是每个节点独立产生预写式日志的方案,单节点内产生预写式日志只记录本节点所做的事务。不同节点间产生的预写式日志可以通过使用全局标识SCN(System Change Number)来标识各个节点间日志产生的顺序。例如,节点1先产生了一条预写式日志,节点2后产生了一条预写式日志,可以用全局标识“1”来标识节点1先产生的预写式日志,用全局标识“2”来标识节点2后产生的预写式日志。
在一种具体实施方式中,主集群在正常启动时,所有节点可以先执行一次全局checkpoint,并产生预写式日志。例如,主集群在启动时,节点1和节点2顺序启动为活跃节点,节点3未启动为停止状态。节点1可以产生预写式日志1,节点2可以产生预写式日志2,由于节点3未启动,则可以由主集群在启动时,顺序产生第一条预写式日志1的节点1产生节点3的预写式日志3。可选的,预写式日志3中的日志记录3可以为空,恢复时可以跳过。
需要说明的是,主集群在启动时,同样可以认为是主集群的节点进行了变更,可以执行全局checkpoint操作。
例如,若主集群有3个节点,分别为节点1、节点2和节点3,主集群在启动时,执行全局checkpoint操作,生成预写式日志,主集群在工作过程中,节点3加入主集群,所有节点执行全局checkpoint,生成预写式日志。预写式日志和活跃节点列表可以如表1所示:
表1
表中“—”代表节点不产生预写式日志,表中“\”代表不存在活跃节点列表。
S102、将预写式日志归档至节点对应的归档目录中。
主集群的任一节点在检测到主集群的节点发生变更时,顺序生成预写式日志后,可以将生成的预写式日志归档至节点对应的归档目录中。
可选的,归档目录可以位于主集群与备集群之间的第三者机器,也可以时位于主集群中的任一节点所在位置。
在一种具体的实施方式中,归档目录中存在与主集群中所有节点对应的子目录。例如,主集群在搭建时,有3个节点,分别为节点1、节点2和节点3,则归档目录中可以有3个子目录,分别为归档目录1、归档目录2和归档目录3,归档目录1可以归档节点1产生的预写式日志,归档目录2可以归档节点2产生的预写式日志,归档目录3可以归档节点3产生的预写式日志。
例如,节点1产生的预写式日志,节点2产生的预写式日志,以及节点3产生的预写式日志可以归档至不同节点对应的归档目录中,具体归档结果可以如表2所示:
表2
S103、在备集群启动后,从主集群的每个节点对应的归档目录中读取节点的预写式日志。
为了实现主备集群数据的同步,在备集群启动后,备集群中的预设同步节点可以执行预写式日志的恢复,从主集群的每个节点对应的归档目录中读取节点的预写式日志。其中,预写式日志中包括日志记录和活跃节点列表,活跃节点列表中包括主集群的当前处于活跃状态的所有节点。
在一种具体的实施方式中,备集群启动后,预设同步节点可以读取归档目录中每一个节点的checkpoint的预写式日志,并从其中获得主集群中的活跃节点列表,将活跃节点的预写式日志中的日志记录加入优先队列中。
例如,预设同步节点可以读取归档目录1中节点1的预写式日志1,读取归档目录2中节点2的预写式日志2,读取归档目录3中节点3的预写式日志3。由于活跃节点列表中包含节点1和节点2,则可以将预写式日志1中的日志记录1放入优先队列,将预写式日志2中的日志记录2放入优先队列。
可选的,优先队列可以处于预设同步节点中,优先队列的队列数与主集群节点的数量可以进行一一对应,用来存放不同节点产生的预写式日志中的日志记录,一个队列可以存放一条日志记录,在恢复完一个节点中顺序产生的一条预写式日志后,队列中新的日志记录可以从该节点的归档目录中的下一条预写式日志中读取。例如,队列1存放的是预写式日志1的日志记录,在恢复完节点1中顺序产生的预写式日志1后,队列中新的日志记录可以从节点1的归档目录1的预写式日志4中获取。
例如,备集群启动后,备集群中的预设同步节点可以从主集群节点对应的归档目录中读取节点的预写式日志,并将活跃节点的日志记录放入优先队列,优先队列的结构及存放的日志数据可以如表3所示:
表3
队列编号 | 日志记录 | 活跃节点 | 备注 |
队列1 | 日志记录1 | 节点1 | 预写式日志1 |
队列2 | 日志记录2 | 节点2 | 预写式日志2 |
队列3 | — | — | 预写式日志3 |
表中“—”为“空”,代表此队列未被使用,即未存放日志记录。
S104、根据每个节点的预写式日志中的活跃节点列表,更新优先队列中的日志记录。
在对预写式日志的恢复过程中,每一次从优先队列中读取日志记录之前,可以判断一次主集群的活跃节点列表是否发生变化,如果主集群的活跃节点列表发生变化,则更新优先队列中的日志记录。
例如,读取日志记录5之前,可以判断出主集群的活跃节点列表未发生变化,则不更新优先队列中的日志记录;读取日志记录6之前,可以判断出主集群的活跃节点列表发生变化,增加了节点3,则可以更新优先队列中的日志记录,将归档目录3中预写式日志8中的日志记录8加入到队列3中。
S105、根据优先队列中的日志记录依次对主集群节点的数据进行同步。
根据优先队列中的日志记录依次对主集群节点的数据进行同步的过程中,可以从恢复的起点读取每一个节点的预写式日志,将预写式日志中的日志记录放入优先队列中,根据SCN最小优先级最高的原则,选取一个节点的日志记录进行恢复,并从归档目录中读取此节点的下一条日志记录加入优先队列中,再次选择优先级最高的日志记录进行恢复,直至完成数据同步。
例如,备集群启动时,可以读取节点1的预写式日志1,节点2的预写式日志2,以及节点3的预写式日志3,由于节点1和节点2是活跃节点,可以将预写式日志1中的日志记录1放入队列1中,将预写式日志2中的日志记录2放入队列2中,由于预写式日志1的SCN小于预写式日志2,则可选取节点1的日志记录1进行恢复,并从归档目录1中读取节点1的下一条预写式日志4中的日志记录4加入队列1中,由于预写式日志4的SCN大于预写式日志2,则可选取节点2的日志记录2进行恢复,以此类推,直至完成对主集群节点的数据同步。
在本申请实施例中,主集群中的任一节点在检测到主集群的节点发生变更时,可以执行节点检查操作,并生成预写式日志,进一步,还可以将预写式日志归档至节点对应的归档目录中;备集群中的预设同步节点在备集群启动后,从主集群的每个节点对应的归档目录中读取节点的预写式日志,根据每个节点的预写式日志中的活跃节点列表,更新优先队列中的日志记录,根据优先队列中的日志记录依次对主集群节点的数据进行同步。在数据同步过程中,可以在预写式日志中获取集群活跃节点列表,实现了主集群中节点变更时,备集群可以同步读取主集群节点变更信息,进行正确的数据同步。
在图2所示实施例的基础上,下面,结合图4,对上述集群间数据同步的方法中涉及到的节点增加进行进一步说明。
图4为本申请提供的集群间数据同步的方法实施例二的流程示意图。请参见图4,该方法包括:
S201、若检测到主集群中新增至少一个节点,则对主集群执行节点检查操作,并生成预写式日志。
主集群在工作过程中,若主集群的任一节点检测到主集群中新增至少一个节点时,可以执行全局checkpoint,并生成预写式日志,预写式日志中包括活跃节点列表,活跃节点列表中包括主集群中原活跃节点的标识以及至少一个节点的标识。
例如,主集群在启动时,节点1可以产生预写式日志1,节点2可以产生预写式日志2,节点3未启动,可以由节点1产生节点3的预写式日志3,在主集群工作过程中,节点1可以产生预写式日志4,节点2可以产生预写式日志5。主集群的节点1在检测到主集群中新增一个节点3时,可以执行全局checkpoint,并生成预写式日志6,预写式日志6中包括活跃节点列表,活跃节点列表中包括主集群中原活跃节点的标识,分别为节点1和节点2,以及新增节点3的标识为节点3。
S202、将预写式日志归档至节点对应的归档目录中。
需要说明的是,步骤S202的具体执行过程可以参见步骤S102的具体执行过程,此处不再进行赘述。
S203、在备集群启动后,从主集群的每个节点对应的归档目录中读取节点的预写式日志。
备集群启动后,预设同步节点可以读取归档目录中每一个节点的全局checkpoint的预写式日志,并从其中获得主集群中的活跃节点列表,将活跃节点的预写式日志中的日志记录加入优先队列中。
例如,预设同步节点可以读取归档目录1中节点1的预写式日志1,读取归档目录2中节点2的预写式日志2,读取归档目录3中节点3的预写式日志3。由于活跃节点列表中包含节点1和节点2,则可以将预写式日志1中的日志记录1放入队列1,将预写式日志2中的日志记录2放入队列2。
S204、若任一节点的预写式日志中的活跃节点列表中指示主集群中增加至少一个节点,则在优先队列中增加至少一个节点中的每个节点对应的队列位置,并在每个节点对应队列位置中加入节点的日志记录。
备集群中的预设同步节点在读取到任一节点的预写式日志时,从预写式日志中的活跃节点列表获取到指示主集群中增加至少一个节点的标识时,可以在优先队列中增加至少一个节点中的每个节点对应的队列位置,并在每个节点对应队列位置中加入节点的日志记录。
例如,备集群中的预设同步节点在读取到节点1的预写式日志6时,从预写式日志6中的活跃节点列表获取到指示主集群中增加节点3的标识,则可以在优先队列中增加节点3对应的队列3位置,并在节点3对应队列3的位置中加入节点3的日志记录8。
S205、针对任一节点,若读取到的节点的预写式日志中的活跃节点列表相较于上一次的预写式日志中的活跃节点列表,增加了至少一个节点的标识,则确定主集群中增加至少一个节点。
备集群中的预设同步节点在读取任一节点对应的归档目录中的预写式日志时,读取到的节点的预写式日志中的活跃节点列表相较于上一次的预写式日志中的活跃节点列表,增加了至少一个节点的标识,则可以确定主集群中增加至少一个节点。
例如,备集群中的预设同步节点在读取节点1对应的归档目录1中的预写式日志时,读取到的节点1的预写式日志6中的活跃节点列表相较于上一次的预写式日志1中的活跃节点列表,增加了节点3的标识,则可以确定主集群中增加了节点3。
S206、根据优先队列中的日志记录依次对主集群节点的数据进行同步。
需要说明的是,步骤S206的具体执行过程可以参见步骤S105的具体执行过程,此处不再进行赘述。
在本申请实施例中,主集群中的任一节点若检测到主集群中新增至少一个节点,则对主集群执行节点检查操作,并生成预写式日志,进一步,还可以将预写式日志归档至节点对应的归档目录中;备集群中的预设同步节点在备集群启动后,从主集群的每个节点对应的归档目录中读取节点的预写式日志,若任一节点的预写式日志中的活跃节点列表中指示主集群中增加至少一个节点,则在优先队列中增加至少一个节点中的每个节点对应的队列位置,并在每个节点对应队列位置中加入节点的日志记录,针对任一节点,若读取到的节点的预写式日志中的活跃节点列表相较于上一次的预写式日志中的活跃节点列表,增加了至少一个节点的标识,则确定主集群中增加至少一个节点,根据优先队列中的日志记录依次对主集群节点的数据进行同步。在数据同步过程中,实现了主集群中节点新增时,备集群可以同步读取主集群节点变更信息以及新增节点产生的预写式日志,进行正确的数据同步。
在图2所示实施例的基础上,下面,结合图5,对上述集群间数据同步的方法中涉及到的节点退出进行进一步说明。
图5为本申请提供的集群间数据同步的方法实施例三的流程示意图。请参见图5,该方法包括:
S301、若检测到节点退出主集群时,则在本地执行节点检查操作,生成预写式日志。
若主集群的任一节点退出主集群时,则可以在退出节点执行本地checkpoint,并生成预写式日志,预写式日志中包括活跃节点列表,活跃节点列表中包括从主集群中原活跃节点的标识中删除退出节点的标识后剩余节点的标识。
例如,主集群工作过程中,节点1可以产生预写式日志4,节点2可以产生预写式日志5,主集群的节点3在退出时,可以执行本地checkpoint,并生成预写式日志6,预写式日志6中包括活跃节点列表,活跃节点列表中包括从主集群中原活跃节点的标识中删除退出节点3的标识后剩余节点的标识。其中,剩余节点的标识可以为标识1和标识2,预写式日志和活跃节点列表可以如表4所示:
表4
S302、将预写式日志归档至节点对应的归档目录中。
需要说明的是,步骤S302的具体执行过程可以参见步骤S102的具体执行过程,此处不再进行赘述。
S303、在备集群启动后,从主集群的每个节点对应的归档目录中读取节点的预写式日志。
备集群启动后,预设同步节点可以读取归档目录中每一个节点的全局checkpoint的预写式日志,并从其中获得主集群中的活跃节点列表,将活跃节点的预写式日志中的日志记录加入优先队列中。
例如,预设同步节点可以读取归档目录1中节点1的预写式日志1,读取归档目录2中节点2的预写式日志2,读取归档目录3中节点3的预写式日志3。由于活跃节点列表中包含节点1、节点2和节点3,则可以将预写式日志1中的日志记录1放入队列1,将预写式日志2中的日志记录2放入队列2,将预写式日志3中的日志记录3放入队列3。
S304、若任一节点的预写式日志中的活跃节点列表中指示节点退出主集群,则在优先队列中删除节点对应的队列位置。
备集群中的预设同步节点在读取到任一节点的预写式日志时,从预写式日志中的活跃节点列表中获取到指示节点退出主集群时,可以在优先队列中删除退出节点对应的队列位置。
例如,备集群中的预设同步节点在读取到节点3的预写式日志6时,从预写式日志6中的活跃节点列表获取到指示节点3退出主集群时,则可以在优先队列中删除节点3对应的队列3位置。
S305、针对任一节点,若读取到的节点的预写式日志中的活跃节点列表相较于上一次的预写式日志中的活跃节点列表,删除了节点的标识,则确定节点退出主集群。
备集群中的预设同步节点在读取任一节点对应的归档目录中的预写式日志时,读取到预写式日志中的活跃节点列表相较于上一次的预写式日志中的活跃节点列表,删除了节点的标识,则可以确定节点退出主集群。
例如,备集群中的预设同步节点在读取节点3对应的归档目录3中的预写式日志时,读取到的节点3的预写式日志6中的活跃节点列表相较于上一次的预写式日志3中的活跃节点列表,删除了节点3的标识,则可以确定节点3退出主集群。
S306、根据优先队列中的日志记录依次对主集群节点的数据进行同步。
需要说明的是,步骤S306的具体执行过程可以参见步骤S105的具体执行过程,此处不再进行赘述。
在本申请实施例中,若检测到节点退出主集群时,则在本地执行节点检查操作,生成预写式日志,进一步,还可以将预写式日志归档至节点对应的归档目录中;备集群中的预设同步节点在备集群启动后,从主集群的每个节点对应的归档目录中读取节点的预写式日志,若任一节点的预写式日志中的活跃节点列表中指示节点退出主集群,则在优先队列中删除节点对应的队列位置,针对任一节点,若读取到的节点的预写式日志中的活跃节点列表相较于上一次的预写式日志中的活跃节点列表,删除了节点的标识,则确定节点退出主集群,根据优先队列中的日志记录依次对主集群节点的数据进行同步。在数据同步过程中,实现了主集群中节点退出时,备集群可以同步读取主集群节点变更信息以及删除退出节点对应的队列位置,进行正确的数据同步。
图6为本申请实施例提供的一种备集群升为主集群的流程示意图。请参见图6,该流程包括:
S401、开始恢复。
备集群的预设同步节点可以从主集群的归档目录中读取预写式日志。
S402、主集群是否有节点加入。
备集群的预设同步节点可以根据读取的预写式日志中的活跃节点列表判断出主集群是否有节点加入。若是,则执S403;若否,则执行S404。
S403、读取此节点日志记录加入优先队列。
S404、从优先队列中读取日志记录。
S405、恢复。
备集群的预设同步节点可以根据从优先队列中读取日志记录依次对主集群节点的数据进行同步。
S406、此节点在主集群中是否退出。
备集群的预设同步节点可以根据读取的预写式日志判断主集群中是否有节点退出,退出的节点可以是主集群运行过程中新加入的节点,也可以是主集群启动时的活跃节点。若否,则执行S407;若是,则执行S408。
S407、读取此节点日志记录加入优先队列。
备集群的预设同步节点可以继续读取此节点的预写式日志,并将预写式日志中的日志记录加入节点对应的队列。
S408、是否升为主集群。
备集群的预设同步节点会一直同步主集群节点的数据,在对主集群节点的数据进行同步的过程中,可以决定备集群是否可以升为主集群。若是,则执行S409,升为主集群;若否,则执行S401从主集群的归档目录中读取预写式日志,继续执行数据同步的过程。
S409、升为主集群。
若主集群崩溃,则备集群可以通过自动触发方式或者手动触发方式升为主集群。其中,自动触发方式的实现过程可以是:在集群的搭建过程中,进行预定义,若主集群崩溃则备集群自动升为主集群;手动触发方式的实现过程可以是:在备集群中写入触发备集群升为主集群的文件,当备集群检测到该文件时,则可以升为主集群。
本申请实施例提供的备集群升为主集群的流程可以参见上述方法实施例提供的集群间数据同步方法。可以实现为基于共享存储的主集群搭建备集群,在主集群的节点变更时,主备集群之间能及时进行数据同步,直至主集群崩溃,备集群可以通过自动触发方式或者手动触发方式升为主集群,确保系统的高可用性和容错性。
图7为本申请提供的集群间数据同步的装置实施例一的结构示意图。请参见图7,集群间数据同步的装置10,包括:
处理模块11,用于在检测到主集群的节点发生变更时,执行节点检查操作,并生成预写式日志,所述预写式日志中包括活跃节点列表,所述活跃节点列表中包括当前处于活跃状态的所有节点;
归档模块12,用于将所述预写式日志归档至所述节点对应的归档目录中。
本申请实施例提供的集群间数据同步的装置可以执行上述实施例所示的技术方案,其实现原理以及有益效果类似、此处不再赘述。
在一种可能的实施方式中,所述处理模块11,具体用于:
若检测到所述主集群中新增至少一个节点,则对所述主集群执行节点检查操作,并生成所述预写式日志;其中,所述活跃节点列表中包括所述主集群中原活跃节点的标识以及所述至少一个节点的标识。
在一种可能的实施方式中,所述处理模块11,具体用于:
若检测到所述节点退出所述主集群时,则在本地执行节点检查操作,生成所述预写式日志;其中,所述活跃节点列表中包括从所述主集群中原活跃节点的标识中删除所述节点的标识后剩余节点的标识。
本申请实施例提供的集群间数据同步的装置可以执行上述实施例所示的技术方案,其实现原理以及有益效果类似、此处不再赘述。
图8为本申请提供的集群间数据同步的装置实施例二的结构示意图。请参见图8,集群间数据同步的装置20,包括:
读取模块21,用于在备集群启动后,从主集群的每个节点对应的归档目录中读取所述节点的预写式日志;其中,预写式日志中包括日志记录和活跃节点列表,所述活跃节点列表中包括所述主集群的当前处于活跃状态的所有节点;
更新模块22,用于根据每个节点的预写式日志中的活跃节点列表,更新优先队列中的日志记录;
同步模块23,用于根据所述优先队列中的日志记录依次对所述主集群节点的数据进行同步。
本申请实施例提供的集群间数据同步的装置可以执行上述实施例所示的技术方案,其实现原理以及有益效果类似、此处不再赘述。
在一种可能的实施方式中,所述更新模块22,具体用于:
若任一节点的预写式日志中的活跃节点列表中指示所述主集群中增加至少一个节点,则在所述优先队列中增加所述至少一个节点中的每个节点对应的队列位置,并在每个节点对应队列位置中加入所述节点的日志记录。
在一种可能的实施方式中,所述更新模块22,具体用于:
若任一节点的预写式日志中的活跃节点列表中指示所述节点退出所述主集群,则在所述优先队列中删除所述节点对应的队列位置。
在一种可能的实施方式中,所述读取模块21,还用于:
针对任一节点,若读取到的所述节点的预写式日志中的活跃节点列表相较于上一次的预写式日志中的活跃节点列表,增加了所述至少一个节点的标识,则确定所述主集群中增加所述至少一个节点。
在一种可能的实施方式中,所述读取模块21,还用于:
针对任一节点,若读取到的所述节点的预写式日志中的活跃节点列表相较于上一次的预写式日志中的活跃节点列表,删除了所述节点的标识,则确定所述节点退出所述主集群。
本申请实施例提供的集群间数据同步的装置可以执行上述实施例所示的技术方案,其实现原理以及有益效果类似、此处不再赘述。
图9为本申请实施例提供的一种电子设备的结构示意图。请参见图9,该电子设备30可以包括处理器31,存储器32和通信接口34。示例性地,处理器31,存储器32和通信接口34通过总线33相互连接。
所述存储器32存储计算机执行指令;
所述处理器31执行所述存储器32存储的计算机执行指令,使得所述处理器31执行如上述方法实施例提供的集群间数据同步的方法。
本申请实施例提供的电子设备可以为上述实施例所述的主集群中的任一节点或备集群中的预设同步节点,可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
相应地,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当所述计算机执行指令被处理器执行时用于实现上述任一方法实施例提供的集群间数据同步的方法。
相应地,本申请实施例还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,可实现上述任一方法实施例提供的集群间数据同步的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (12)
1.一种集群间数据同步的方法,其特征在于,应用于主集群中的任一节点,包括:
在检测到所述主集群的节点发生变更时,执行节点检查操作,并生成预写式日志,所述预写式日志中包括活跃节点列表,所述活跃节点列表中包括当前处于活跃状态的所有节点;
将所述预写式日志归档至所述节点对应的归档目录中。
2.根据权利要求1所述的方法,其特征在于,所述在检测到所述主集群的节点发生变更时,执行节点检查操作,并生成预写式日志,包括:
若检测到所述主集群中新增至少一个节点,则对所述主集群执行节点检查操作,并生成所述预写式日志;其中,所述活跃节点列表中包括所述主集群中原活跃节点的标识以及所述至少一个节点的标识。
3.根据权利要求1所述的方法,其特征在于,所述在检测到所述主集群的节点发生变更时,执行节点检查操作,并生成预写式日志,包括:
若检测到所述节点退出所述主集群时,则在本地执行节点检查操作,生成所述预写式日志;其中,所述活跃节点列表中包括从所述主集群中原活跃节点的标识中删除所述节点的标识后剩余节点的标识。
4.一种集群间数据同步的方法,其特征在于,应用于备集群中的预设同步节点,包括:
在所述备集群启动后,从主集群的每个节点对应的归档目录中读取所述节点的预写式日志;其中,预写式日志中包括日志记录和活跃节点列表,所述活跃节点列表中包括所述主集群的当前处于活跃状态的所有节点;
根据每个节点的预写式日志中的活跃节点列表,更新优先队列中的日志记录;
根据所述优先队列中的日志记录依次对所述主集群节点的数据进行同步。
5.根据权利要求4所述的方法,其特征在于,所述根据每个节点的预写式日志中的活跃节点列表,更新优先队列中的日志记录,包括:
若任一节点的预写式日志中的活跃节点列表中指示所述主集群中增加至少一个节点,则在所述优先队列中增加所述至少一个节点中的每个节点对应的队列位置,并在每个节点对应队列位置中加入所述节点的日志记录。
6.根据权利要求4所述的方法,其特征在于,所述根据每个节点的预写式日志中的活跃节点列表,更新优先队列中的日志记录,包括:
若任一节点的预写式日志中的活跃节点列表中指示所述节点退出所述主集群,则在所述优先队列中删除所述节点对应的队列位置。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
针对任一节点,若读取到的所述节点的预写式日志中的活跃节点列表相较于上一次的预写式日志中的活跃节点列表,增加了所述至少一个节点的标识,则确定所述主集群中增加所述至少一个节点。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
针对任一节点,若读取到的所述节点的预写式日志中的活跃节点列表相较于上一次的预写式日志中的活跃节点列表,删除了所述节点的标识,则确定所述节点退出所述主集群。
9.一种集群间数据同步的装置,其特征在于,包括:
处理模块,用于在检测到主集群的节点发生变更时,执行节点检查操作,并生成预写式日志,所述预写式日志中包括活跃节点列表,所述活跃节点列表中包括当前处于活跃状态的所有节点;
归档模块,用于将所述预写式日志归档至所述节点对应的归档目录中。
10.一种集群间数据同步的装置,其特征在于,包括:
读取模块,用于在备集群启动后,从主集群的每个节点对应的归档目录中读取所述节点的预写式日志;其中,预写式日志中包括日志记录和活跃节点列表,所述活跃节点列表中包括所述主集群的当前处于活跃状态的所有节点;
更新模块,用于根据每个节点的预写式日志中的活跃节点列表,更新优先队列中的日志记录;
同步模块,用于根据所述优先队列中的日志记录依次对所述主集群节点的数据进行同步。
11.一种电子设备,其特征在于,包括:处理器、存储器和通信接口;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如权利要求1至8任一项所述的集群间数据同步的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至8任一项所述的集群间数据同步的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311845109.0A CN117763046A (zh) | 2023-12-28 | 2023-12-28 | 集群间数据同步的方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311845109.0A CN117763046A (zh) | 2023-12-28 | 2023-12-28 | 集群间数据同步的方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117763046A true CN117763046A (zh) | 2024-03-26 |
Family
ID=90310464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311845109.0A Pending CN117763046A (zh) | 2023-12-28 | 2023-12-28 | 集群间数据同步的方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117763046A (zh) |
-
2023
- 2023-12-28 CN CN202311845109.0A patent/CN117763046A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110019140B (zh) | 数据迁移方法、装置、设备以及计算机可读存储介质 | |
US7197615B2 (en) | Remote copy system maintaining consistency | |
CN103077222B (zh) | 机群文件系统分布式元数据一致性保证方法及系统 | |
US8874515B2 (en) | Low level object version tracking using non-volatile memory write generations | |
CN108416040B (zh) | 一种数据库修复方法、装置、终端设备及存储介质 | |
JP4419884B2 (ja) | データ複製装置、方法及びプログラム並びに記憶システム | |
WO2021136422A1 (zh) | 状态管理方法、主备应用服务器的切换方法及电子设备 | |
US9075535B2 (en) | Source cleaning cascaded volumes using reference counts | |
CN111078667B (zh) | 一种数据迁移的方法以及相关装置 | |
CN107451172B (zh) | 用于版本管理系统的数据同步方法及设备 | |
EP3147797B1 (en) | Data management method, node and system for database cluster | |
CN109189860A (zh) | 一种基于Kubernetes系统的MySQL主备增量同步方法 | |
CN111506253B (zh) | 一种分布式存储系统及其存储方法 | |
CN108614876B (zh) | 一种基于Redis数据库的系统和数据处理方法 | |
CN102750322B (zh) | 一种机群文件系统分布式元数据一致性保证方法和系统 | |
CN104881418A (zh) | 用于MySQL的快速回收回滚空间的方法和装置 | |
KR20170054767A (ko) | 데이터베이스 관리 시스템 및 그의 데이터 변경 및 복구 방법 | |
EP3035215A1 (en) | File system, control method for file system, and control program for file system | |
CN110858168A (zh) | 集群节点故障处理方法、装置及集群节点 | |
CN117763046A (zh) | 集群间数据同步的方法、装置、设备及存储介质 | |
US20130262804A1 (en) | Data duplication system, data duplication method, and program thereof | |
CN111176886A (zh) | 一种数据库模式的切换方法、装置及电子设备 | |
CN112698926A (zh) | 数据处理方法、装置、设备、存储介质及系统 | |
CN103838639A (zh) | 一种恢复虚拟磁盘元数据的方法、装置及系统 | |
CN117349381A (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 |