CN112966046B - 数据同步方法和装置、电子设备和存储介质 - Google Patents
数据同步方法和装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN112966046B CN112966046B CN202110237204.7A CN202110237204A CN112966046B CN 112966046 B CN112966046 B CN 112966046B CN 202110237204 A CN202110237204 A CN 202110237204A CN 112966046 B CN112966046 B CN 112966046B
- Authority
- CN
- China
- Prior art keywords
- node
- data
- target
- file
- synchronization
- 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
- 238000000034 method Methods 0.000 title claims abstract description 88
- 230000001360 synchronised effect Effects 0.000 claims description 33
- 238000004891 communication Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 abstract description 9
- 238000005516 engineering process Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 20
- 230000007246 mechanism Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000010076 replication Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据同步方法和装置、电子设备和存储介质,其中,该方法包括:接收第一节点发送的目标同步请求,其中,目标同步请求用于请求第二节点向第一节点同步数据;在确定向第一节点进行增量同步的情况下,获取第一操作记录,其中,第一操作记录是从第一磁盘文件中获取的数据操作记录,第一磁盘文件用于保存第二节点上的数据操作记录;响应目标同步请求,将第一操作记录发送给第一节点,以在第一节点基于第一操作记录进行增量同步。通过本申请,解决了相关技术中的主从同步方式存在内存资源占用量大的问题。
Description
技术领域
本申请涉及数据处理领域,尤其涉及一种数据同步方法和装置、电子设备和存储介质。
背景技术
目前,数据库系统中的主从同步模式主要有两个,一个是sync模式(同步模式,全量同步),一个是psync模式(异步模式,增量同步)。以Redis(Remote Dictionary Server,即远程字典服务)为例,全量同步是指:主节点在接收到从节点的sync命令之后,基于bgsave(后台保存)命令将某一时刻之前的快照(备份的数据库数据)保存成RDB(RedisDatabase,Redis数据库)文件,并将生成的RDB文件中的数据发送给从节点。增量同步是指:基于上次的复制缓冲位置,如果在内存的复制缓冲区(复制积压缓冲区,backlog缓冲区)存在需要的增量数据可以继续断点位置同步。
然而,对于全量同步的方式,基于bgsave逻辑需要fork(派生)子进程,这样会占用大量的内存资源。对于增量同步的方式,由于需要基于主从状态下的复制缓冲区中有内存缓存最近的写日志,为了更好的进行断点续传,需要调大复制缓冲区的大小,这样也会占用大量的内存资源。
因此,相关技术中的主从同步方式存在内存资源占用量大的问题。
发明内容
本申请提供了一种数据同步方法和装置、电子设备和存储介质,以至少解决相关技术中的主从同步方式存在内存资源占用量大的问题。
根据本申请实施例的一个方面,提供了一种数据同步方法,包括:接收第一节点发送的目标同步请求,其中,所述目标同步请求用于请求第二节点向第一节点同步数据;在确定向所述第一节点进行增量同步的情况下,获取第一操作记录,其中,所述第一操作记录是从第一磁盘文件中获取的数据操作记录,所述第一磁盘文件用于保存所述第二节点上的数据操作记录;响应所述目标同步请求,将所述第一操作记录发送给所述第一节点,以在所述第一节点基于所述第一操作记录进行增量同步。
可选地,在接收所述第一节点发送的所述目标同步请求之后,所述方法还包括:提取所述目标同步请求中携带的目标偏移量信息,其中,所述目标偏移量信息用于指示所述第一节点的复制偏移量;在所述第一节点的复制偏移量与所述第一磁盘文件中保存的数据操作记录匹配的情况下,确定向所述第一节点进行增量同步。
可选地,在接收所述第一节点发送的所述目标同步请求之后,所述方法还包括:在确定对所述第一节点进行全量同步的情况下,获取目标同步数据,其中,所述目标同步数据包括第一快照文件中的数据和第二操作记录,所述第一快照文件是预先生成的、所述第二节点在第一时间点的全量数据文件,所述第二操作记录是从所述第一磁盘文件中读取到的、在所述第一时间点之后的数据操作记录;响应所述目标同步请求,将所述目标同步数据发送给所述第一节点,以在所述第一节点基于所述目标同步数据进行全量同步。
可选地,在获取所述第一操作记录之后,所述方法还包括:生成初始快照文件和第二磁盘文件;通过所述第二磁盘文件保存所述第二节点上在第二时间点之后的数据操作记录;将所述第二节点在所述第二时间点的全量数据写入到所述初始快照文件中,以创建第二快照文件;在所述第二快照文件创建成功的情况下,将所述第一磁盘文件删除。
可选地,生成所述初始快照文件和所述第二磁盘文件包括:获取所述第二节点的目标负载参数,其中,所述目标负载参数用于指示所述第二节点的负载状态;在根据所述目标负载参数确定所述第二节点处于目标负载状态的情况下,触发生成所述初始快照文件和所述第二磁盘文件。
可选地,通过所述第二磁盘文件保存所述第二节点上在所述第二时间点之后的数据操作记录包括:接收目标操作指令,其中,所述目标操作指令为在所述第二时间点之后所接收到的操作指令,所述目标操作指令用于指示对所述第二节点执行目标数据操作;响应所述目标操作指令,对所述第二节点执行所述目标数据操作;将与所述目标数据操作对应的第三操作记录同时保存到所述第一磁盘文件和所述第二磁盘文件中。
可选地,在将所述第二节点在所述第二时间点的全量数据写入到所述初始快照文件中之后,所述方法还包括:在所述第二快照文件创建失败的情况下,控制通过所述第一磁盘文件保存所述第二节点上的数据操作记录,并将所述第二磁盘文件删除。
根据本申请实施例的另一个方面,还提供了一种数据同步装置,包括:接收单元,用于接收第一节点发送的目标同步请求,其中,所述目标同步请求用于请求第二节点向第一节点同步数据;第一获取单元,用于在确定向所述第一节点进行增量同步的情况下,获取第一操作记录,其中,所述第一操作记录是从第一磁盘文件中获取的数据操作记录,所述第一磁盘文件用于保存所述第二节点上的数据操作记录;第一发送单元,用于响应所述目标同步请求,将所述第一操作记录发送给所述第一节点,以在所述第一节点基于所述第一操作记录进行增量同步。
可选地,所述装置还包括:提取单元,用于在接收所述第一节点发送的所述目标同步请求之后,提取所述目标同步请求中携带的目标偏移量信息,其中,所述目标偏移量信息用于指示所述第一节点的复制偏移量;确定单元,用于在所述第一节点的复制偏移量与所述第一磁盘文件中保存的数据操作记录匹配的情况下,确定向所述第一节点进行增量同步。
可选地,所述装置还包括:第二获取单元,用于在接收所述第一节点发送的所述目标同步请求之后,在确定对所述第一节点进行全量同步的情况下,获取目标同步数据,其中,所述目标同步数据包括第一快照文件中的数据和第二操作记录,所述第一快照文件是预先生成的、所述第二节点在第一时间点的全量数据文件,所述第二操作记录是从所述第一磁盘文件中读取到的、在所述第一时间点之后的数据操作记录;第二发送单元,用于响应所述目标同步请求,将所述目标同步数据发送给所述第一节点,以在所述第一节点基于所述目标同步数据进行全量同步。
可选地,所述装置还包括:生成单元,用于在获取所述第一操作记录之后,生成初始快照文件和第二磁盘文件;保存单元,用于通过所述第二磁盘文件保存所述第二节点上在第二时间点之后的数据操作记录;写入单元,用于将所述第二节点在所述第二时间点的全量数据写入到所述初始快照文件中,以创建第二快照文件;删除单元,用于在所述第二快照文件创建成功的情况下,将所述第一磁盘文件删除。
可选地,所述生成单元包括:获取模块,用于获取所述第二节点的目标负载参数,其中,所述目标负载参数用于指示所述第二节点的负载状态;触发模块,用于在根据所述目标负载参数确定所述第二节点处于目标负载状态的情况下,触发生成所述初始快照文件和所述第二磁盘文件。
可选地,所述保存单元包括:接收模块,用于接收目标操作指令,其中,所述目标操作指令为在所述第二时间点之后所接收到的操作指令,所述目标操作指令用于指示对所述第二节点执行目标数据操作;执行模块,用于响应所述目标操作指令,对所述第二节点执行所述目标数据操作;保存模块,用于将与所述目标数据操作对应的第三操作记录同时保存到所述第一磁盘文件和所述第二磁盘文件中。
可选地,所述装置还包括:控制单元,用于在将所述第二节点在所述第二时间点的全量数据写入到所述初始快照文件中之后,在所述第二快照文件创建失败的情况下,控制通过所述第一磁盘文件保存所述第二节点上的数据操作记录,并将所述第二磁盘文件删除。
根据本申请实施例的又一个方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;其中,存储器,用于存储计算机程序;处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行上述任一实施例中的方法步骤。
根据本申请实施例的又一个方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一实施例中的方法步骤。
在本申请实施例中,采用通过磁盘文件而不是内存中的复制缓冲区来存储最近的数据操作记录(比如,数据操作日志)的方式,通过接收第一节点发送的目标同步请求,其中,目标同步请求用于请求第二节点向第一节点同步数据;在确定向第一节点进行增量同步的情况下,获取第一操作记录,其中,第一操作记录是从第一磁盘文件中获取的数据操作记录,第一磁盘文件用于保存第二节点上的数据操作记录;响应目标同步请求,将第一操作记录发送给第一节点,以在第一节点基于第一操作记录进行增量同步,由于通过磁盘文件(磁盘中的文件,比如,AOF文件)来保存数据库节点上的数据操作记录,从而可以实现节省主从同步(例如,多个从节点具有同样增量日志的情况下)所占用的内存资源的目的,达到了减少主从同步数据所占用的内存资源的技术效果,进而解决了相关技术中的主从同步方式存在内存资源占用量大的问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的一种可选的主从全量同步方式的流程示意图;
图2是根据本申请实施例的一种可选的主从增量同步方式的流程示意图;
图3是根据本申请实施例的一种可选的数据同步方法的硬件环境的示意图;
图4是根据本申请实施例的一种可选的数据同步方法的流程示意图;
图5是根据本申请实施例的另一种可选的数据同步方法的流程示意图;
图6是根据本申请实施例的一种可选的bgsave逻辑的示意图;
图7是根据本申请实施例的另一种可选的bgsave逻辑的示意图;
图8是根据本申请实施例的一种可选的数据同步装置的结构框图;
图9是根据本申请实施例的一种可选的电子设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了进行节点之间的数据同步,一般采用的同步机制为全量同步机制或断点续传机制。以主从节点之间的数据同步为例,现分别对这两种机制进行简要说明。
如图1所示,全量同步机制的同步流程一般包括以下步骤:
步骤S102,从服务器(slave节点,从节点)向主服务器(master节点,主节点)发送sync命令(同步命令)。
步骤S104,收到sync命令的主服务器执行bgsave命令,生成RDB数据,并将生成的RDB数据发送给从服务器。
主服务器接收到sync命令之后,可以执行bgsave命令,在后台生成一个RDB文件,并使用一个缓冲区记录从现在开始执行的所有写命令。在生成RDB文件之后,主服务器可以将生成的RDB文件中的RDB数据发送给从服务器。
步骤S106,从服务器接收并载入RDB数据,并开始接收AOF(Append Only File,追加文件)命令。
从服务器开始接收并载入这个RDB数据,将自己的数据库状态更新到主服务器执行bgsave命令时的数据库状态,并开始接收主服务器发送的AOF命令。
步骤S108,主服务器将AOF命令发送给从服务器,从服务器执行接收到的AOF命令。
主服务器将记录在缓冲区里面的所有写命令发送给从服务器,从服务器执行这些写命令,将自己的数据库状态更新至主服务器数据库当前所处的状态。
对于上述全量同步机制,基于bgsave逻辑需要派生子进程,这样会占用大量的内存资源。
如图2所示,断点续传机制的同步流程一般包括以下步骤:
步骤S202,从服务器接收客户端发送的SLAVEOF命令,响应该SLAVEOF命令,向主服务器发送PSYNC命令。
从服务器可以接收客户端发送的SLAVEOF命令。响应该SLAVEOF命令,从服务器可以根据自己是否保存主服务器的ID(runid,上一次连接的主节点的身份ID)来判断是否是第一次复制;如果是,向主服务器发送PSYNC?-1命令来进行全量同步;否则,向主服务器发送PSYNC runid offset命令,其中,offset为从服务器的复制偏移量,是从服务器同步命令的全局迁移量。
步骤S204,主服务器接收从服务器发送PSYNC命令,根据PSYNC命令中携带的信息向从服务器进行全量同步或者增量同步。
主服务器接收到从服务器发送PSYNC命令。如果接收到的是PSYNC?-1命令,确定进行全量同步。全量同步过程与前述类似,在此不做赘述。
如果接收到的是PSYNC runid offset命令,主服务器可以检查该命令中携带的runid和offset是否合适。如果runid与本机的运行ID相同,则说明断线前复制的就是当前连接的主服务器,主服务器可以根据条件尝试进行部分重同步。
如果runid与主服务器的运行ID相同,主服务器进一步判断offset和本机的偏移量相差有没有超过复制缓冲区(复制积压缓冲区)的大小。如果没有,主服务器可以向从服务器发送CONTINUE,以指示从服务器等待主服务器传回失去连接期间丢失的命令,并向从服务器进行增量同步。
如果runid和主服务器的运行ID不一致或者offset差距超过了复制缓冲区的大小,主服务器可以向从服务器返回FULLRESYNC runid offset,以指示从服务器进行全量同步,并向从服务器进行全量同步。
对于上述断点续传机制,为了避免由于网络抖动或者网络的不稳定引起主节点派生出大量的子进程进行全量同步,需要将内存中主从同步的积压缓冲区的大小设置的相对比较大,但在一定时间段内的网络断开一般不会引发全量同步,增大积压缓冲区的大小会带来物理机器的CPU(Central Processing Unit,中央处理器)和内存负载增加。
为了至少克服部分上述问题,根据本申请实施例的一个方面,提供了一种数据同步方法。可选地,在本实施例中,上述数据同步方法可以应用于如图3所示的由终端302和服务器304所构成的硬件环境中。如图3所示,服务器304通过网络与终端302进行连接,可用于为终端或终端上安装的客户端提供数据处理服务,可在服务器上或独立于服务器设置数据库,用于为服务器304提供数据存储服务。可选地,服务器304可以是数据库系统中的数据库节点。
上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:WIFI(Wireless Fidelity,无线保真),蓝牙。终端302可以并不限定于为PC、手机、平板电脑等。
本申请实施例的数据同步方法可以由服务器304来执行,也可以由终端302来执行,还可以是由服务器304和终端302共同执行。其中,终端302执行本申请实施例的数据同步方法也可以是由安装在其上的客户端来执行。
以由服务器304来执行本实施例中的数据同步方法为例,图4是根据本申请实施例的一种可选的数据同步方法的流程示意图,如图4所示,该方法的流程可以包括以下步骤:
步骤S402,接收第一节点发送的目标同步请求,其中,目标同步请求用于请求第二节点向第一节点同步数据。
本实施例中的数据同步方法可以应用于在数据库系统(例如,Redis)中的主从节点之间进行数据同步的场景,也可以是在其他具有数据同步需求的节点之间进行数据同步的场景。第一节点和第二节点可以是主从关系,也可以是其他关系(比如,同等节点)。本实施例中以第一节点和第二节点为数据库节点、且第二节点为第一节点的主节点(master)为例进行说明。
第二节点可以为master节点(主服务器),其可以具有直接连接到其上的一个或多个slave节点(从节点,从服务器),而一个slave节点也可以连接到其上的一个或多个slave节点(从节点的从节点),第一节点可以是第二节点的一个或多个从节点中的一个,本实施例中对于数据库系统的网络架构方式不作限定。
在连接到第二节点之后,第一节点可以向第二节点发送目标同步请求,以请求第二节点向其同步数据。目标同步请求可以有多种形式,比如,同步命令(sync命令),又比如,异步命令(psync命令,比如,slaveof命令)。第二节点可以接收第一节点发送的上述目标同步请求。
对于异步场景,目标同步请求可以为携带有多种信息的异步命令,可以包括但不限于以下之一:目标节点标识(例如,runid),目标断点位置。目标节点标识可以用于标识第一节点上一次连接的主节点。每个数据库节点(比如,Redis服务器)都会有一个表明自己身份的ID(即,节点标识),在异步命令中携带的节点ID是指之前连接的主节点的ID,如果没保存这个ID,异步命令中会使用“PSYNC?-1”这种形式发送给主节点,表示需要全量复制。
目标断点位置可以是与最后一次同步到第一节点上的数据所对应的位置。可选地,目标断点位置可以是第一节点的复制偏移量。在主从复制的主节点和从节点双方都会各自维持一个复制偏移量,主节点在成功发送M个字节的命令后会将主节点中的复制偏移量加上M,从节点在接收到N个字节的命令后同样会将从节点中的复制偏移量增加N。
步骤S404,在确定向第一节点进行增量同步的情况下,获取第一操作记录,其中,第一操作记录是从第一磁盘文件中获取的数据操作记录,第一磁盘文件用于保存第二节点上的数据操作记录。
相关技术中,对于增量同步的模式,节点上的数据操作记录(数据操作日志)通常存储在主节点内存的复制缓冲区中,为了更好的进行断点续传,需要调大复制缓冲区的大小,这样也会占用大量的内存资源。而如果全部采用全量同步的方式,则同样会占用大量的内存资源。
在本实施例中,通过磁盘文件(例如,AOF文件)保存节点上的数据操作记录(数据操作日志,例如,写日志),例如,第二节点上接收到的数据操作命令,例如,写操作(写命令),第二节点可以将其写入到磁盘文件中,而不是保存在复制缓冲区中。写入到的磁盘文件可以是第一磁盘文件,第一磁盘文件是第二节点的目标磁盘上的磁盘文件(例如,第一AOF文件),该第一磁盘文件可以用于保存第二节点上的数据操作记录,例如,第二节点上在某一时间点之后的数据操作记录。
在接收到目标同步请求之后,第二节点可以首先确定向该第一节点进行全量同步还是增量同步。例如,第二节点可以根据目标同步请求的请求类型和/或目标同步请求中携带的目标参考信息确定向该第一节点进行全量同步还是增量同步,目标参考信息可以包括但不限于以下之一:目标节点标识,目标断点位置。
可选地,如果目标同步请求为同步命令,则第二节点确定向第一节点进行全量同步。如果目标同步请求为异步命令,第二节点可以提取目标同步请求中携带的目标节点标识。根据目标节点标识,第二节点可以判断目标节点标识与第二节点的节点标识是否一致,如果不一致,则确定向第一节点进行全量同步。
在目标节点标识与第二节点的节点标识一致的情况下,第二节点可以直接确定向第一节点进行增量同步,在此情况下,第一磁盘文件中保存的可以是第二节点上所有的数据操作记录。
可选地,如果第一磁盘文件中保存的是第二节点上在某一时刻之后的数据操作记录,在目标节点标识与第二节点的节点标识一致的情况下,第二节点可以进一步判断目标断点位置与第一磁盘文件是否匹配,也就是,判断目标断点位置是否位于第一磁盘文件中。如果匹配,确定向第一节点进行增量同步,否则,确定向第一节点进行全量同步。
例如,对于主从数据同步,如果目标同步请求为同步命令(sync命令,全量同步机制)、或者为用于指示第一节点第一次复制的命令(比如,PSYNC?-1命令,断点续传机制)、或者待同步到第一节点的数据超出了磁盘文件中保存的数据操作记录,确定向第一节点进行全量同步。如果第一磁盘文件中保存的数据操作记录满足第一节点的增量同步需求,第二节点可以确定向第一节点进行增量同步。
在确定向第一节点进行增量同步的情况下,第二节点可以从第一磁盘文件中获取第一磁盘文件中所存储的数据操作记录,得到第一操作记录。获取的方式可以包括但不限于以下之一:获取第一磁盘文件中保存的所有数据操作记录,获取处于目标断点位置之后的数据操作记录。
可选地,在本实施例中,第二节点可以从第一磁盘文件中获取第一节点的复制偏移量之后的数据操作记录,得到第一操作记录。
步骤S406,响应目标同步请求,将第一操作记录发送给第一节点,以在第一节点基于第一操作记录进行增量同步。
响应目标同步请求,第二节点可以将获取到的第一操作记录发送给第一节点。第一节点接收到第一操作记录之后,可以直接基于该第一操作记录中包含的数据操作记录的顺序使用第一操作记录中包含的数据操作记录对第一节点上的数据进行操作,从而将第一节点上的数据同步到第一操作记录的最后一个数据操作记录所对应的数据位置。
可选地,如果第二节点同步来的数据操作记录(第一操作记录所包含的数据操作记录)多于所需的数据操作记录,第一节点也可以首先对第一操作记录进行筛选,得到待同步操作记录,筛选可以是基于目标断点位置进行的。第一节点可以基于待同步操作记录中包含的数据操作记录的顺序使用第一操作记录中包含的数据操作记录对第一节点上的数据进行操作,从而将第一节点上的数据同步到待同步操作记录的最后一个操作记录所对应的数据位置。
在将第一操作记录同步给第一节点之后,对于第一操作记录之后的数据操作记录(例如,写数据),第二节点也可以继续向第一节点进行同步,同步的方式可以参考相关技术,本实施例中在此不作赘述。
通过上述步骤S402至步骤S406,通过接收第一节点发送的目标同步请求,其中,目标同步请求用于请求第二节点向第一节点同步数据;在确定向第一节点进行增量同步的情况下,获取第一操作记录,其中,第一操作记录是从第一磁盘文件中获取的数据操作记录,第一磁盘文件用于保存第二节点上的数据操作记录;响应目标同步请求,将第一操作记录发送给第一节点,以在第一节点基于第一操作记录进行增量同步,解决了相关技术中的主从同步方式存在内存资源占用量大的问题,减少了主从同步数据所占用的内存资源。
作为一种可选的实施例,在接收第一节点发送的目标同步请求之后,上述方法还包括:
S11,提取目标同步请求中携带的目标偏移量信息,其中,目标偏移量信息用于指示第一节点的复制偏移量;
S12,在第一节点的复制偏移量与第一磁盘文件中保存的数据操作记录匹配的情况下,确定向第一节点进行增量同步。
可选地,目标同步请求中可以携带有前述目标断点位置,该目标断点位置可以是通过第一节点的复制偏移量(offset)表示的。第二节点可以从目标同步请求中提取目标同步请求中携带的、用于指示第一节点的复制偏移量的目标偏移量信息,从而确定出第一节点的复制偏移量。
第二节点可以判断第一节点的复制偏移量与第一磁盘文件中保存的数据操作记录是否匹配,判断的依据可以是:判断第一节点的复制偏移量和第一磁盘文件的偏移量,在第一节点的复制偏移量大于或者等于第一磁盘文件的偏移量的情况下,确定第一节点的复制偏移量与第一磁盘文件中保存的数据操作记录匹配。这里,第一磁盘文件的偏移量为第一磁盘文件的第一个数据操作记录的偏移量。
如果第一节点的复制偏移量与第一磁盘文件中保存的数据操作记录匹配,第二节点可以确定向第一节点进行增量同步,否则,确定向第二节点进行全量同步。
通过本实施例,根据节点的复制偏移量与磁盘文件中保存的数据操作记录的匹配情况确定进行增量同步还是全量同步,可以提高同步方式确定的便捷性,同时可以适用于磁盘文件中保存的操作记录允许更新(即,更新为某一时间点之后的数据操作记录)的场景。
作为一种可选的实施例,在接收第一节点发送的目标同步请求之后,上述方法还包括:
S21,在确定对第一节点进行全量同步的情况下,获取目标同步数据,其中,目标同步数据包括第一快照文件中的数据和第二操作记录,第一快照文件是预先生成的、第二节点在第一时间点的全量数据文件,第二操作记录是从第一磁盘文件中读取到的、在第一时间点之后的数据操作记录;
S22,响应目标同步请求,将目标同步数据发送给第一节点,以在第一节点基于目标同步数据进行全量同步。
第二节点可以按照一定的触发条件预先生成第二节点在某一时间点的全量数据文件,即,某一时间点的快照文件;同时使用第一磁盘文件至少保存该时间点之后的数据操作记录。数据的总量保证一致性的文件是:快照文件为文件和磁盘文件的结合。
例如,第二节点在资源不紧张的情况下,进行RDB文件的备份,并标记AOF文件(第一磁盘文件的一个示例)的偏移量,其中,RDB文件是某一个时间点的全量数据文件,AOF文件保存的是这个时间点之后的所有数据操作日志。数据的总量保证一致性的文件就是RDB文件和AOF文件的结合。
如果在主从同步过程中通过子进程生成快照文件,产生子进程时会瞬时大量复制内存,因此,会导致瞬时占用大量内存;子进程会产生RDB文件,会瞬间占用大量CPU资源,因此,会导致瞬间CPU使用率过高。而在本实施例中,快照文件(RDB文件)是提前生成好的,因此,可以节省主从同步过程中所占用的内存资源和CPU资源。
如果确定对第一节点进行全量同步,第二节点可以获取第一快照文件中的数据,第一快照文件为预先生成的、第二节点在第一时间点的全量数据文件。同时,第二节点可以从第一磁盘文件中获取第一时间点之后的数据操作记录,得到第二操作记录。待同步到第一节点的目标同步数据包括:第一快照文件中的数据和第二操作记录。
响应目标同步请求,第二节点可以将目标同步数据发送给第一节点。第一节点接收到目标同步数据之后,可以首先载入第一快照文件,然后依次执行第二操作记录中的各个数据操作记录所记录的数据操作命令,以将第一节点上的数据同步到与第二操作记录中的最后一个数据操作记录所对应的位置。
通过本实施例,通过预先生成的快照文件和磁盘文件进行节点之间的同步,可以减少全量同步过程中生成快照文件的过程,同时,也可以减少存储数据操作记录所需的内存空间。
例如,相比于相关技术中的Redis主从方式,通过使用预先生成的RDB文件和磁盘中的AOF文件,可以减少sync命令的bgsave的过程,直接开始传输文件;psync命令可以减少大量的内存来存储主从复制缓冲区backlog。
作为一种可选的实施例,在获取第一操作记录之后,上述方法还包括:
S31,生成初始快照文件和第二磁盘文件;
S32,通过第二磁盘文件保存第二节点上在第二时间点之后的数据操作记录;
S33,将第二节点在第二时间点的全量数据写入到初始快照文件中,以创建第二快照文件;
S34,在第二快照文件创建成功的情况下,将第一磁盘文件删除。
第二节点可以按照一定的触发条件控制生成某一时刻的快照文件。触发条件可以是与目标事件相关的条件,即,在检测到发生目标事件的情况下,第二节点可以生成初始快照文件和第二磁盘文件,例如,通过目标子进程生成初始快照文件,同时目标子进程的父进程或者目标子进程生成第二磁盘文件。
目标事件是与第二节点上的资源占用关联的事件,可以包括但不限于以下之一:第一磁盘文件所存储的数据量大于或者等于目标数据量阈值,第二节点的内存资源的使用率小于或者等于第一使用率阈值,第二节点的负载量小于或者等于目标负载量阈值。
在生成初始快照文件和第二磁盘文件之后,第二节点可以将第二节点上在第二时间点之后的数据操作记录保存到第二磁盘文件。第二节点还可以将第二节点在第二时间点的全量数据写入到初始快照文件中,以创建第二快照文件,创建的第二快照文件为第二节点在第二时间点的全量数据文件。
开始向初始快照文件写入第二节点在第二时间点的全量数据的时机可以是以下之一:生成初始快照文件之后马上开始写入;在满足写入条件之后,开始写入。写入条件可以是与触发条件关联的,比如,触发条件为:第一磁盘文件所存储的数据量大于或者等于目标数据量阈值,写入条件为:第二节点的内存资源的占用率小于或者等于目标占用量阈值,第二节点的负载量小于或者等于目标负载量阈值。本实施例中对此不作限定。
第二节点上至少有两个关联的磁盘文件,即,第一磁盘文件和第二磁盘文件,保留第一磁盘文件是为了避免由于快照文件创建不成功导致无法使用之前的快照文件(例如,第一快照文件)和第二磁盘文件进行节点数据同步,如果此时收到同步请求仍需基于bgsave逻辑生成快照文件。
如果第二快照文件创建成功,则第二时间点之前的数据保存在第二快照文件中,第二时间点之后的数据操作记录第二磁盘文件中,因此,不需要再保留第一磁盘文件,可以将第一磁盘文件删除。
通过本实施例,通过更新节点上的快照文件和磁盘文件(AOF文件),可以兼顾快照文件的优势(例如,可以直接载入,RDB文件的体积小于AOF文件的体积等)和保存数据操作记录的优势(例如,具有很高的耐久性),提高系统的整体性能。
作为一种可选的实施例,生成初始快照文件和第二磁盘文件包括:
S41,获取第二节点的目标负载参数,其中,目标负载参数用于指示第二节点的负载状态;
S42,在根据目标负载参数确定第二节点处于目标负载状态的情况下,触发生成初始快照文件和第二磁盘文件。
为了在节点之间数据同步时减少派生子进程来产生一个新的RDB文件和大量的磁盘IO占用,第二节点可以在第二节点负载不高时生成新的快照文件和新的磁盘文件。
第二节点可以获取第二节点的目标负载参数,该目标负载参数可以用于指示第二节点的负载状态,第二节点可以根据目标负载参数确定第二节点当前的负载状态。目标负载参数可以包括一个或多个,可以包括但不限于以下至少之一:CPU使用率,内存使用率;负载状态可以是:低负载状态,高负载状态等等,本实施例中对此不作限定,只要可以表征节点资源使用状况的负载参数和负载状态,均可用于本是本实施例。
如果确定出第二节点处于目标负载状态(低负载状态,比如,内存使用率不高于第一使用率阈值,CPU使用率不高于第二使用率阈值),第二节点可以触发生成初始快照文件和第二磁盘文件。
例如,对于Redis中的一个主节点,其可以首先开启AOF,此时存在两种数据文件,RDB文件和AOF文件。RDB文件是在一定条件下触发产生bgsave逻辑然后产生。主节点上最开始会产生一个RDB文件,随后的RDB文件是在Redis负载不高时通过执行bgsave逻辑产生的。其中,bgsave逻辑是指:产生RDB文件,并产生一个新的AOF文件,将RDB文件产生过程中的增量数据命令至少写入到新的AOF文件。
通过本实施例,基于节点的负载状态触发生成新的快照文件和磁盘文件,可以提高节点资源使用的合理性。
作为一种可选的实施例,通过第二磁盘文件保存第二节点上在第二时间点之后的数据操作记录包括:
S51,接收目标操作指令,其中,目标操作指令为在第二时间点之后所接收到的操作指令,目标操作指令用于指示对第二节点执行目标数据操作;
S52,响应目标操作指令,对第二节点执行目标数据操作;
S53,将与目标数据操作对应的第三操作记录同时保存到第一磁盘文件和第二磁盘文件中。
在生成第二磁盘文件之后,对于接收到的数据操作指令,第二节点可以执行该数据操作指令,并将与该数据操作指令对应的数据操作记录同时保存到第一磁盘文件和第二磁盘文件中。
可选地,在本实施例中,第二节点接收到目标操作指令,该目标操作指令为在第二时间点之后所接收到的操作指令,目标操作指令可以用于指示对第二节点执行目标数据操作,目标数据操作可以是写操作。
响应该目标操作指令,第二节点可以对第二节点执行目标数据操作。此外,第二节点也可以将与目标数据操作对应的数据操作记录(例如,写日志)同时写入到第一磁盘文件和第二磁盘文件。
可选地,除了目标数据操作之外,对于对第二节点执行的其他操作(例如,查询操作)之外,可以不保存其对应的操作记录,或者,不通过第一磁盘文件或者第二磁盘文件保存。
通过本实施例,通过将第二时间点之后的数据操作记录同时保存到两个磁盘文件中,可以基于快照文件的创建结果选择保留的磁盘文件,提高磁盘文件操作的便捷性。
此外,也可以将第二时间点之后的数据操作记录仅保存到第二磁盘文件中,如果第二快照文件创建失败,可以同时保留第一磁盘文件和第二磁盘文件,如果有节点需要全量同步,可以将同时向该节点发送以下数据:第一快照文件,第一磁盘文件和第二磁盘文件中的数据操作记录。
作为一种可选的实施例,在将第二节点在第二时间点的全量数据写入到初始快照文件中之后,上述方法还包括:
S61,在第二快照文件创建失败的情况下,控制通过第一磁盘文件保存第二节点上的数据操作记录,并将第二磁盘文件删除。
在将第二节点在第二时间点的全量数据写入到初始快照文件的过程中,如果由于某些原因导致数据写入异常,则会造成第二快照文件创建失败。考虑到第二时间点之后的数据操作记录同时保存在第一磁盘文件和第二磁盘文件中,为了节省磁盘空间,在第二快照文件创建失败,可以仅使用第一磁盘文件继续保存第二节点上的数据操作记录,也就是,将与收到的数据操作指令对应的数据操作记录仅写入到第一磁盘文件。
同时,为了进一步节省磁盘空间,第二节点可以在第二快照文件创建失败之后,将第二磁盘文件删除。
通过本实施例,在快照文件创建失败时将新创建的磁盘文件删除,可以节省存储数据操作记录所需的磁盘空间,避免磁盘资源的浪费。
下面结合可选示例对本申请实施例中的数据同步方法进行解释说明。在本示例中的数据同步方法是一种基于文件的Redis主从同步数据一致性方案,可以应用到的数据库系统为Redis,实现Redis高效稳定的主从数据保护和主从数据的复制。执行该数据同步方法为Redis集群中的master节点,可能会涉及到Redis集群中的slave节点。在本示例中,快照文件为RDB文件,磁盘文件为AOF文件,数据操作记录为数据操作日志(写命令的写日志)。
如图5所示,本可选示例中的数据同步方法的流程可以包括以下步骤:
步骤S502,在Redis负载不高时,触发生成新的RDB文件和AOF文件。
首先,master节点可以开启AOF功能,此时存在两种数据文件:RDB文件,是某一个时间点的全量数据文件;AOF文件,是这个时间点之后的所有数据操作日志。
RDB文件是在一定条件下触发产生Bgsave逻辑之后产生,是在sync等全量同步时使用的。对于master节点,master节点上最开始会产生一个RDB文件;随后,在Redis负载不高时,master节点上会执行bgsave逻辑产生新的RDB文件和AOF文件。
这里,bgsave逻辑是指:产生一个新的RDB文件,并产生一个新的AOF文件,将RDB文件产生过程中的增量数据命令同时写入到旧的AOF文件和新的AOF文件中。如果RDB文件创建成功,则删除旧的RDB文件和旧的AOF文件;否则,删除新的RDB文件和新的AOF文件。
如图6所示,相关技术中的bgsave逻辑可以是通过以下方式执行的:在接收到slave节点的同步请求之后,master节点派生一个子进程,并通过该子进程产生一个新的RDB文件,RDB文件生成成功之后,结束该子进程,从而完成bgsave逻辑。通过上述方式进行主从同步,由于需要派生子进程来产生一个新的RDB文件,会占用大量的内存资源。
如图7所示,本示例中的bgsave逻辑可以是通过以下方式执行的:master节点可以检测系统负载(主要包括:磁盘文件,RDB文件和AOF增量),确定系统负载是否超过指定阈值;如果未过指定阈值,确定负载不高;在负载不高时或者AOF文件超过指定阈值(为了减小磁盘占用),master节点可以派生一个子进程,并通过该子进程来产生一个新的RDB文件和一个新的AOF文件。AOF文件有offset标记信息,该标记信息用来标记该AOF文件在主从复制的偏移量。如果子进程成功后,可以切换AOF文件,关闭现有的AOF文件,将新的AOF文件改为现有AOF文件。
由于是在负载不高时而不是在主从同步的过程中派生子进程来产生一个新的RDB文件,可以减少主从同步过程中所占用的内存资源。同时,通过磁盘中的AOF文件而不是内存中的复制缓存区来保存某一时间点之后的数据操作日志,也可以减少主从同步机制对内存资源的占用。
可选地,在执行bgsave逻辑时,master节点也可以仅将RDB文件产生过程中的增量数据命令写入到新的AOF文件;并且,如果RDB文件创建失败,仅删除新的RDB文件。
可选地,在执行bgsave逻辑时,如果RDB文件创建失败,master节点也可以重新尝试产生该RDB文件,即,尝试将相同时间点的全量数据重新写入到生成的初始RDB文件中。
步骤S504,在接收slave节点的同步请求之后,在进行全量同步时,获取RDB文件和AOF数据并发送给slave节点;在进行增量同步时,从AOF文件获取数据操作日志并发送给slave节点。
在运行的过程中,master节点可以接收到slave节点的同步请求。如果同步请求是进行全量同步的请求,例如,sync命令,master节点可以尝试去获取之前备份的全量RDB数据(RDB文件中的数据),再获取AOF数据(AOF文件中的数据),并将获取到的全量RDB数据和AOF数据发送给slave节点。
如果同步请求是进行增量同步的请求,例如,slave节点的复制偏移量大于或者等于AOF文件的offset标记信息所指示的主从复制的偏移量,master节点可以将AOF文件中slave节点的复制偏移量之后的数据命令发送给slave节点。
通过本示例,在master节点负载不高时触发执行bgsave逻辑生成某一时间点的RDB文件和用于保存该时间点之后的所有数据操作日志的AOF文件,可以在主从有连接的状态下断开一段时间后(大部分情况下)基于AOF文件进行主从节点的增量同步,在网络有问题时,在通过获取之前备份的全量RDB数据以及获取AOF数据进行主从节点的全量同步,最终实现主从节点的数据保持一致,可以减少主从同步过程中对内存资源的占用,提高主从同步的效率。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM(Read-Only Memory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述数据同步方法的数据同步装置。图8是根据本申请实施例的一种可选的数据同步装置的结构框图,如图8所示,该装置可以包括:
接收单元802,用于接收第一节点发送的目标同步请求,其中,目标同步请求用于请求第二节点向第一节点同步数据;
第一获取单元804,与接收单元802相连,用于在确定向第一节点进行增量同步的情况下,获取第一操作记录,其中,第一操作记录是从第一磁盘文件中获取的数据操作记录,第一磁盘文件用于保存第二节点上的数据操作记录;
第一发送单元806,与第一获取单元804相连,用于响应目标同步请求,将第一操作记录发送给第一节点,以在第一节点基于第一操作记录进行增量同步。
需要说明的是,该实施例中的接收单元802可以用于执行上述步骤S402,该实施例中的第一获取单元804可以用于执行上述步骤S404,该实施例中的第一发送单元806可以用于执行上述步骤S406。
通过上述模块,通过接收第一节点发送的目标同步请求,其中,目标同步请求用于请求第二节点向第一节点同步数据;在确定向第一节点进行增量同步的情况下,获取第一操作记录,其中,第一操作记录是从第一磁盘文件中获取的数据操作记录,第一磁盘文件用于保存第二节点上的数据操作记录;响应目标同步请求,将第一操作记录发送给第一节点,以在第一节点基于第一操作记录进行增量同步,解决了相关技术中的主从同步方式存在内存资源占用量大的问题,减少了主从同步数据所占用的内存资源。
作为一种可选的实施例,上述装置还包括:
提取单元,用于在接收第一节点发送的目标同步请求之后,提取目标同步请求中携带的目标偏移量信息,其中,目标偏移量信息用于指示第一节点的复制偏移量;
确定单元,用于在第一节点的复制偏移量与第一磁盘文件中保存的数据操作记录匹配的情况下,确定向第一节点进行增量同步。
作为一种可选的实施例,上述装置还包括:
第二获取单元,用于在接收第一节点发送的目标同步请求之后,在确定对第一节点进行全量同步的情况下,获取目标同步数据,其中,目标同步数据包括第一快照文件中的数据和第二操作记录,第一快照文件是预先生成的、第二节点在第一时间点的全量数据文件,第二操作记录是从第一磁盘文件中读取到的、在第一时间点之后的数据操作记录;
第二发送单元,用于响应目标同步请求,将目标同步数据发送给第一节点,以在第一节点基于目标同步数据进行全量同步。
作为一种可选的实施例,上述装置还包括:
生成单元,用于在获取第一操作记录之后,生成初始快照文件和第二磁盘文件;
保存单元,用于通过第二磁盘文件保存第二节点上在第二时间点之后的数据操作记录;
写入单元,用于将第二节点在第二时间点的全量数据写入到初始快照文件中,以创建第二快照文件;
删除单元,用于在第二快照文件创建成功的情况下,将第一磁盘文件删除。
作为一种可选的实施例,生成单元包括:
获取模块,用于获取第二节点的目标负载参数,其中,目标负载参数用于指示第二节点的负载状态;
触发模块,用于在根据目标负载参数确定第二节点处于目标负载状态的情况下,触发生成初始快照文件和第二磁盘文件。
作为一种可选的实施例,保存单元包括:
接收模块,用于接收目标操作指令,其中,目标操作指令为在第二时间点之后所接收到的操作指令,目标操作指令用于指示对第二节点执行目标数据操作;
执行模块,用于响应目标操作指令,对第二节点执行目标数据操作;
保存模块,用于将与目标数据操作对应的第三操作记录同时保存到第一磁盘文件和第二磁盘文件中。
作为一种可选的实施例,上述装置还包括:
控制单元,用于在将第二节点在第二时间点的全量数据写入到初始快照文件中之后,在第二快照文件创建失败的情况下,控制通过第一磁盘文件保存第二节点上的数据操作记录,并将第二磁盘文件删除。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图3所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的又一个方面,还提供了一种用于实施上述数据同步方法的电子设备,该电子设备可以是服务器、终端、或者其组合。
图9是根据本申请实施例的一种可选的电子设备的结构框图,如图9所示,包括处理器902、通信接口904、存储器906和通信总线908,其中,处理器902、通信接口904和存储器906通过通信总线908完成相互间的通信,其中,
存储器906,用于存储计算机程序;
处理器902,用于执行存储器906上所存放的计算机程序时,实现如下步骤:
S1,接收第一节点发送的目标同步请求,其中,目标同步请求用于请求第二节点向第一节点同步数据;
S2,在确定向第一节点进行增量同步的情况下,获取第一操作记录,其中,第一操作记录是从第一磁盘文件中获取的数据操作记录,第一磁盘文件用于保存第二节点上的数据操作记录;
S3,响应目标同步请求,将第一操作记录发送给第一节点,以在第一节点基于第一操作记录进行增量同步。
可选地,在本实施例中,上述的通信总线可以是PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线、或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括RAM,也可以包括非易失性存储器(non-volatile memory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
作为一种示例,上述存储器906中可以但不限于包括上述数据同步装置中的接收单元802、第一获取单元804以及第一发送单元806。此外,还可以包括但不限于上述数据同步装置中的其他模块单元,本示例中不再赘述。
处理器可以是通用处理器,可以包含但不限于:CPU、NP(Network Processor,网络处理器)等;还可以是DSP(Digital Signal Processing,数字信号处理器)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图9所示的结构仅为示意,实施上述数据同步方法的设备可以是终端设备(具备数据库节点的功能),该终端设备可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图9其并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图9中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图9所示的不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、ROM、RAM、磁盘或光盘等。
根据本申请实施例的又一个方面,还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行本申请实施例中上述任一项数据同步方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,接收第一节点发送的目标同步请求,其中,目标同步请求用于请求第二节点向第一节点同步数据;
S2,在确定向第一节点进行增量同步的情况下,获取第一操作记录,其中,第一操作记录是从第一磁盘文件中获取的数据操作记录,第一磁盘文件用于保存第二节点上的数据操作记录;
S3,响应目标同步请求,将第一操作记录发送给第一节点,以在第一节点基于第一操作记录进行增量同步。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例中对此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、ROM、RAM、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例中所提供的方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以至少两个单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (8)
1.一种数据同步方法,其特征在于,包括:
接收第一节点发送的目标同步请求,其中,所述目标同步请求用于请求第二节点向第一节点同步数据;
在确定向所述第一节点进行增量同步的情况下,获取第一操作记录,其中,所述第一操作记录是从第一磁盘文件中获取的数据操作记录,所述第一磁盘文件用于保存所述第二节点上的数据操作记录;
生成初始快照文件和第二磁盘文件;通过所述第二磁盘文件保存所述第二节点上在第二时间点之后的数据操作记录;将所述第二节点在所述第二时间点的全量数据写入到所述初始快照文件中,以创建第二快照文件;在所述第二快照文件创建成功的情况下,将所述第一磁盘文件删除;生成所述初始快照文件和所述第二磁盘文件包括:获取所述第二节点的目标负载参数,其中,所述目标负载参数用于指示所述第二节点的负载状态,所述目标负载参数包括以下一个或多个:CPU使用率,内存使用率;在根据所述目标负载参数确定所述第二节点处于目标负载状态的情况下,触发生成所述初始快照文件和所述第二磁盘文件;
响应所述目标同步请求,将所述第一操作记录发送给所述第一节点,以在所述第一节点基于所述第一操作记录进行增量同步。
2.根据权利要求1所述的方法,其特征在于,在接收所述第一节点发送的所述目标同步请求之后,所述方法还包括:
提取所述目标同步请求中携带的目标偏移量信息,其中,所述目标偏移量信息用于指示所述第一节点的复制偏移量;
在所述第一节点的复制偏移量与所述第一磁盘文件中保存的数据操作记录匹配的情况下,确定向所述第一节点进行增量同步。
3.根据权利要求1所述的方法,其特征在于,在接收所述第一节点发送的所述目标同步请求之后,所述方法还包括:
在确定对所述第一节点进行全量同步的情况下,获取目标同步数据,其中,所述目标同步数据包括第一快照文件中的数据和第二操作记录,所述第一快照文件是预先生成的、所述第二节点在第一时间点的全量数据文件,所述第二操作记录是从所述第一磁盘文件中读取到的、在所述第一时间点之后的数据操作记录;
响应所述目标同步请求,将所述目标同步数据发送给所述第一节点,以在所述第一节点基于所述目标同步数据进行全量同步。
4.根据权利要求1所述的方法,其特征在于,通过所述第二磁盘文件保存所述第二节点上在所述第二时间点之后的数据操作记录包括:
接收目标操作指令,其中,所述目标操作指令为在所述第二时间点之后所接收到的操作指令,所述目标操作指令用于指示对所述第二节点执行目标数据操作;
响应所述目标操作指令,对所述第二节点执行所述目标数据操作;
将与所述目标数据操作对应的第三操作记录同时保存到所述第一磁盘文件和所述第二磁盘文件中。
5.根据权利要求4所述的方法,其特征在于,在将所述第二节点在所述第二时间点的全量数据写入到所述初始快照文件中之后,所述方法还包括:
在所述第二快照文件创建失败的情况下,控制通过所述第一磁盘文件保存所述第二节点上的数据操作记录,并将所述第二磁盘文件删除。
6.一种数据同步装置,其特征在于,包括:
接收单元,用于接收第一节点发送的目标同步请求,其中,所述目标同步请求用于请求第二节点向第一节点同步数据;
第一获取单元,用于在确定向所述第一节点进行增量同步的情况下,获取第一操作记录,其中,所述第一操作记录是从第一磁盘文件中获取的数据操作记录,所述第一磁盘文件用于保存所述第二节点上的数据操作记录;
还包括一模块,用于生成初始快照文件和第二磁盘文件;通过所述第二磁盘文件保存所述第二节点上在第二时间点之后的数据操作记录;将所述第二节点在所述第二时间点的全量数据写入到所述初始快照文件中,以创建第二快照文件;在所述第二快照文件创建成功的情况下,将所述第一磁盘文件删除;生成所述初始快照文件和所述第二磁盘文件包括:获取所述第二节点的目标负载参数,其中,所述目标负载参数用于指示所述第二节点的负载状态,所述目标负载参数包括以下一个或多个:CPU使用率,内存使用率;在根据所述目标负载参数确定所述第二节点处于目标负载状态的情况下,触发生成所述初始快照文件和所述第二磁盘文件;
第一发送单元,用于响应所述目标同步请求,将所述第一操作记录发送给所述第一节点,以在所述第一节点基于所述第一操作记录进行增量同步。
7.一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信,其特征在于,
所述存储器,用于存储计算机程序;
所述处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行权利要求1至5中任一项所述的方法步骤。
8.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至5中任一项中所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110237204.7A CN112966046B (zh) | 2021-03-03 | 2021-03-03 | 数据同步方法和装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110237204.7A CN112966046B (zh) | 2021-03-03 | 2021-03-03 | 数据同步方法和装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112966046A CN112966046A (zh) | 2021-06-15 |
CN112966046B true CN112966046B (zh) | 2024-04-12 |
Family
ID=76276621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110237204.7A Active CN112966046B (zh) | 2021-03-03 | 2021-03-03 | 数据同步方法和装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112966046B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9171002B1 (en) * | 2012-12-30 | 2015-10-27 | Emc Corporation | File based incremental block backup from user mode |
CN105243067A (zh) * | 2014-07-07 | 2016-01-13 | 北京明略软件系统有限公司 | 一种实现实时增量同步数据的方法及装置 |
CN106790378A (zh) * | 2016-11-11 | 2017-05-31 | 北京奇虎科技有限公司 | 设备间的数据全同步方法、装置及系统 |
CN107451172A (zh) * | 2016-03-31 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 用于版本管理系统的数据同步方法及设备 |
CN108183965A (zh) * | 2018-01-15 | 2018-06-19 | 郑州云海信息技术有限公司 | 一种数据同步方法、装置、设备、系统及可读存储介质 |
CN109189546A (zh) * | 2018-07-11 | 2019-01-11 | 新华三云计算技术有限公司 | 一种虚拟机在线快照的制作方法及装置 |
CN110019510A (zh) * | 2017-09-29 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种进行增量同步的方法及装置 |
CN110515774A (zh) * | 2019-08-28 | 2019-11-29 | 北京百度网讯科技有限公司 | 内存快照的生成方法、装置、电子设备及存储介质 |
CN110879825A (zh) * | 2018-09-06 | 2020-03-13 | 阿里巴巴集团控股有限公司 | 一种数据同步方法及装置 |
CN111581023A (zh) * | 2020-05-06 | 2020-08-25 | 中国银行股份有限公司 | 银行内存数据处理方法及装置 |
CN111680100A (zh) * | 2020-04-30 | 2020-09-18 | 聚好看科技股份有限公司 | redis数据同步方法及服务器 |
CN112035298A (zh) * | 2020-09-10 | 2020-12-04 | 北京城市网邻信息技术有限公司 | 一种数据备份方法、装置、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110282843A1 (en) * | 2010-05-17 | 2011-11-17 | Computer Associates Think, Inc. | Method and system for data backup and replication |
-
2021
- 2021-03-03 CN CN202110237204.7A patent/CN112966046B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9171002B1 (en) * | 2012-12-30 | 2015-10-27 | Emc Corporation | File based incremental block backup from user mode |
CN105243067A (zh) * | 2014-07-07 | 2016-01-13 | 北京明略软件系统有限公司 | 一种实现实时增量同步数据的方法及装置 |
CN107451172A (zh) * | 2016-03-31 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 用于版本管理系统的数据同步方法及设备 |
CN106790378A (zh) * | 2016-11-11 | 2017-05-31 | 北京奇虎科技有限公司 | 设备间的数据全同步方法、装置及系统 |
CN110019510A (zh) * | 2017-09-29 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种进行增量同步的方法及装置 |
CN108183965A (zh) * | 2018-01-15 | 2018-06-19 | 郑州云海信息技术有限公司 | 一种数据同步方法、装置、设备、系统及可读存储介质 |
CN109189546A (zh) * | 2018-07-11 | 2019-01-11 | 新华三云计算技术有限公司 | 一种虚拟机在线快照的制作方法及装置 |
CN110879825A (zh) * | 2018-09-06 | 2020-03-13 | 阿里巴巴集团控股有限公司 | 一种数据同步方法及装置 |
CN110515774A (zh) * | 2019-08-28 | 2019-11-29 | 北京百度网讯科技有限公司 | 内存快照的生成方法、装置、电子设备及存储介质 |
CN111680100A (zh) * | 2020-04-30 | 2020-09-18 | 聚好看科技股份有限公司 | redis数据同步方法及服务器 |
CN111581023A (zh) * | 2020-05-06 | 2020-08-25 | 中国银行股份有限公司 | 银行内存数据处理方法及装置 |
CN112035298A (zh) * | 2020-09-10 | 2020-12-04 | 北京城市网邻信息技术有限公司 | 一种数据备份方法、装置、电子设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
MII: A Novel Content Defined Chunking Algorithm for Finding Incremental Data in data Synchronization;Zhang, Changjian等;《IEEE ACCESS》;20190808;全文 * |
分布式存储上的高性能事务处理;朱涛;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20181215(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112966046A (zh) | 2021-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106713487B (zh) | 数据的同步方法和装置 | |
US11397648B2 (en) | Virtual machine recovery method and virtual machine management device | |
US10895996B2 (en) | Data synchronization method, system, and apparatus using a work log for synchronizing data greater than a threshold value | |
US20170161161A1 (en) | Periodic data replication | |
US20150213100A1 (en) | Data synchronization method and system | |
WO2019237797A1 (zh) | 数据备份的方法和装置 | |
CN112955874A (zh) | 在使用区块链的机器学习的去中心化模型构建中进行自修复的系统及方法 | |
WO2021226905A1 (zh) | 一种数据存储方法、系统及存储介质 | |
CN109783014B (zh) | 一种存储数据的方法及装置 | |
CN110351313B (zh) | 数据缓存方法、装置、设备及存储介质 | |
CN105159795A (zh) | 数据同步方法、装置和系统 | |
US20190227710A1 (en) | Incremental data restoration method and apparatus | |
CN106817387B (zh) | 一种数据同步方法、装置和系统 | |
US8612799B2 (en) | Method and apparatus of backing up subversion repository | |
US20160139996A1 (en) | Methods for providing unified storage for backup and disaster recovery and devices thereof | |
CN115658390A (zh) | 容器容灾方法、系统、装置、设备及计算机可读存储介质 | |
CN116560904A (zh) | Nas数据备份容灾方法、系统、终端及存储介质 | |
CN113419901A (zh) | 数据灾备方法、装置及服务器 | |
CN112966046B (zh) | 数据同步方法和装置、电子设备和存储介质 | |
CN107888430B (zh) | 虚拟机管理操作同步方法及装置 | |
CN115114112A (zh) | 数据同步方法及装置 | |
CN110990348B (zh) | 消息通知方法、装置及系统 | |
CN110502460B (zh) | 数据处理的方法和节点 | |
CN118277336A (zh) | 元数据管理方法、元数据管理装置以及计算机存储介质 | |
CN110362429B (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 |