CN108712505B - 数据同步方法、装置、设备、系统及存储介质 - Google Patents
数据同步方法、装置、设备、系统及存储介质 Download PDFInfo
- Publication number
- CN108712505B CN108712505B CN201810553130.6A CN201810553130A CN108712505B CN 108712505 B CN108712505 B CN 108712505B CN 201810553130 A CN201810553130 A CN 201810553130A CN 108712505 B CN108712505 B CN 108712505B
- Authority
- CN
- China
- Prior art keywords
- data record
- offset
- data
- synchronization
- file name
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Abstract
本申请提供一种数据同步方法、装置、设备、系统及存储介质,包括:接收数据记录更新请求,该请求包括:第一数据记录的偏置、第一数据记录的标识和第一文件名,第一数据记录为从设备最新同步的数据记录,第一数据记录的偏置为从预设时间到第一数据记录的同步结束时间,从设备接收到的数据记录的大小总和,第一文件名为第一数据记录所属的文件的文件名;根据第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步,第二数据记录为第一数据记录的下一条数据记录;若确定不基于内存从第二数据记录开始进行数据记录同步,则根据第一文件名和第一数据记录的标识基于磁盘从第二数据记录开始进行数据记录同步。从而提高数据同步可靠性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据同步方法、装置、设备、系统及存储介质。
背景技术
在分布式存储系统中,为了提高可扩展性,会搜采用数据拆分,也叫数据分片,而为了保证单个分片的高可用性,将采用主从模式进行数据存储。当主设备出现故障时,可以从主设备切换至从设备,从而不影响外部系统的访问。
主从模式的前提是主从设备之间的数据需要保持一致,也就是说,主从设备之间需要实现数据同步,而为了保证数据同步,最重要的是要保证对这些数据的数据记录的同步,该数据记录可以是数据更新记录、数据设置记录等。
在现有技术中,通常基于内存来进行数据记录的同步,该方式具有效率高的特点,然而由于内存中保存的数据记录有限,如果同步中断时间过久,主从设备之间将无法实现数据记录同步,从而降低了数据记录同步的可靠性。
发明内容
本申请提供一种数据同步方法、装置、设备、系统及存储介质,从而提高数据记录同步的可靠性。
第一方面,本申请提供一种数据同步方法,包括:主设备接收数据记录更新请求,数据记录更新请求包括:第一数据记录的偏置、第一数据记录的标识和第一文件名,第一数据记录为从设备最新同步的数据记录,第一数据记录的偏置为从预设时间到第一数据记录的同步结束时间,从设备接收到的数据记录的大小总和,第一文件名为第一数据记录所属的文件的文件名。主设备根据第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步,第二数据记录为第一数据记录的下一条数据记录。若确定不基于内存从第二数据记录开始进行数据记录同步,则主设备根据第一文件名和第一数据记录的标识基于磁盘从第二数据记录开始进行数据记录同步。
本申请的有益效果包括:在本申请中,主设备可以根据第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步。若确定基于内存从第二数据记录开始进行数据记录同步,则主设备基于内存进行数据记录同步,这种方式可以保证数据同步效率。若确定不基于内存从第二数据记录开始进行数据记录同步,则主设备根据第一文件名和第一数据记录的标识基于磁盘从第二数据记录开始进行数据记录同步。这种方式可以提高数据同步可靠性,因此通过本申请提供的技术方案一方面可以保证数据同步效率,另一方面可以提高数据同步可靠性。
可选地,主设备根据第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步,包括:主设备判断第一数据记录的偏置是否属于预设偏置区间。若第一数据记录的偏置属于预设偏置区间,则主设备确定基于内存从第二数据记录开始进行数据记录同步。若第一数据记录的偏置不属于预设偏置区间,则主设备确定基于磁盘从第二数据记录开始进行数据记录同步。其中,预设偏置区间为内存中存储的数据记录对应的偏置区间。
通过该方法可以有效的判断是否基于内存从第二数据记录开始进行数据记录同步。
可选地,主设备根据第一文件名和第一数据记录的标识基于磁盘从第二数据记录开始进行数据记录同步,包括:主设备根据第一文件名和第一数据记录的标识在磁盘中查找第二数据记录。主设备在磁盘中查找到第二数据记录之后,从第二数据记录开始进行数据记录同步。
可选地,从第二数据记录开始进行数据记录同步,包括:主设备开启新线程。主设备通过新线程从第二数据记录开始进行数据记录同步。
本申请的有益效果包括:主设备通过开启新线程从第二数据记录开始进行数据记录同步的方式,不会影响其他业务的进程,从而可以保证主设备的可靠性。
可选地,主设备通过新线程从第二数据记录开始进行数据记录同步之后,还包括:主设备设置从设备的状态为第一状态,第一状态用于表示从设备的数据记录同步任务处于待完成状态。
可选地,该方法还包括:主设备通过主线程检测从设备的状态。若从设备的状态为第一状态,则主设备确定第三数据记录的偏置和第二文件名,其中,第三数据记录为主设备与从设备之间当前最新同步的数据记录,第三数据记录的偏置为从预设时间到第三数据记录的同步结束时间从设备接收到的数据记录的大小总和,第二文件名为第三数据记录所属的文件的文件名。主设备判断第二文件名和第三文件名是否相同,第三文件名为主设备中第四数据记录所属的文件的文件名,第四数据记录为主设备当前最新的数据记录。若第二文件名和第三文件名不同,则主设备将还未同步的至少一条数据记录中的每条数据记录作为新的第一数据记录,并继续执行:根据第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步。
可选地,该方法还包括:若第二文件名和第三文件名相同,则主设备判断第三数据记录的偏置和第四数据记录的偏置是否相同,第四数据记录的偏置为从预设时间到第四数据记录的生成结束时间主设备生成的数据记录的大小总和。若第三数据记录的偏置和第四数据记录的偏置相同,则主设备设置从设备的状态为第二状态,第二状态用于表示从设备的数据记录同步任务处于已完成状态。
可选地,该方法还包括:若第四数据记录的偏置与第三数据记录的偏置之差小于或等于预设门限值,则主设备通过主进程将未同步的数据记录写入内存中,并基于内存同步未同步的数据记录。从而提高数据同步效率。
可选地,该方法还包括:主设备设置从设备的状态为第三状态,第三状态用于表示基于内存同步未同步的数据记录。
可选地,该方法还包括:若第四数据记录的偏置与第三数据记录的偏置之差大于预设门限值,则主设备将还未同步的至少一条数据记录中的每条数据记录作为新的第一数据记录,并继续执行:根据第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步。
可选地,该方法还包括:若第二文件名和第三文件名不同,或者,第三数据记录的偏置和第四数据记录的偏置不同,则主设备向从设备发送第四数据记录的偏置和第三文件名。若第二文件名和第三文件名相同,且,第三数据记录的偏置和第四数据记录的偏置相同,则主设备向从设备发送第三数据记录的偏置和第二文件名。
下面提供一种数据同步装置、设备、系统、存储介质及计算机程序产品。其效果可参考方法部分的效果,下面对此不再赘述。
第二方面,本申请提供一种数据同步装置,包括:
接收模块,用于接收数据记录更新请求,数据记录更新请求包括:第一数据记录的偏置、第一数据记录的标识和第一文件名,第一数据记录为从设备最新同步的数据记录,第一数据记录的偏置为从预设时间到第一数据记录的同步结束时间,从设备接收到的数据记录的大小总和,第一文件名为第一数据记录所属的文件的文件名。
判断模块,用于根据第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步,第二数据记录为第一数据记录的下一条数据记录。
同步模块,用于若确定不基于内存从第二数据记录开始进行数据记录同步,则根据第一文件名和第一数据记录的标识基于磁盘从第二数据记录开始进行数据记录同步。
可选地,判断模块具体用于:
判断第一数据记录的偏置是否属于预设偏置区间。
若第一数据记录的偏置属于预设偏置区间,则确定基于内存从第二数据记录开始进行数据记录同步。
若第一数据记录的偏置不属于预设偏置区间,则确定基于磁盘从第二数据记录开始进行数据记录同步。
其中,预设偏置区间为内存中存储的数据记录对应的偏置区间。
可选地,同步模块具体用于:
根据第一文件名和第一数据记录的标识在磁盘中查找第二数据记录。
在磁盘中查找到第二数据记录之后,从第二数据记录开始进行数据记录同步。
可选地,同步模块具体用于:
开启新线程。
通过新线程从第二数据记录开始进行数据记录同步。
可选地,还包括:
设置模块,用于设置从设备的状态为第一状态,第一状态用于表示从设备的数据记录同步任务处于待完成状态。
可选地,还包括:检测模块和确定模块。
检测模块,用于通过主线程检测从设备的状态。
确定模块,用于若从设备的状态为第一状态,则确定第三数据记录的偏置和第二文件名,其中,第三数据记录为主设备与从设备之间当前最新同步的数据记录,第三数据记录的偏置为从预设时间到第三数据记录的同步结束时间从设备接收到的数据记录的大小总和,第二文件名为第三数据记录所属的文件的文件名。
判断模块还用于:
判断第二文件名和第三文件名是否相同,第三文件名为主设备中第四数据记录所属的文件的文件名,第四数据记录为主设备当前最新的数据记录。
若第二文件名和第三文件名不同,则将还未同步的至少一条数据记录中的每条数据记录作为新的第一数据记录,并继续执行:根据第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步。
可选地,判断模块,还用于若第二文件名和第三文件名相同,则判断第三数据记录的偏置和第四数据记录的偏置是否相同,第四数据记录的偏置为从预设时间到第四数据记录的生成结束时间主设备生成的数据记录的大小总和。
设置模块,还用于若第三数据记录的偏置和第四数据记录的偏置相同,则设置从设备的状态为第二状态,第二状态用于表示从设备的数据记录同步任务处于已完成状态。
可选地,还包括:写入模块。
写入模块,还用于若第四数据记录的偏置与第三数据记录的偏置之差小于或等于预设门限值,则主设备通过主进程将未同步的数据记录写入内存中。
同步模块,还用于基于内存同步未同步的数据记录。
可选地,设置模块,还用于设置从设备的状态为第三状态,第三状态用于表示基于内存同步未同步的数据记录。
可选地,判断模块,还用于若第四数据记录的偏置与第三数据记录的偏置之差大于预设门限值,则将还未同步的至少一条数据记录中的每条数据记录作为新的第一数据记录,并继续执行:根据第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步。
可选地,还包括:
发送模块,用于:
若第二文件名和第三文件名不同,或者,第三数据记录的偏置和第四数据记录的偏置不同,则向从设备发送第四数据记录的偏置和第三文件名。
若第二文件名和第三文件名相同,且,第三数据记录的偏置和第四数据记录的偏置相同,则向从设备发送第三数据记录的偏置和第二文件名。
第三方面,本申请提供一种数据同步设备,包括:
存储器和处理器。
存储器用于指令,以使处理器执行指令,以实现如第一方面或第一方面的可选方式的数据同步方法。
第四方面,本申请提供一种数据同步系统,包括:主设备和从设备,主设备用于执行如第一方面或第一方面的可选方式的数据同步方法。
第五方面,本申请提供一种存储介质,包括:存储介质包括:指令,指令用于实现如第一方面或第一方面的可选方式的数据同步方法。
第六方面,本申请提供一种计算机程序产品,包括:计算机程序产品包括:指令,指令用于实现如第一方面或第一方面的可选方式的数据同步方法。
本申请提供一种数据同步方法、装置、设备、系统及存储介质,其中主设备可以根据第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步。若确定基于内存从第二数据记录开始进行数据记录同步,则主设备基于内存进行数据记录同步,这种方式可以保证数据同步效率。若确定不基于内存从第二数据记录开始进行数据记录同步,则主设备根据第一文件名和第一数据记录的标识基于磁盘从第二数据记录开始进行数据记录同步。这种方式可以提高数据同步可靠性,因此通过本申请提供的技术方案一方面可以保证数据同步效率,另一方面可以提高数据同步可靠性。
附图说明
图1为本申请一实施例提供的本申请技术方案的应用场景图;
图2为本申请一实施例提供的一种数据同步方法的交互流程图;
图3为本申请一实施例提供的数据记录的示意图;
图4为本申请一实施例提供的判断是否基于内存从第二数据记录开始进行数据记录同步的方法流程图;
图5为本申请一实施例提供的数据同步方法的流程图;
图6为本申请一实施例提供的一种数据同步装置600的示意图;
图7为本申请一实施例提供的一种数据同步设备700的示意图。
具体实施方式
如上所述,在现有技术中通常基于内存来进行数据记录的同步,该方式具有效率高的特点,然而由于内存中保存的数据记录有限,如果同步中断时间过久,主从设备之间将无法实现数据记录同步,从而降低了数据记录同步的可靠性。
为了解决这一技术问题,本申请提供一种数据同步方法、装置、设备及存储介质。图1为本申请一实施例提供的本申请技术方案的应用场景图,如图1所示,为了保证数据的高可用性,以至于不影响外部系统的访问,主设备11和至少一个从设备12(图1以包括两个从设备12为例)需要实现数据同步。
下面将介绍主设备与一个从设备之间的数据同步方法。具体地,图2为本申请一实施例提供的一种数据同步方法的交互流程图,如图2所示,该方法包括如下步骤:
步骤S201:主设备接收数据记录更新请求。该数据记录更新请求包括:第一数据记录的偏置、第一数据记录的标识和第一文件名。
步骤S202:主设备根据第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步。
步骤S203:若确定不基于内存从第二数据记录开始进行数据记录同步,则主设备根据第一文件名和第一数据记录的标识基于磁盘从第二数据记录开始进行数据记录同步。
针对步骤S201进行说明:图3为本申请一实施例提供的数据记录的示意图,如图3所示,通常数据记录包括:头部(Op-header)和日志(Op-log),Op-header包括:版本标识(version_id)、服务器标识(server_id,用于表示该数据记录的来源)、数据记录的标识、时间戳(用于表示该数据记录的生成时间),Op_log包括:Redis origin aof,Redis originaof可以是set(a,b)或者update(a,b),其中set(a,b)为设置函数,update(a,b)为更新函数,a和b分别表示函数的参数。例如:aof-111.aof文件包括如下数据记录:
Version:1,server_id:1,op_id:1,timestamp:111,set(a,b);
Version:1,server_id:1,op_id:2,timestamp:112,set(c,d);
Version:1,server_id:2,op_id:3,timestamp:112,set(e,f)。
基于此,可知每个数据记录都具有对应的文件,以及,该数据记录的标识。
所述第一数据记录为所述从设备最新同步的数据记录。
所述第一数据记录的偏置为从预设时间到所述第一数据记录的同步结束时间,所述从设备接收到的数据记录的大小总和。可选地,通常从设备接收到数据记录之后,会将数据记录存储至对应文件中,这种情况下,预设时间可以是建立该文件的时间。假设记预设时间为0,第一数据记录的同步结束时间为20微秒,从设备在这段时间内接收了数据记录1、数据记录2和数据记录3(该数据记录3为上述的第一数据记录),并且数据记录1的大小为2兆字节(Megabyte,MB)、数据记录2的大小为3MB、数据记录3的大小为2MB,因此第一数据记录的偏置为2+3+2=7MB。
所述第一文件名为所述第一数据记录所属的文件的文件名。
针对步骤S202进行说明:
第二数据记录为第一数据记录的下一条数据记录,即它是从设备未同步的第一条数据记录。
图4为本申请一实施例提供的判断是否基于内存从第二数据记录开始进行数据记录同步的方法流程图,如图4所示,该方法包括如下步骤:
步骤S401:主设备判断第一数据记录的偏置是否属于预设偏置区间,若第一数据记录的偏置属于预设偏置区间,则执行步骤S402,否则,则执行步骤S403。
步骤S402:主设备基于内存从第二数据记录开始进行数据记录同步。
步骤S403:主设备基于磁盘从第二数据记录开始进行数据记录同步。
其中,预设偏置区间为内存中存储的数据记录对应的偏置区间。具体地,按照内存中各数据记录的存储时间先后顺序,假设第一条数据记录的偏置为A,最后一条数据记录的偏置为B,则“内存中存储的数据记录对应的偏置区间”为【A,B】。若第一数据记录的偏置属于预设偏置区间,说明从第二数据记录开始的数据记录目前还存储在内存中,基于此,可以通过内存同步从第二数据记录开始进行数据记录同步。相反,若第一数据记录的偏置不属于预设偏置区间,说明当前内存中未存储第二数据记录开始的数据记录中的部分或全部,基于此,主设备需要通过磁盘从第二数据记录开始进行数据记录同步。
其中,基于内存同步数据记录的方式为现有技术,本申请对此不再说明。同样,基于磁盘同步数据记录的方式也为现有技术,本申请对此不再说明。
针对步骤S203进行说明:由于数据记录之间是按照一定的顺序存储的,当主设备获取到第一文件名和第一数据记录的标识之后,主设备可以查询到第一数据记录,并按照顺序确定第一数据记录的下一条数据记录为第二数据记录,基于此,主设备可以基于磁盘从第二数据记录开始进行数据记录同步。
在本申请中,主设备可以根据第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步。若确定基于内存从第二数据记录开始进行数据记录同步,则主设备基于内存进行数据记录同步,这种方式可以保证数据同步效率。若确定不基于内存从第二数据记录开始进行数据记录同步,则主设备根据第一文件名和第一数据记录的标识基于磁盘从第二数据记录开始进行数据记录同步。这种方式可以提高数据同步可靠性,因此通过本申请提供的技术方案一方面可以保证数据同步效率,另一方面可以提高数据同步可靠性。
进一步地,当主设备确定基于磁盘从第二数据记录开始进行数据记录同步时,主设备可以开启新线程,并通过所述新线程从第二数据记录开始进行数据记录同步。而主设备可以通过主线程实现其他业务,如更新数据记录等,因此主设备通过开启新线程从第二数据记录开始进行数据记录同步的方式,不会影响其他业务的进程,从而可以保证主设备的可靠性。
更进一步地,由于主从设备在进行数据记录的同步过程中,可能主设备还在不断地更新数据,因此主设备还需要判断是否还存在需要同步的数据记录,下面结合上述实施例提供一种数据同步方法。
图5为本申请一实施例提供的数据同步方法的流程图,如图5所示,该方法的执行主体为主设备,该方法包括如下流程:
步骤S501:主设备接收数据记录更新请求。该数据记录更新请求包括:第一数据记录的偏置、第一数据记录的标识和第一文件名。
所述第一数据记录为所述从设备最新同步的数据记录。
所述第一数据记录的偏置为从预设时间到所述第一数据记录的同步结束时间,所述从设备接收到的数据记录的大小总和。可选地,通常从设备接收到数据记录之后,会将数据记录存储至对应文件中,这种情况下,预设时间可以是建立该文件的时间。假设记预设时间为0,第一数据记录的同步结束时间为20微秒,从设备在这段时间内接收了数据记录1、数据记录2和数据记录3(该数据记录3为上述的第一数据记录),并且数据记录1的大小为2MB、数据记录2的大小为3MB、数据记录3的大小为2MB,因此第一数据记录的偏置为2+3+2=7MB。
所述第一文件名为所述第一数据记录所属的文件的文件名。
步骤S502:主设备根据第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步。若确定基于内存从第二数据记录开始进行数据记录同步,则执行步骤S503。若确定不基于内存从第二数据记录开始进行数据记录同步,则执行步骤S504。
步骤S503:主设备基于内存从第二数据记录开始进行数据记录同步。
步骤S504:主设备开启新线程,通过新线程根据第一文件名和第一数据记录的标识在磁盘中查找第二数据记录,并从第二数据记录开始同步,设置从设备的状态为第一状态,且确定第三数据记录所属的文件的第二文件名和第三数据记录的偏置。
结合步骤S502至步骤S504进行说明:
第二数据记录为第一数据记录的下一条数据记录,即它是从设备未同步的第一条数据记录。
具体地,主设备判断第一数据记录的偏置是否属于预设偏置区间,若第一数据记录的偏置属于预设偏置区间,则基于内存从第二数据记录开始进行数据记录同步。否则,则基于磁盘从第二数据记录开始进行数据记录同步。其中,预设偏置区间为内存中存储的数据记录对应的偏置区间。具体地,按照内存中各数据记录的存储时间先后顺序,假设第一条数据记录的偏置为A,最后一条数据记录的偏置为B,则“内存中存储的数据记录对应的偏置区间”为【A,B】。若第一数据记录的偏置属于预设偏置区间,说明从第二数据记录开始的数据记录目前还存储在内存中,基于此,可以通过内存同步从第二数据记录开始进行数据记录同步。相反,若第一数据记录的偏置不属于预设偏置区间,说明当前内存中未存储第二数据记录开始的数据记录中的部分或全部,基于此,主设备需要通过磁盘从第二数据记录开始进行数据记录同步。
可选地,当主设备基于磁盘从第二数据记录开始进行数据记录同步时,主设备开启新线程,并且可以设置从设备的状态为“REDIS_AOF_SYNC”,该状态表示开始进行数据记录同步。
在主设备将磁盘当前存储的数据记录同步完成后,主设备可以设置从设备的状态为第一状态,且确定第三数据记录所属的文件的第二文件名和第三数据记录的偏置,第一状态用于表示从设备的数据记录同步任务处于待完成状态,第一状态可以记为:REDIS_AOF_MAY-COMPLETED”。所述第三数据记录为所述主设备与所述从设备之间当前最新同步的数据记录。即:当前磁盘中存储是第二数据记录、第三数据记录以及第二数据记录和第三数据记录之间的所有数据记录,基于此,主从设备可以同步当前磁盘中存储的数据记录。所述第三数据记录的偏置为从所述预设时间到所述第三数据记录的同步结束时间所述从设备接收到的数据记录的大小总和,所述第二文件名为所述第三数据记录所属的文件的文件名。
步骤S505:主设备判断第二文件名和第三文件名是否相同。若第二文件名和第三文件名不同,则主设备将还未同步的至少一条数据记录中的每条数据记录作为新的第一数据记录,并执行步骤S502,若第二文件名和第三文件名相同,则执行步骤S506。
由于主从设备在进行数据记录的同步过程中,可能主设备还不断的进行数据更新,因此,所述第三文件名为所述主设备中最新的第四数据记录所属的文件的文件名。
步骤S506:主设备判断第三数据记录的偏置和第四数据记录的偏置是否相同,若第三数据记录的偏置和第四数据记录的偏置相同,则执行步骤S507;否则,则执行步骤S508;
所述第四数据记录的偏置为从所述预设时间到所述第四数据记录的生成结束时间所述主设备生成的数据记录的大小总和。
步骤S507:主设备设置所述从设备的状态为第二状态。
所述第二状态用于表示所述从设备的数据记录同步任务处于已完成状态。所述第二状态可以记为“REDIS_AOF_COMPLETED”。
需要说明的是,主从设备接下来的数据记录同步方式重复本申请提供的数据同步方法,对此不再赘述。
步骤S508:判断第四数据记录的偏置与第三数据记录的偏置之差是否小于或等于预设门限值,若第四数据记录的偏置与第三数据记录的偏置之差小于或等于预设门限值,则执行步骤S509;否则,将还未同步的至少一条数据记录中的每条数据记录作为新的第一数据记录,并继续执行步骤S502。
步骤S509:主设备通过主进程将未同步的数据记录写入内存中,并基于内存同步未同步的数据记录。
其中,从第三数据记录的下一条数据记录至第四数据记录均为主从设备之间未同步的数据记录。具体地,主设备可以将未同步的数据记录写入内存中的缓存区,并基于该缓存区进行数据记录同步。
步骤S510:主设备设置从设备的状态为第三状态。
该第三状态用于表示基于所述内存同步未同步的数据记录。该第三状态可以记为“REDIS_AOF_ONLINE”。
可选地,若第二文件名和第三文件名不同,或者,第三数据记录的偏置和第四数据记录的偏置不同,则主设备向从设备发送第四数据记录的偏置和第三文件名;若第二文件名和第三文件名相同,且,第三数据记录的偏置和第四数据记录的偏置相同,则主设备向从设备发送第三数据记录的偏置和第二文件名。
本申请提供一种数据同步方法,其中由于主从设备在进行数据记录的同步过程中,可能主设备还不断的进行数据更新,因此,主设备会自发同步主从设备之间还未同步的数据记录,以提高数据同步效率,进一步地,当第四数据记录的偏置和第三数据记录的偏置之差小于或等于预设门限值时,主设备可以将未同步的数据记录写入内存的缓冲区,基于该缓冲区进行数据记录的同步,而不是基于磁盘进行数据记录的同步,从而进一步地提高了数据同步效率。
图6为本申请一实施例提供的一种数据同步装置600的示意图,如图6所示,该装置包括:
接收模块601,用于接收数据记录更新请求,数据记录更新请求包括:第一数据记录的偏置、第一数据记录的标识和第一文件名,第一数据记录为从设备最新同步的数据记录,第一数据记录的偏置为从预设时间到第一数据记录的同步结束时间,从设备接收到的数据记录的大小总和,第一文件名为第一数据记录所属的文件的文件名。
判断模块602,用于根据第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步,第二数据记录为第一数据记录的下一条数据记录。
同步模块603,用于若确定不基于内存从第二数据记录开始进行数据记录同步,则根据第一文件名和第一数据记录的标识基于磁盘从第二数据记录开始进行数据记录同步。
可选地,判断模块602具体用于:判断第一数据记录的偏置是否属于预设偏置区间;若第一数据记录的偏置属于预设偏置区间,则确定基于内存从第二数据记录开始进行数据记录同步;若第一数据记录的偏置不属于预设偏置区间,则确定基于磁盘从第二数据记录开始进行数据记录同步;其中,预设偏置区间为内存中存储的数据记录对应的偏置区间。
可选地,同步模块603具体用于:根据第一文件名和第一数据记录的标识在磁盘中查找第二数据记录;在磁盘中查找到第二数据记录之后,从第二数据记录开始进行数据记录同步。
可选地,同步模块603具体用于:开启新线程;通过新线程从第二数据记录开始进行数据记录同步。
可选地,该装置还包括:设置模块604,用于设置从设备的状态为第一状态,第一状态用于表示从设备的数据记录同步任务处于待完成状态。
可选地,该装置还包括:检测模块605和确定模块606。
检测模块605,用于通过主线程检测从设备的状态。
确定模块606,用于若从设备的状态为第一状态,则确定第三数据记录的偏置和第二文件名,其中,第三数据记录为主设备与从设备之间当前最新同步的数据记录,第三数据记录的偏置为从预设时间到第三数据记录的同步结束时间从设备接收到的数据记录的大小总和,第二文件名为第三数据记录所属的文件的文件名;
判断模块602还用于:判断第二文件名和第三文件名是否相同,第三文件名为主设备中第四数据记录所属的文件的文件名,第四数据记录为主设备当前最新的数据记录;若第二文件名和第三文件名不同,则将还未同步的至少一条数据记录中的每条数据记录作为新的第一数据记录,并继续执行:根据第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步。
可选地,判断模块602,还用于若第二文件名和第三文件名相同,则判断第三数据记录的偏置和第四数据记录的偏置是否相同,第四数据记录的偏置为从预设时间到第四数据记录的生成结束时间主设备生成的数据记录的大小总和。
设置模块604,还用于若第三数据记录的偏置和第四数据记录的偏置相同,则设置从设备的状态为第二状态,第二状态用于表示从设备的数据记录同步任务处于已完成状态。
可选地,该装置还包括:写入模块607。
写入模块607,还用于若第四数据记录的偏置与第三数据记录的偏置之差小于或等于预设门限值,则主设备通过主进程将未同步的数据记录写入内存中。
同步模块603,还用于基于内存同步未同步的数据记录。
可选地,设置模块604,还用于设置从设备的状态为第三状态,第三状态用于表示基于内存同步未同步的数据记录。
可选地,判断模块602,还用于若第四数据记录的偏置与第三数据记录的偏置之差大于预设门限值,则将还未同步的至少一条数据记录中的每条数据记录作为新的第一数据记录,并继续执行:根据第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步。
可选地,该装置还包括:发送模块608。其用于:若第二文件名和第三文件名不同,或者,第三数据记录的偏置和第四数据记录的偏置不同,则向从设备发送第四数据记录的偏置和第三文件名;若第二文件名和第三文件名相同,且,第三数据记录的偏置和第四数据记录的偏置相同,则向从设备发送第三数据记录的偏置和第二文件名。
本申请提供的数据同步装置可以用于执行上述的数据同步方法,其内容和效果在此不再赘述。
图7为本申请一实施例提供的一种数据同步设备700的示意图,如图7所示,该设备包括:存储器701、处理器702和收发器703。
存储器701用于指令,以使处理器702执行指令,以实现上述的数据同步方法。
收发器703用于与其他设备之间实现通信。
处理器702可以被一个或多个应用专用集成电路(Application SpecificIntegrated Circuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理设备(Digital Signal Processing Device,DSPD)、可编程逻辑器件(ProgrammableLogic Device,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、控制器、微控制器、微处理器或其他电子元件实现。
存储器701可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM),可编程只读存储器(Programmable read-only memory,PROM),只读存储器(Read-Only Memory,ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请提供的数据同步设备可以用于执行上述的数据同步方法,其内容和效果在此不再赘述。
本申请还提供一种数据同步系统,包括:主设备和从设备,主设备用于执行上述的数据同步方法。其内容和效果在此不再赘述。
本申请还提供一种存储介质,包括:存储介质包括:指令,指令用于实现上述的数据同步方法。其内容和效果在此不再赘述。
本申请提供一种计算机程序产品,该计算机程序产品包括指令,该指令用于实现上述的数据同步方法。其内容和效果在此不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (23)
1.一种数据同步方法,其特征在于,包括:
主设备接收数据记录更新请求,所述数据记录更新请求包括:第一数据记录的偏置、所述第一数据记录的标识和第一文件名,所述第一数据记录为从设备最新同步的数据记录,所述第一数据记录的偏置为从预设时间到所述第一数据记录的同步结束时间所述从设备接收到的数据记录的大小总和,所述第一文件名为所述第一数据记录所属的文件的文件名;
所述主设备判断所述第一数据记录的偏置是否属于预设偏置区间;其中,所述预设偏置区间为内存中存储的数据记录对应的偏置区间;
若所述第一数据记录的偏置属于所述预设偏置区间,则所述主设备确定基于内存从第二数据记录开始进行数据记录同步;所述第二数据记录为所述第一数据记录的下一条数据记录;
若所述第一数据记录的偏置不属于所述预设偏置区间,则所述主设备根据所述第一文件名和所述第一数据记录的标识基于磁盘从所述第二数据记录开始进行数据记录同步。
2.根据权利要求1所述的方法,其特征在于,所述主设备根据所述第一文件名和所述第一数据记录的标识基于磁盘从所述第二数据记录开始进行数据记录同步,包括:
所述主设备根据所述第一文件名和所述第一数据记录的标识在所述磁盘中查找所述第二数据记录;
所述主设备在所述磁盘中查找到所述第二数据记录之后,从所述第二数据记录开始进行数据记录同步。
3.根据权利要求2所述的方法,其特征在于,所述从所述第二数据记录开始进行数据记录同步,包括:
所述主设备开启新线程;
所述主设备通过所述新线程从所述第二数据记录开始进行数据记录同步。
4.根据权利要求3所述的方法,其特征在于,所述主设备通过所述新线程从所述第二数据记录开始进行数据记录同步之后,还包括:
所述主设备设置所述从设备的状态为第一状态,所述第一状态用于表示所述从设备的数据记录同步任务处于待完成状态。
5.根据权利要求4所述的方法,其特征在于,还包括:
所述主设备通过主线程检测所述从设备的状态;
若所述从设备的状态为所述第一状态,则所述主设备确定第三数据记录的偏置和第二文件名,其中,所述第三数据记录为所述主设备与所述从设备之间当前最新同步的数据记录,所述第三数据记录的偏置为从所述预设时间到所述第三数据记录的同步结束时间所述从设备接收到的数据记录的大小总和,所述第二文件名为所述第三数据记录所属的文件的文件名;
所述主设备判断所述第二文件名和第三文件名是否相同,所述第三文件名为所述主设备中第四数据记录所属的文件的文件名,所述第四数据记录为所述主设备当前最新的数据记录;
若所述第二文件名和所述第三文件名不同,则所述主设备将还未同步的至少一条数据记录中的每条数据记录作为新的第一数据记录,并继续执行:根据所述第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步。
6.根据权利要求5所述的方法,其特征在于,还包括:
若所述第二文件名和所述第三文件名相同,则所述主设备判断所述第三数据记录的偏置和所述第四数据记录的偏置是否相同,所述第四数据记录的偏置为从所述预设时间到所述第四数据记录的生成结束时间所述主设备生成的数据记录的大小总和;
若所述第三数据记录的偏置和所述第四数据记录的偏置相同,则所述主设备设置所述从设备的状态为第二状态,所述第二状态用于表示所述从设备的数据记录同步任务处于已完成状态。
7.根据权利要求6所述的方法,其特征在于,还包括:
若所述第四数据记录的偏置与所述第三数据记录的偏置之差小于或等于预设门限值,则所述主设备通过主进程将未同步的数据记录写入所述内存中,并基于所述内存同步未同步的数据记录。
8.根据权利要求7所述的方法,其特征在于,还包括:
所述主设备设置所述从设备的状态为第三状态,所述第三状态用于表示基于所述内存同步未同步的数据记录。
9.根据权利要求6-8任一项所述的方法,其特征在于,还包括:
若所述第四数据记录的偏置与所述第三数据记录的偏置之差大于所述预设门限值,则所述主设备将还未同步的至少一条数据记录中的每条数据记录作为新的第一数据记录,并继续执行:根据所述第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步。
10.根据权利要求6-8任一项所述的方法,其特征在于,还包括:
若所述第二文件名和所述第三文件名不同,或者,所述第三数据记录的偏置和所述第四数据记录的偏置不同,则所述主设备向所述从设备发送所述第四数据记录的偏置和所述第三文件名;
若所述第二文件名和所述第三文件名相同,且,所述第三数据记录的偏置和所述第四数据记录的偏置相同,则所述主设备向所述从设备发送所述第三数据记录的偏置和所述第二文件名。
11.一种数据同步装置,其特征在于,包括:
接收模块,用于接收数据记录更新请求,所述数据记录更新请求包括:第一数据记录的偏置、所述第一数据记录的标识和第一文件名,所述第一数据记录为从设备最新同步的数据记录,所述第一数据记录的偏置为从预设时间到所述第一数据记录的同步结束时间所述从设备接收到的数据记录的大小总和,所述第一文件名为所述第一数据记录所属的文件的文件名;
判断模块,用于判断所述第一数据记录的偏置是否属于预设偏置区间;其中,所述预设偏置区间为内存中存储的数据记录对应的偏置区间;
同步模块,用于若所述第一数据记录的偏置属于所述预设偏置区间,则确定基于内存从第二数据记录开始进行数据记录同步,所述第二数据记录为所述第一数据记录的下一条数据记录;若所述第一数据记录的偏置不属于所述预设偏置区间,则根据所述第一文件名和所述第一数据记录的标识基于磁盘从所述第二数据记录开始进行数据记录同步。
12.根据权利要求11所述的装置,其特征在于,所述同步模块具体用于:
根据所述第一文件名和所述第一数据记录的标识在所述磁盘中查找所述第二数据记录;
在所述磁盘中查找到所述第二数据记录之后,从所述第二数据记录开始进行数据记录同步。
13.根据权利要求12所述的装置,其特征在于,所述同步模块具体用于:
开启新线程;
通过所述新线程从所述第二数据记录开始进行数据记录同步。
14.根据权利要求13所述的装置,其特征在于,还包括:
设置模块,用于设置所述从设备的状态为第一状态,所述第一状态用于表示所述从设备的数据记录同步任务处于待完成状态。
15.根据权利要求14所述的装置,其特征在于,还包括:检测模块和确定模块;
所述检测模块,用于通过主线程检测所述从设备的状态;
所述确定模块,用于若所述从设备的状态为所述第一状态,则确定第三数据记录的偏置和第二文件名,其中,所述第三数据记录为主设备与所述从设备之间当前最新同步的数据记录,所述第三数据记录的偏置为从所述预设时间到所述第三数据记录的同步结束时间所述从设备接收到的数据记录的大小总和,所述第二文件名为所述第三数据记录所属的文件的文件名;
所述判断模块还用于:
判断所述第二文件名和第三文件名是否相同,所述第三文件名为所述主设备中第四数据记录所属的文件的文件名,所述第四数据记录为所述主设备当前最新的数据记录;
若所述第二文件名和所述第三文件名不同,则将还未同步的至少一条数据记录中的每条数据记录作为新的第一数据记录,并继续执行:根据所述第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步。
16.根据权利要求15所述的装置,其特征在于,
所述判断模块,还用于若所述第二文件名和所述第三文件名相同,则判断所述第三数据记录的偏置和所述第四数据记录的偏置是否相同,所述第四数据记录的偏置为从所述预设时间到所述第四数据记录的生成结束时间所述主设备生成的数据记录的大小总和;
所述设置模块,还用于若所述第三数据记录的偏置和所述第四数据记录的偏置相同,则设置所述从设备的状态为第二状态,所述第二状态用于表示所述从设备的数据记录同步任务处于已完成状态。
17.根据权利要求16所述的装置,其特征在于,还包括:写入模块;
所述写入模块,还用于若所述第四数据记录的偏置与所述第三数据记录的偏置之差小于或等于预设门限值,则所述主设备通过主进程将未同步的数据记录写入所述内存中;
所述同步模块,还用于基于所述内存同步未同步的数据记录。
18.根据权利要求17所述的装置,其特征在于,
所述设置模块,还用于设置所述从设备的状态为第三状态,所述第三状态用于表示基于所述内存同步未同步的数据记录。
19.根据权利要求16-18任一项所述的装置,其特征在于,
所述判断模块,还用于若所述第四数据记录的偏置与所述第三数据记录的偏置之差大于所述预设门限值,则将还未同步的至少一条数据记录中的每条数据记录作为新的第一数据记录,并继续执行:根据所述第一数据记录的偏置判断是否基于内存从第二数据记录开始进行数据记录同步。
20.根据权利要求16-18任一项所述的装置,其特征在于,还包括:
发送模块,用于:
若所述第二文件名和所述第三文件名不同,或者,所述第三数据记录的偏置和所述第四数据记录的偏置不同,则向所述从设备发送所述第四数据记录的偏置和所述第三文件名;
若所述第二文件名和所述第三文件名相同,且,所述第三数据记录的偏置和所述第四数据记录的偏置相同,则向所述从设备发送所述第三数据记录的偏置和所述第二文件名。
21.一种数据同步设备,其特征在于,包括:
存储器和处理器;
所述存储器用于指令,以使所述处理器执行所述指令,以实现如权利要求1-10任一项所述的数据同步方法。
22.一种数据同步系统,其特征在于,包括:主设备和从设备,所述主设备用于执行如权利要求1-10任一项所述的数据同步方法。
23.一种存储介质,其特征在于,包括:所述存储介质包括:指令,所述指令用于实现如权利要求1-10任一项所述的数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810553130.6A CN108712505B (zh) | 2018-05-31 | 2018-05-31 | 数据同步方法、装置、设备、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810553130.6A CN108712505B (zh) | 2018-05-31 | 2018-05-31 | 数据同步方法、装置、设备、系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108712505A CN108712505A (zh) | 2018-10-26 |
CN108712505B true CN108712505B (zh) | 2021-04-06 |
Family
ID=63870071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810553130.6A Active CN108712505B (zh) | 2018-05-31 | 2018-05-31 | 数据同步方法、装置、设备、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108712505B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111309747A (zh) * | 2020-02-18 | 2020-06-19 | 京东数字科技控股有限公司 | 数据同步方法、系统和装置 |
CN112346661B (zh) * | 2020-11-16 | 2023-09-29 | 脸萌有限公司 | 数据处理方法、装置和电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1559257B1 (de) * | 2002-11-06 | 2007-08-08 | Barix AG | Verfahren und vorrichtung zur synchronisierten wiedergabe von datenströmen |
CN103023879A (zh) * | 2012-11-26 | 2013-04-03 | 国电南瑞科技股份有限公司 | 一种基于高速缓存的数据中心间广域数据同步方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102081619A (zh) * | 2009-11-26 | 2011-06-01 | 中国移动通信集团公司 | 数据更新方法、分发节点及海量存储集群系统 |
JP5372988B2 (ja) * | 2011-03-22 | 2013-12-18 | 株式会社日立製作所 | データ同期サーバ、システム、及びデータ転送帯域制御方法 |
CN106940699B (zh) * | 2016-01-05 | 2021-02-05 | 创新先进技术有限公司 | 一种内存数据的同步处理方法、装置、服务器及系统 |
CN108694199A (zh) * | 2017-04-10 | 2018-10-23 | 北京京东尚科信息技术有限公司 | 数据同步装置、方法、存储介质及电子设备 |
-
2018
- 2018-05-31 CN CN201810553130.6A patent/CN108712505B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1559257B1 (de) * | 2002-11-06 | 2007-08-08 | Barix AG | Verfahren und vorrichtung zur synchronisierten wiedergabe von datenströmen |
CN103023879A (zh) * | 2012-11-26 | 2013-04-03 | 国电南瑞科技股份有限公司 | 一种基于高速缓存的数据中心间广域数据同步方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108712505A (zh) | 2018-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109241175B (zh) | 数据同步方法、装置、存储介质及电子设备 | |
US9575849B2 (en) | Synchronized backup and recovery of database systems | |
US9952783B2 (en) | Data processing method and apparatus, and shared storage device | |
US20200150890A1 (en) | Data Deduplication Method and Apparatus | |
US20160147813A1 (en) | Distributed transaction commit protocol | |
JP5775973B2 (ja) | 複数ソースからのプレイリストのマージ | |
EP3185125B1 (en) | Data backup method, system, node and computer storage media | |
WO2017049764A1 (zh) | 数据读写方法及分布式存储系统 | |
KR101103921B1 (ko) | 연속 미러링 환경에서 시점 복사 동작의 실행 | |
WO2016091069A1 (zh) | 一种数据操作方法及装置 | |
US7979401B2 (en) | Time based file system for continuous data protection | |
US20140108349A1 (en) | Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation | |
TW201202959A (en) | Data synchronization methods for synchronizing data in communication systems and communication systems | |
WO2017076223A1 (zh) | 文件存储中的索引实现方法和系统 | |
CN108712505B (zh) | 数据同步方法、装置、设备、系统及存储介质 | |
US20190347167A1 (en) | Primary Node-Standby Node Data Transmission Method, Control Node, and Database System | |
US20070156778A1 (en) | File indexer | |
WO2014153940A1 (zh) | 处理数据库重做数据的方法和装置 | |
CN109145060B (zh) | 数据处理方法及装置 | |
JP2009070363A (ja) | 記憶装置による内部動作の管理 | |
CN115599747B (zh) | 一种分布式存储系统的元数据同步方法、系统及设备 | |
WO2017113694A1 (zh) | 文件同步方法、装置及系统 | |
WO2019080370A1 (zh) | 一种数据读写方法、装置和存储服务器 | |
WO2017157158A1 (zh) | 写数据的方法及装置、计算机存储介质 | |
JP2012510094A5 (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 |