CN109714392A - 一种跨机房数据同步方法和装置 - Google Patents
一种跨机房数据同步方法和装置 Download PDFInfo
- Publication number
- CN109714392A CN109714392A CN201811420567.9A CN201811420567A CN109714392A CN 109714392 A CN109714392 A CN 109714392A CN 201811420567 A CN201811420567 A CN 201811420567A CN 109714392 A CN109714392 A CN 109714392A
- Authority
- CN
- China
- Prior art keywords
- data
- message
- computer room
- data number
- current
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种跨机房数据同步方法和装置,应用于目标机房,所述目标机房与源机房通信连接,所述源机房用于向所述目标机房发布数据消息,所述数据消息包括当前数据编号和下一数据编号,所述方法包括:接收所述源机房发布的第一数据消息;获取前一次接收的第二数据消息的下一数据编号;判断所述第一数据消息的当前数据编号是否与所述第二数据消息的下一数据编号匹配;若所述第一数据消息的当前数据编号大于所述第二数据消息的下一数据编号,则生成数据校验失败消息;将所述数据校验失败消息返回至所述源机房。通过对同步数据进行校验,从而能够及时校验接收的同步数据是否异常,提高跨机房数据同步的可靠性。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种跨机房数据同步方法和一种跨机房数据同步装置。
背景技术
目前,针对一些大型网站业务,在系统可用性上往往会考虑数据库的跨机房镜像复制,容灾备份等,在发生不可抗力因素导致当地数据不可用时,能够快速的通过异步的数据库备份或者镜像提供系统访问。
Mysql、Oracle等数据库的主从复制对网络要求比较高,一般只适用在同一个机房内。跨机房数据库的数据同步系统中一般是采用解析日志的方式进行数据同步,源机房通过解析Binlog更新日志文件将变更数据进行解析组装,然后将变更数据发送到目的机房,目的机房的解析模块收到变更数据进行处理后,将变更数据写到目的机房数据库。
跨机房进行数据同步时,由于是跨机房数据传输,网络不稳定,机房间数据传输会存在一定的丢包,也有可能收到多次重复数据包,最终导致接收端接收到的数据异常。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种跨机房数据同步方法和相应的一种跨机房数据同步装置。
为了解决上述问题,本发明实施例公开了一种跨机房数据同步方法,应用于目标机房,所述目标机房与源机房通信连接,所述源机房用于向所述目标机房发布数据消息,所述数据消息包括当前数据编号和下一数据编号,所述方法包括:
接收所述源机房发布的第一数据消息;
获取前一次接收的第二数据消息的下一数据编号;
判断所述第一数据消息的当前数据编号是否与所述第二数据消息的下一数据编号匹配;
若所述第一数据消息的当前数据编号大于所述第二数据消息的下一数据编号,则生成数据校验失败消息;
将所述数据校验失败消息返回至所述源机房。
可选的,所述接收所述源机房发布的第一数据消息,包括:
接收所述源机房发布的针对预设消息主题的第一数据消息。
可选的,所述获取前一次接收的第二数据消息的下一数据编号,包括:
获取前一次接收的针对所述预设消息主题的第二数据消息;
提取所述第二数据消息的下一数据编号。
可选的,所述生成数据校验失败消息,包括:
将所述第二数据消息的下一数据编号作为当前数据编号;
根据所述当前数据编号,生成所述数据校验失败消息。
可选的,所述方法还包括:
若所述第一数据消息的当前数据编号小于所述第二数据消息的下一数据编号,则丢弃所述第一数据消息的第一数据。
本发明实施例还公开了一种跨机房数据同步装置,其特征在于,应用于目标机房,所述目标机房与源机房通信连接,所述源机房用于向所述目标机房发布数据消息,所述数据消息包括当前数据编号和下一数据编号,所述装置包括:
第一数据消息接收模块,用于接收所述源机房发布的第一数据消息;
下一数据编号获取模块,用于获取前一次接收的第二数据消息的下一数据编号;
判断模块,用于判断所述第一数据消息的当前数据编号是否与所述第二数据消息的下一数据编号匹配;
数据校验失败消息生成模块,用于若所述第一数据消息的当前数据编号大于所述第二数据消息的下一数据编号,则生成数据校验失败消息,则生成数据校验失败消息;
数据校验失败消息返回模块,用于将所述数据校验失败消息返回至所述源机房。
可选的,所述第一数据消息接收模块包括:
第一数据消息接收子模块,用于接收所述源机房发布的针对预设消息主题的第一数据消息。
可选的,所述下一数据编号获取模块包括:
第二数据消息获取子模块,用于获取前一次接收的针对所述预设消息主题的第二数据消息;
下一数据编号提取子模块,用于提取所述第二数据消息的下一数据编号。
可选的,所述数据校验失败消息生成模块包括:
当前数据编号确定单元,用于将所述第二数据消息的下一数据编号作为当前数据编号;
数据校验失败消息生成单元,用于根据所述当前数据编号,生成所述数据校验失败消息。
可选的,所述装置还包括:
第一数据消息丢弃模块,用于若所述第一数据消息的当前数据编号小于所述第二数据消息的下一数据编号,则丢弃所述第一数据消息。
本发明实施例还公开了一种装置,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如本发明实施例所述的一个或多个的跨机房数据同步方法。
本发明实施例还公开了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如本发明实施例所述的一个或多个的跨机房数据同步方法。
本发明实施例包括以下优点:
在本发明实施例中,通过接收源机房发布的第一数据消息,获取前一次接收的第二数据消息的下一数据编号,进一步判断第一数据消息的当前数据编号是否与第二数据消息的下一数据编号匹配,若第一数据消息的当前数据编号与第二数据消息的下一数据编号不匹配,则生成数据校验失败消息,并将该数据校验失败消息返回至源机房,通过对源机房传输到目标机房的同步数据添加编号,目标机房根据上一次接收的数据消息的下一数据编号,对本次接收的数据消息的当前数据编号进行校验,从而能够及时校验接收的同步数据是否异常,提高跨机房数据同步的可靠性。
附图说明
图1是本发明的一种跨机房数据同步系统的结构框图;
图2是本发明的一种跨机房数据同步时序示意图;
图3是本发明实施例的一种跨机房数据同步方法实施例一的步骤流程图;
图4是本发明实施例的一种跨机房数据同步方法实施例二的步骤流程图;
图5是本发明实施例的一种跨机房数据同步装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本发明实施例的一种跨机房数据同步系统的结构框图,所述系统可以包括增量数据解析模块,更新数据确定模块,Nginx反向代理服务,源机房的数据收发模块,目标机房的数据收发模块,Kafka发布订阅消息系统集群,数据写库模块,其中:
增量数据解析模块,可以模拟Mysql的master-slave(主从复制)协议,伪装自己为Mysql slave(从),向Mysql master(主)发送同步数据请求。
在发送同步数据请求前,可以首先获取上一次解析的Binlogfilename更新日志文件名和Position位置信息,并指定需要同步的Binlogfilename更新日志文件名和Position位置信息。
Mysql master(主)收到增量数据解析模块发送的同步数据请求后,根据同步数据请求中的Binlogfilename更新日志文件名和Position位置信息,获取对应的Binlogfilename更新日志文件名和Position位置的数据库、表的更新日志,将该Binlog更新日志文件通过更新数据确定模块,推送给增量数据解析模块。
增量数据解析模块可以对Binlog更新日志文件进行处理,例如,通过协议解析处理和过滤库、表数据处理获得同步数据,对同步数据补充标识信息处理等。
其中,标识信息可以包括:Nodeid节点ID,Checkid当前数据编号,和Nextcheckid下一数据编号,Topicid主题ID,Topicname主题名,当前解析文件的Binlogfilename更新日志文件名,Position位置信息等。
增量数据解析模块还可以将同步数据和标识信息打包,例如,打包成Xml(可扩展标记语言)文本,并将打包后的文本进行加密、压缩处理,通过Http协议发送给Nginx反向代理服务。
Nginx反向代理服务根据源机房的数据收发模块的路由配置将消息发送给目标机房的数据收发模块。
目标机房的数据收发模块接收消息后,解析出Topicid主题ID,根据Topicid主题ID确定对应的目标消息Topic主题,根据目标消息Topic主题将同步数据写入到kafka集群的对应消息Topic主题中。
其中,Kafka集群作为分布式消息队列,保证数据完整性、同一topic的数据时序性,等待消费者消费数据。
数据写库模块作为消费者,订阅消息Topic主题,从Kafka集群接收订阅的Topic主题的同步数据,解压解密该同步数据,对同步数据进行校验后,将同步数据写入到对应的DB数据库中。
如图2所示,当同步数据校验失败时,数据写库模块生成check failed数据校验失败消息,并将该消息返回至源机房的更新数据确定模块。
源机房的增量数据解析模块可以从更新数据确定模块定时获取check failed数据校验失败消息,并重新校正发送的同步数据。
参照图3,示出了本发明的一种跨机房数据同步方法实施例一的步骤流程图,所述方法应用于目标机房,所述目标机房与源机房通信连接,所述源机房用于向所述目标机房发布数据消息,所述数据消息包括当前数据编号和下一数据编号,具体可以包括如下步骤:
步骤S301,接收所述源机房发布的第一数据消息;
在本发明实施例中,源机房和目标机房可以是部署在不同地区的机房,源机房的数据可以同步到目标机房。
其中,所述第一数据消息可以包括:源机房需要同步到目标机房的第一数据、第一数据消息的当前数据编号和第一数据消息的下一数据编号。
在本发明实施例中,源机房的增量数据解析模块可以模拟Mysql的master-slave(主从复制)协议,伪装自己为Mysql slave(从),向Mysql master(主)发送同步数据请求。
在具体实现中,在发送同步数据请求前,可以首先获取上一次解析的binlogfilename更新日志文件名和position位置信息,并指定本次需要同步的binlogfilename更新日志文件名和position位置信息。
Mysql master(主)收到增量数据解析模块发送的同步数据请求后,根据同步数据请求中的binlogfilename更新日志文件名和position位置信息,获取对应位置的数据库、表的更新日志。
在具体实现中,可以通过在源机房数据库注册监听器,监听源机房数据库的变更。其中,源机房数据库的变更可以为插入事件Insert、更新事件Update、删除事件Delete等至少一种事件的触发。
当源机房数据库发生Insert、Update或Delete事件时,会生成更新日志文件,并在本地存储该更新日志文件。
当有binlog更新日志文件后,将binlog更新日志文件推送给增量数据解析模块。
增量数据解析模块可以对binlog更新日志文件进行处理,例如,通过协议解析处理和过滤库、表数据处理获得同步数据,对同步数据补充标识信息处理等。
其中,标识信息可以包括:Nodeid节点ID,Checkid当前数据编号,和Nextcheckid下一数据编号,Topicid主题ID,Topicname主题名,当前解析文件的binlogfilename更新日志文件名,position位置信息等。
需要说明的是,Checkid当前数据编号,和Nextcheckid下一数据编号可以根据上一次同步数据的数据编号确定。具体的,可以预设算法规则,每次同步数据的Checkid当前数据编号向后取。
比如,预设算法规则是i=i+5,则每次向后增加5,即若上一次同步数据的Checkid是35,则本次同步数据的Checkid是40;再比如,预设算法规则是i=i+1,则每次向后增加1,即若上一次同步数据的Checkid是35,则本次同步数据的Checkid是36。
Nextcheckid下一数据编号可以根据预设算法规则确定,例如,预设算法规则是i=i+1,若同步数据的Checkid是36,则本次同步数据的Nextcheckid是37。
增量数据解析模块在将同步数据发送到目标机房之前,还可以将同步数据和标识信息打包,例如,打包成xml(可扩展标记语言)文本,并将打包后的文本进行加密、压缩处理。
步骤S302,获取前一次接收的第二数据消息的下一数据编号;
其中,所述第二数据消息可以包括前一次源机房同步到目标机房的第二数据、第二数据消息的Checkid当前数据编号和第二数据消息的Nextcheckid下一数据编号。
步骤S303,判断所述第一数据消息的当前数据编号是否与所述第二数据消息的下一数据编号匹配;
在本发明实施例中,在进行跨机房数据同步时,对同步数据添加了Checkid当前数据编号和Nextcheckid下一数据编号,因此,若接收的第一数据没有出错,则第一数据消息的Checkid当前数据编号与第二数据消息的Nextcheckid下一数据编号应当匹配。
因此,可以通过判断第一数据消息的Checkid当前数据编号是否与第二数据消息的Nextcheckid下一数据编号匹配,来对第一数据进行校验。
步骤S304,若所述第一数据消息的当前数据编号大于所述第二数据消息的下一数据编号,则生成数据校验失败消息;
步骤S305,将所述数据校验失败消息返回至所述源机房。
在本发明实施例中,若所述第一数据消息的当前数据编号大于所述第二数据消息的下一数据编号,则生成数据校验失败消息,则判定源机房传输的同步数据存在数据丢失,生成check failed数据校验失败消息,并将check failed数据校验失败消息返回至源机房。
若所述第一数据消息的当前数据编号小于所述第二数据消息的下一数据编号,则判定时多余的数据包,丢弃所述第一数据消息的第一数据
若第一数据消息的Checkid当前数据编号与第二数据消息的Nextcheckid下一数据编号匹配,则第一数据没有出错,可以将第一数据写入目标机房的数据库。
在本发明实施例中,通过接收源机房发布的第一数据消息,获取前一次接收的第二数据消息的下一数据编号,进一步判断第一数据消息的当前数据编号是否与第二数据消息的下一数据编号匹配,若第一数据消息的当前数据编号与第二数据消息的下一数据编号不匹配,则生成数据校验失败消息,并将该数据校验失败消息返回至源机房,通过对源机房传输到目标机房的同步数据添加编号,目标机房根据上一次接收的数据消息的下一数据编号,对本次接收的数据消息的当前数据编号进行校验,从而能够及时校验接收的同步数据是否异常,提高跨机房数据同步的可靠性。
参照图4,示出了本发明的一种跨机房数据同步方法实施例二的步骤流程图,所述方法应用于目标机房,所述目标机房与源机房通信连接,所述源机房用于向所述目标机房发布数据消息,所述数据消息包括当前数据编号和下一数据编号,具体可以包括如下步骤:
步骤S401,接收所述源机房发布的针对预设消息主题的第一数据消息;
其中,所述第一数据消息可以包括:源机房需要同步到目标机房的第一数据、Nodeid节点ID、第一数据消息的Checkid当前数据编号和第一数据消息的Nextcheckid下一数据编号。
在本发明实施例中,源机房通过增量数据解析模块获取需要同步到目标机房的第一数据。
由于,源机房中可能存在多个数据库需要同步,因此,源机房可以部署多个增量数据解析模块,每个增量数据解析模块负责其中的一个或多个数据库的同步。为了区分不同增量数据解析模块,可以对每一个增量数据解析模块添加标识。
在本发明实施例中,可以用Nodeid节点ID唯一标识增量数据解析模块。
目标机房接收到源机房发送的同步数据后,可以将其写入kafka集群消息队列,等待目标机房的数据接收模块消费消息队列中的数据。
目标机房的消息队列中可以具有多个Topic主题,不同的Topic主题存储不同增量数据解析模块发布得数据消息。
因此,可以根据增量数据解析模块的Nodeid节点ID确定其对应的Topic主题。
由于,同一增量数据解析模块的数据消息的Checkid与Nextcheckid是根据预设算法规则确定的,因此,在预设消息Topic主题上的数据消息的Checkid与Nextcheckid应该是连续的,在接收到针对预设消息topic主题上的数据消息时,可以通过获取该预设消息Topic主题上的前一次数据消息的Nextcheckid来判断数据是否异常。
步骤S402,获取前一次接收的针对所述预设消息主题的第二数据消息;
步骤S403,提取所述第二数据消息的下一数据编号;
在本发明实施例中,所述第二数据消息可以包括:源机房前一次同步到目标机房的第二数据、第二数据消息的Checkid当前数据编号和第二数据消息的Nextcheckid下一数据编号。
当接收到源机房发布的针对预设消息主题的第一数据消息时,可以将预设消息主题作为目标消息主题,从目标消息主题上获取前一次接收的第二数据消息,并进一步提取该第二数据消息的Nextcheckid下一数据编号,以通过该第二数据消息的Nextcheckid下一数据编号对第一数据进行校验。
步骤S404,判断所述第一数据消息的当前数据编号是否与所述第二数据消息的下一数据编号匹配;
在本发明实施例中,在预设消息Topic主题上的数据消息的Checkid与Nextcheckid应当是连续的,因此,若接收的针对预设消息主题的第一数据没有出错,则第一数据消息的Checkid当前数据编号与前一次接收的针对该预设消息主题的第二数据消息的Nextcheckid下一数据编号应当匹配。
可以通过判断第一数据消息的Checkid当前数据编号是否与第二数据消息的Nextcheckid下一数据编号匹配,来对第一数据进行校验。
当第一数据消息的Checkid当前数据编号与第二数据消息的Nextcheckid下一数据编号匹配时,则认为第一数据消息中的第一数据没有出错,可以将该第一数据写入目标机房的数据库。
例如,第一数据消息的Checkid当前数据编号为36,第二数据消息的Nextcheckid下一数据编号为36,则第一数据消息的Checkid当前数据编号与第二数据消息的Nextcheckid下一数据编号匹配,第一数据消息中的第一数据没有出错。
步骤S405,若所述第一数据消息的当前数据编号小于所述第二数据消息的下一数据编号,则丢弃所述第一数据消息;
在本发明实施例中,如果第一数据消息的Checkid当前数据编号小于第二数据消息的Nextcheckid下一数据编号,则认为第一数据消息中的第一数据是多余的(重复的)同步数据,丢弃该第一数据消息,不将其写入目标机房的数据库,避免目标机房数据库中的数据重复。
例如,第一数据消息的Checkid当前数据编号为36,第二数据消息的Nextcheckid下一数据编号为38,第一数据消息的Checkid当前数据编号小于第二数据消息的Nextcheckid下一数据编号,第一数据消息中的第一数据是多余的(重复的)同步数据,可以丢弃该第一数据消息的第一数据。
步骤S406,若所述第一数据消息的当前数据编号大于所述第二数据消息的下一数据编号,则将所述第二数据消息的下一数据编号作为当前数据编号;
步骤S407,根据所述当前数据编号,生成所述数据校验失败消息。
步骤S408,将所述数据校验失败消息返回至所述源机房。
在本发明实施例中,如果第一数据消息的Checkid当前数据编号大于第二数据消息的Nextcheckid下一数据编号,则认为目标机房接收的同步数据存在丢包(数据丢失),因此,生成check failed数据校验失败消息返回至源机房,以通知源机房重新发送同步数据到目标机房。
例如,第一数据消息的Checkid当前数据编号为36,第二数据消息的Nextcheckid下一数据编号为34,第一数据消息的Checkid当前数据编号大于第二数据消息的Nextcheckid下一数据编号,则目标机房接收的同步数据存在丢包(数据丢失)。
在本发明实施例中,当判定目标机房接收的同步数据存在丢包(数据丢失)时,则获取前一次接收的第二数据的标识信息,根据该标识信息,生成check failed数据校验失败消息。
其中,标识信息可以包括:Nodeid节点ID,Checkid当前数据编号,和Nextcheckid下一数据编号,Topicid主题ID,Topicname主题名,当前解析文件的binlogfilename更新日志文件名,position位置信息等。
在本发明实施例中,目标机房校验第一数据失败后,还可以生成错误日志,并丢弃后续此预设消息Topic主题上的数据,直至获取到匹配的Checkid的同步数据。其中,错误日志可以包括:当前错误的Kafka偏移地址信息、错误的Checkid信息等。
同时,目标机房还可以通过调用数据库提供的指定接口,向管理员发送邮件或微信告警通知,以便管理员监控此次数据同步失败的问题是否解决,必要是人工介入处理。
在本发明实施例中,数据写库模块在发送了check failed数据校验失败消息后,保证10分钟内没有接收到正确的Checkid的同步数据,则重新发送check failed数据校验失败消息,直至成功。
当数据写库模块出现解析数据失败等异常时,也同样走check失败的流程上报check failed数据校验失败消息,等待重传恢复。
数据写库模块可以实时持久化存储当前每个Topicid主题ID,Topicname主题名,kafka偏移量,Checkid当前数据编号,和Nextcheckid下一数据编号等信息。
当数据写库模块关闭后,可以在该数据写库模块重新启动时加载存储的信息,继续处理。从而进一步提高跨机房数据同步的可靠性
源机房的更新数据确定模块接收到check failed数据校验失败消息后,将Nodeid节点ID,Topicid主题ID,Topicname主题名,Checkid当前数据编号,Nextcheckid下一数据编号,当前解析文件的binlogfilename更新日志文件名,position位置信息等信息,存储到一个指定的mysql数据表中,表主键可以设置为nodeid&topicname。
增量数据解析模块通过rpc(Remote Procedure Call,远程过程调用协议)消息,定时向更新数据确定模块发送获取check failed数据校验失败消息的请求,更新数据确定模块从该指定的mysql数据表中获取信息后返回至增量数据解析模块。
增量数据解析模块根据check failed数据校验失败消息的Nodeid节点ID、Topicid主题ID、Topicname主题名、Checkid当前数据编号、和Nextcheckid下一数据编号等信息、当前解析文件的binlogfilename更新日志文件名、position位置信息,终止此预设消息Topic主题上的当前同步过程,重新从失败的位置开始同步数据。
在本发明实施例中,通过接收源机房发布的第一数据消息,获取前一次接收的第二数据消息的下一数据编号,进一步判断第一数据消息的当前数据编号是否与第二数据消息的下一数据编号匹配,若第一数据消息的当前数据编号与第二数据消息的下一数据编号不匹配,则生成数据校验失败消息,并将该数据校验失败消息返回至源机房,通过对源机房传输到目标机房的同步数据添加编号,目标机房根据上一次接收的数据消息的下一数据编号,对本次接收的数据消息的当前数据编号进行校验,从而能够及时校验接收的同步数据是否异常,提高跨机房数据同步的可靠性。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图5,示出了本发明的一种跨机房数据同步装置实施例的结构框图,应用于目标机房,所述目标机房与源机房通信连接,所述源机房用于向所述目标机房发布数据消息,所述数据消息包括当前数据编号和下一数据编号,具体可以包括如下模块:
第一数据消息接收模块501,用于接收所述源机房发布的第一数据消息;
下一数据编号获取模块502,用于获取前一次接收的第二数据消息的下一数据编号;
判断模块503,用于判断所述第一数据消息的当前数据编号是否与所述第二数据消息的下一数据编号匹配;
数据校验失败消息生成模块504,用于若所述第一数据消息的当前数据编号大于所述第二数据消息的下一数据编号,则生成数据校验失败消息;
数据校验失败消息返回模块505,用于将所述数据校验失败消息返回至所述源机房。
在本发明的一种优选实施例中,所述第一数据消息接收模块501可以包括如下子模块:
第一数据消息接收子模块,用于接收所述源机房发布的针对预设消息主题的第一数据消息。
在本发明的一种优选实施例中,所述下一数据编号获取模块502可以包括如下子模块:
第二数据消息获取子模块,用于获取前一次接收的针对所述预设消息主题的第二数据消息;
下一数据编号提取子模块,用于提取所述第二数据消息的下一数据编号。
在本发明的一种优选实施例中,所述数据校验失败消息生成模块504可以包括子模块:
当前数据编号确定子模块,用于将所述第二数据消息的下一数据编号作为当前数据编号;
数据校验失败消息生成子模块,用于根据所述当前数据编号,生成所述数据校验失败消息。
在本发明的一种优选实施例中,所述装置还可以包括如下子模块:
第一数据丢弃子模块,用于若所述第一数据消息的当前数据编号小于所述第二数据消息的下一数据编号,则丢弃所述第一数据消息的第一数据。
在本发明实施例中,通过接收源机房发布的第一数据消息,获取前一次接收的第二数据消息的下一数据编号,进一步判断第一数据消息的当前数据编号是否与第二数据消息的下一数据编号匹配,若第一数据消息的当前数据编号与第二数据消息的下一数据编号不匹配,则生成数据校验失败消息,并将该数据校验失败消息返回至源机房,通过对源机房传输到目标机房的同步数据添加编号,目标机房根据上一次接收的数据消息的下一数据编号,对本次接收的数据消息的当前数据编号进行校验,从而能够及时校验接收的同步数据是否异常,提高跨机房数据同步的可靠性。
对于跨机房数据同步装置实施例而言,由于其与跨机房数据同步方法实施例基本相似,所以描述的比较简单,相关之处参见跨机房数据同步方法实施例的部分说明即可。
本发明实施例还提供了一种装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行本发明实施例所述的跨机房数据同步方法。
本发明实施例还提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行本发明实施例所述的跨机房数据同步方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种跨机房数据同步方法和一种跨机房数据同步装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种跨机房数据同步方法,其特征在于,应用于目标机房,所述目标机房与源机房通信连接,所述源机房用于向所述目标机房发布数据消息,所述数据消息包括当前数据编号和下一数据编号,所述方法包括:
接收所述源机房发布的第一数据消息;
获取前一次接收的第二数据消息的下一数据编号;
判断所述第一数据消息的当前数据编号是否与所述第二数据消息的下一数据编号匹配;
若所述第一数据消息的当前数据编号大于所述第二数据消息的下一数据编号,则生成数据校验失败消息;
将所述数据校验失败消息返回至所述源机房。
2.根据权利要求1所述的方法,其特征在于,所述接收所述源机房发布的第一数据消息,包括:
接收所述源机房发布的针对预设消息主题的第一数据消息。
3.根据权利要求2所述的方法,其特征在于,所述获取前一次接收的第二数据消息的下一数据编号,包括:
获取前一次接收的针对所述预设消息主题的第二数据消息;
提取所述第二数据消息的下一数据编号。
4.根据权利要求3所述的方法,其特征在于,所述生成数据校验失败消息,包括:
将所述第二数据消息的下一数据编号作为当前数据编号;
根据所述当前数据编号,生成所述数据校验失败消息。
5.根据权利要求4所述的方法,其特征在于,还包括:
若所述第一数据消息的当前数据编号小于所述第二数据消息的下一数据编号,则丢弃所述第一数据消息的第一数据。
6.一种跨机房数据同步装置,其特征在于,应用于目标机房,所述目标机房与源机房通信连接,所述源机房用于向所述目标机房发布数据消息,所述数据消息包括当前数据编号和下一数据编号,所述装置包括:
第一数据消息接收模块,用于接收所述源机房发布的第一数据消息;
下一数据编号获取模块,用于获取前一次接收的第二数据消息的下一数据编号;
判断模块,用于判断所述第一数据消息的当前数据编号是否与所述第二数据消息的下一数据编号匹配;
数据校验失败消息生成模块,用于若所述第一数据消息的当前数据编号大于所述第二数据消息的下一数据编号,则生成数据校验失败消息,则生成数据校验失败消息;
数据校验失败消息返回模块,用于将所述数据校验失败消息返回至所述源机房。
7.根据权利要求6所述的装置,其特征在于,所述第一数据消息接收模块包括:
第一数据消息接收子模块,用于接收所述源机房发布的针对预设消息主题的第一数据消息。
8.根据权利要求7所述的装置,其特征在于,所述下一数据编号获取模块包括:
第二数据消息获取子模块,用于获取前一次接收的针对所述预设消息主题的第二数据消息;
下一数据编号提取子模块,用于提取所述第二数据消息的下一数据编号。
9.根据权利要求8所述的装置,其特征在于,所述数据校验失败消息生成模块包括:
当前数据编号确定单元,用于将所述第二数据消息的下一数据编号作为当前数据编号;
数据校验失败消息生成单元,用于根据所述当前数据编号,生成所述数据校验失败消息。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第一数据消息丢弃模块,用于若所述第一数据消息的当前数据编号小于所述第二数据消息的下一数据编号,则丢弃所述第一数据消息。
11.一种装置,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如权利要求1-5所述的一个或多个的跨机房数据同步方法。
12.一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-5所述的一个或多个的跨机房数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811420567.9A CN109714392A (zh) | 2018-11-26 | 2018-11-26 | 一种跨机房数据同步方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811420567.9A CN109714392A (zh) | 2018-11-26 | 2018-11-26 | 一种跨机房数据同步方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109714392A true CN109714392A (zh) | 2019-05-03 |
Family
ID=66255115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811420567.9A Pending CN109714392A (zh) | 2018-11-26 | 2018-11-26 | 一种跨机房数据同步方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109714392A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309231A (zh) * | 2019-07-12 | 2019-10-08 | 焦点科技股份有限公司 | 一种跨机房的数据同步方法及系统 |
CN110311750A (zh) * | 2019-04-24 | 2019-10-08 | 网宿科技股份有限公司 | 一种数据传输方法、系统及服务器 |
CN110401721A (zh) * | 2019-08-06 | 2019-11-01 | 北京达佳互联信息技术有限公司 | 内容数据分发的方法、装置及系统 |
CN111177254A (zh) * | 2019-12-05 | 2020-05-19 | 武汉达梦数据库有限公司 | 一种异构关系型数据库之间数据同步的方法和装置 |
CN115023929A (zh) * | 2020-05-06 | 2022-09-06 | 深圳市欢太科技有限公司 | 数据同步方法、装置、系统、电子设备及存储介质 |
CN117520460A (zh) * | 2024-01-05 | 2024-02-06 | 成都安世赛斯特软件技术有限公司 | 一种自定义编号生成管理方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102368700A (zh) * | 2011-10-25 | 2012-03-07 | 曙光信息产业(北京)有限公司 | 一种分布式系统中消息的传递方法 |
CN103778136A (zh) * | 2012-10-19 | 2014-05-07 | 阿里巴巴集团控股有限公司 | 一种跨机房数据库同步方法及系统 |
CN105912628A (zh) * | 2016-04-07 | 2016-08-31 | 北京奇虎科技有限公司 | 主从数据库的同步方法及装置 |
CN106790378A (zh) * | 2016-11-11 | 2017-05-31 | 北京奇虎科技有限公司 | 设备间的数据全同步方法、装置及系统 |
-
2018
- 2018-11-26 CN CN201811420567.9A patent/CN109714392A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102368700A (zh) * | 2011-10-25 | 2012-03-07 | 曙光信息产业(北京)有限公司 | 一种分布式系统中消息的传递方法 |
CN103778136A (zh) * | 2012-10-19 | 2014-05-07 | 阿里巴巴集团控股有限公司 | 一种跨机房数据库同步方法及系统 |
CN105912628A (zh) * | 2016-04-07 | 2016-08-31 | 北京奇虎科技有限公司 | 主从数据库的同步方法及装置 |
CN106790378A (zh) * | 2016-11-11 | 2017-05-31 | 北京奇虎科技有限公司 | 设备间的数据全同步方法、装置及系统 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110311750A (zh) * | 2019-04-24 | 2019-10-08 | 网宿科技股份有限公司 | 一种数据传输方法、系统及服务器 |
CN110311750B (zh) * | 2019-04-24 | 2022-02-22 | 网宿科技股份有限公司 | 一种数据传输方法、系统及服务器 |
CN110309231A (zh) * | 2019-07-12 | 2019-10-08 | 焦点科技股份有限公司 | 一种跨机房的数据同步方法及系统 |
CN110309231B (zh) * | 2019-07-12 | 2022-07-29 | 焦点科技股份有限公司 | 一种跨机房的数据同步方法及系统 |
CN110401721A (zh) * | 2019-08-06 | 2019-11-01 | 北京达佳互联信息技术有限公司 | 内容数据分发的方法、装置及系统 |
CN110401721B (zh) * | 2019-08-06 | 2022-07-08 | 北京达佳互联信息技术有限公司 | 内容数据分发的方法、装置及系统 |
CN111177254A (zh) * | 2019-12-05 | 2020-05-19 | 武汉达梦数据库有限公司 | 一种异构关系型数据库之间数据同步的方法和装置 |
CN111177254B (zh) * | 2019-12-05 | 2021-08-17 | 武汉达梦数据库股份有限公司 | 一种异构关系型数据库之间数据同步的方法和装置 |
CN115023929A (zh) * | 2020-05-06 | 2022-09-06 | 深圳市欢太科技有限公司 | 数据同步方法、装置、系统、电子设备及存储介质 |
CN117520460A (zh) * | 2024-01-05 | 2024-02-06 | 成都安世赛斯特软件技术有限公司 | 一种自定义编号生成管理方法及系统 |
CN117520460B (zh) * | 2024-01-05 | 2024-04-02 | 成都安世赛斯特软件技术有限公司 | 一种自定义编号生成管理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109714392A (zh) | 一种跨机房数据同步方法和装置 | |
US10764369B2 (en) | Data storage method and server applicable to distributed server cluster | |
US7624155B1 (en) | Data replication facility for distributed computing environments | |
WO2010022146A1 (en) | Method and systems for synchronization of process control servers | |
US6910150B2 (en) | System and method for state preservation in a stretch cluster | |
CN110601903B (zh) | 一种基于消息队列中间件的数据处理方法及装置 | |
CN105574109A (zh) | 一种数据库同步方法、同步设备及系统 | |
CN113704354A (zh) | 一种数据同步方法及装置、计算机设备、存储介质 | |
CN111259072A (zh) | 数据同步方法、装置、电子设备和计算机可读存储介质 | |
US11372727B2 (en) | Method, device, and computer-readable storage medium for managing storage system | |
CN112486707A (zh) | 基于Redis的消息异步消费方法及装置 | |
CN115396296A (zh) | 业务处理方法、装置、电子设备及计算机可读存储介质 | |
WO2012171346A1 (zh) | 电话号码映射域名解析系统(enum-dns)及其容灾方法 | |
CN111241200B (zh) | 基于SQLite数据库的主备同步处理方法及装置 | |
CN113190620A (zh) | Redis集群之间数据的同步方法、装置、设备及存储介质 | |
CN111460029B (zh) | 数据同步方法和装置 | |
CN104506353A (zh) | 一种鉴证管理方法、设备及系统 | |
CN111770145A (zh) | 一种基于日志解析的单向网络双边数据同步系统及方法 | |
CN113515574B (zh) | 一种数据同步方法及装置 | |
CN113032477B (zh) | 基于gtid的长距离数据同步方法、装置及计算设备 | |
CN114301763A (zh) | 分布式集群故障的处理方法及系统、电子设备及存储介质 | |
CN113051342B (zh) | 一种轻量化双机切换的方法及系统 | |
KR101748913B1 (ko) | 분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템 | |
KR100671789B1 (ko) | 유무선 분산 환경하의 공간 데이터간의 데이터 전송과데이터 동기화 방법 및 그러한 방법의 실행을 위한 분산공간 데이터 동기화 시스템 | |
Castro-Company et al. | CLOB: Communication support for efficient replicated database recovery |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190503 |