CN112732728A - 一种数据同步方法和系统 - Google Patents
一种数据同步方法和系统 Download PDFInfo
- Publication number
- CN112732728A CN112732728A CN201911030607.3A CN201911030607A CN112732728A CN 112732728 A CN112732728 A CN 112732728A CN 201911030607 A CN201911030607 A CN 201911030607A CN 112732728 A CN112732728 A CN 112732728A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- operated
- message
- new value
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
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)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据同步方法和系统,涉及计算机技术领域。该方法的一种具体实施方式包括:接收数据操作请求,所述数据操作请求指示了待操作数据、所述待操作数据的新值;根据所述数据操作请求,在第一数据库中对所述待操作数据进行操作,在所述第一数据库中操作完所述待操作数据后,生成所述第一数据库的日志消息,所述日志消息指示了在所述第一数据库中操作的所述待操作数据、所述待操作数据的新值;获取所述第一数据库的日志消息,根据所述第一数据库的日志消息,指示第二数据库对所述待操作数据进行操作。该实施方式解耦了数据库的同步操作,保证了数据库存储数据的一致性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据同步方法和系统。
背景技术
随着业务的不断发展,数据量也在不断增加,往往需要对数据库进行分库分表,来降低单个数据库的数据量,进而提高业务系统性能。同时,为保证数据的可靠性及跨库数据处理的便捷性,通常需要对数据库中数据进行冗余或备份,并保证冗余数据的一致性。
现有的保证冗余数据一致性的方法是,在根据用户的数据操作请求在数据库中对数据进行增加、删除以及更新等操作的情况下,在冗余数据库中同步进行数据操作,直至数据库与冗余数据库中数据一致。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:需要同步完成数据库及冗余数据库中数据操作,资源占比大、耗时久;在对数据库中数据操作的情况下出现宕机或重启时,无法对冗余数据库中数据进行同步操作处理,则会出现数据不一致的情况。
发明内容
有鉴于此,本发明提供一种数据同步方法和系统,能够解耦不同数据库数据的同步操作,资源占比小、耗时短,避免了因宕机或重启等造成的冗余数据的不一致。
为实现上述目的,根据本发明的一个方面,提供了一种数据同步方法,包括:
接收数据操作请求,所述数据操作请求指示了待操作数据、所述待操作数据的新值;
根据所述数据操作请求,在第一数据库中对所述待操作数据进行操作,在所述第一数据库中操作完所述待操作数据后,生成所述第一数据库的日志消息,所述日志消息指示了在所述第一数据库中操作的所述待操作数据、所述待操作数据的新值;
获取所述第一数据库的日志消息,根据所述第一数据库的日志消息,指示第二数据库对所述待操作数据进行操作。
可选地,所述根据所述第一数据库的日志消息,指示第二数据库对所述待操作数据进行操作还包括:
根据所获取的第一数据库的日志消息,生成第一数据操作消息并发送至消息队列,所述第一数据操作消息指示了所述待操作数据、所述待操作数据的新值;
根据所述第一数据操作消息,指示所述第二数据库对所述待操作数据进行操作;
在所述第二数据库中操作完所述待操作数据后,生成第二数据操作消息并发送至所述消息队列,所述第二数据操作消息指示了所述待操作数据、所述待操作数据的新值。
可选地,还包括:相对应地存储所述第一数据库的所述待操作数据、所述待操作数据的新值,存储所述待操作数据的同步状态,并将所述同步状态记录为未同步;
相对应地存储所述第二数据库的所述待操作数据、所述待操作数据的新值,并更新所述待操作数据的同步状态为已同步。
可选地,还包括:在记录了所述待操作数据的同步状态为未同步的情况下,启动第一计时器,以累计所述同步状态为未同步的持续时间:
在所述持续时间累计至所述第一计时器对应的阈值时间时所述同步状态依然为未同步的情况下,启动第二计时器;
在所述第一计时器对应的阈值时间内所述同步状态被记录为已同步的情况下,判断所存储的对于所述第一数据库的所述待操作数据的新值,与所存储的对于所述第二数据库的所述待操作数据的新值是否一致,若不一致,启动所述第二计时器;
在所述第二计时器所对应的阈值时间内,指示所述第二数据库尝试对所述待操作数据进行操作。
可选地,还包括:在所述持续时间累计至所述第一计时器对应的阈值时间时所述同步状态依然为未同步的情况下,或者在所存储的对于所述第一数据库的所述待操作数据的新值与所存储的对于所述第二数据库的所述待操作数据的新值不一致的情况下,发送异常警告,以提示所述第一数据库与所述第二数据库的同步存在异常。
可选地,根据所获取的第一数据库的日志消息,生成符合所述第二数据库消息格式的所述第一数据操作消息,用以根据所述第一数据操作消息,指示所述第二数据库对所述待操作数据进行操作。
可选地,使用非关系型数据库或关系型数据库存储所述待操作数据、所述待操作数据的新值以及所述待操作数据的同步状态。
为实现上述目的,根据本发明的另一个方面,提供了一种数据同步系统,包括:第一数据库、第二数据库、数据同步装置;其中,
所述第一数据库,用于接收数据操作请求,所述数据操作请求指示了待操作数据、所述待操作数据的新值;根据所述数据操作请求,在第一数据库中对所述待操作数据进行操作,在所述第一数据库中操作完所述待操作数据后,生成所述第一数据库的日志消息,所述日志消息指示了在所述第一数据库中操作的所述待操作数据、所述待操作数据的新值;
所述数据同步装置,用于获取所述第一数据库的日志消息,根据所述第一数据库的日志消息,指示所述第二数据库对所述待操作数据进行操作;
所述第二数据库,用于根据所述数据同步装置的指示对所述待操作数据进行操作。
可选地,还包括:消息队列;所述数据同步装置,还用于,
根据获取的第一数据库的日志消息,生成第一数据操作消息并发送至所述消息队列,所述第一数据操作消息指示了所述待操作数据、所述待操作数据的新值;
根据所述第一数据操作消息,指示所述第二数据库对所述待操作数据进行操作;
在所述第二数据库中操作完所述待操作数据后,生成第二数据操作消息并发送至所述消息队列,所述第二数据操作消息指示了所述待操作数据、所述待操作数据的新值。
可选地,还包括:数据存储装置;所述数据存储装置,用于,
相对应地存储所述待操作数据、所述待操作数据的新值,存储所述待操作数据的同步状态,并将所述同步状态记录为未同步;
相对应地存储所述待操作数据、所述待操作数据的新值,并更新所述同步状态为已同步。
可选地,所述数据同步装置,还用于,在记录了所述待操作数据的同步状态为未同步的情况下,启动第一计时器,已累计所述同步状态为未同步的持续时间:
在所述持续时间累计至所述第一计时器对应的阈值时间时所述同步状态依然为未同步的情况下,启动第二计时器;
在所述第一计时器对应的阈值时间内所述同步状态被记录为已同步的情况下,判断所存储的对于所述第一数据库的所述待操作数据的新值,与存储的对于所述第二数据库的所述待操作数据的新值是否一致,若不一致,启动所述第二计时器;
在所述第二计时器所对应的阈值时间内,指示所述第二数据库尝试对所述待操作数据进行操作。
可选地,还包括:异常警告装置;所述异常警告装置,用于
在所述持续时间累计值所述第一计时器对应的阈值时间时所述同步状态依然为未同步的情况下,或者在所存储的对于所述第一数据库的所述待操作数据的新值与所存储的对于所述第二数据库的所述待操作数据的新值不一致的情况下,发送异常警告,以提示所述第一数据库与所述第二数据库的同步存在异常。
可选地,所述数据同步装置,还用于,根据所获取的第一数据库的日志消息,生成符合所述第二数据库消息格式的所述第一数据操作消息,用以根据所述第一数据操作消息,指示所述第二数据库对所述待操作数据进行操作。
可选地,所述数据存储装置,使用非关系型数据库或关系型数据库存储所述待操作数据、所述待操作数据的新值以及所述待操作数据的同步状态。
为实现上述目的,根据本发明的再一个方面,提供了一种用于实现数据同步的服务器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的数据同步方法中任一所述方法。
为实现上述目的,根据本发明的又一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的数据同步方法中任一所述方法。
上述发明中具有如下优点或有益效果:通过获取第一数据库的日志消息,并根据日志消息指示第二数据库对待操作数据进行操作,即实现了第一数据库与第二数据库的数据一致性,又解耦了第一数据库与第二数据库的同步操作,缩短了用户等待操作请求的反馈时间。除此之外,通过对待操作数据的同步状态的不断更新及判断,并在不同状态为未同步或第一数据库、第二数据库数据不一致的情况下,不断尝试对第二数据库中的数据进行操作,避免了因重启、宕机等造成的第一数据库、第二数据库数据不一致。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的数据同步方法的主要流程的示意图;
图2是根据本发明实施例的数据一致性验证方法的主要流程的示意图;
图3是根据本发明实施例的数据同步装置的主要模块的示意图;
图4是本发明实施例可以应用于其中的示例性系统架构图;
图5是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的数据同步方法的主要流程示意图,如图1所示,该方法具体可以包括的步骤如下:
步骤S101,接收数据操作请求,所述数据操作请求指示了待操作数据、所述待操作数据的新值。
根据操作类型的不同,操作后数据库中存储的待操作数据的新值不同。具体地,操作类型包括更新(update)操作、插入(insert)操作、删除(delete)操作等。其中,对于更新操作,待操作数据的新值则为实际更新后的待操作数据的值;对于插入操作,插入前,待操作数据的值为空(null),插入后,待操作数据的新值则为插入的值;对于删除操作,删除后待操作数据的新值为空(null)。
步骤S102,根据所述数据操作请求,在第一数据库中对所述待操作数据进行操作,在所述第一数据库中操作完所述待操作数据后,生成所述第一数据库的日志消息,所述日志消息指示了在所述第一数据库中操作的所述待操作数据、所述待操作数据的新。
第一数据库如MYSQL数据库等对其中存储的待操作数据进行插入、删除、更新等操作时,会生成相应的操作日志,即第一数据库的日志消息,进而可以通过解析第一数据库的日志消息获取待操作数据、待操作数据的新值,用以根据获取的待操作数据、待操作数据的新值指示其他需要同步的第二数据库对待操作数据进行相应的操作。
步骤S103,获取所述第一数据库的日志消息,根据所述第一数据库的日志消息,指示第二数据库对所述待操作数据进行操作。
可以理解的是,第一数据库、第二数据库可以为同一类型的数据库,也可以是不同类型的数据库,且数量可以为一个也可以为多个。如第一数据库为MySQL、MariaDB等第二数据库为Sybase、dBASE、Clipper、FoxPro、CouchDB等,由于不同类型数据库能够识别的数据操作命令或者消息格式等不同,为便于根据第一数据库的日志消息进而指示第二数据库进行相应数据操作,需要使用canal等数据同步中间件,对第一数据库日志消息进行格式转换,将第一数据库的日志消息转换为可指示第二数据库进行数据操作的消息格式。由于第二数据库根据第一数据库的日志消息同步对数据进行操作,保证了第一数据库与第二数据库中存储数据的一致性,同时避免了第一数据库、第二数据库同步操作需要的资源占比大、反应时间长的问题,尤其是在数据操作请求数量较大的情况下。除此之外,为提高数据操作请求发送方的体验,缩短根据数据操作请求向发送方反馈数据操作结果的时间,可以在第一数据库完成对待操作数据的操作时,即向数据操作请求发送方反馈数据处理结果。
在一种可选的实施方式中,所述根据所述第一数据库的日志消息,指示第二数据库对所述待操作数据进行操作,还包括:根据所获取的第一数据库的日志消息,生成第一数据操作消息并发送至消息队列,所述第一数据操作消息指示了所述待操作数据、所述待操作数据的新值;根据所述第一数据操作消息,指示所述第二数据库对所述待操作数据进行操作;在所述第二数据库中操作完所述待操作数据后,生成第二数据操作消息并发送至所述消息队列,所述第二数据操作消息指示了所述待操作数据、所述待操作数据的新值。
在数据同步的过程中,为保证第一数据库、第二数据库存储数据的一致性,需要对第一数据库、第二数据库中数据同步状态的监控,以便在数据不同步的情况下及时进行处理。具体地,由于第一数据库在完成对待操作数据的操作时,会生成相应地日志消息,因而可以在获取到第一数据库日志消息,判定第一数据库已完成对待操作数据的操作时,并生成相应的第一数据操作消息至消息队列,以便消息队列的消费者可根据从消息队列中监听到的与第一数据库相关的消息,判断第一数据库的待操作数据同步状态。与此相类似,第二数据库在在完成对待操作数据的操作时,也会生成相应地日志消息,因而亦可以根据第二数据库的日志消息,生成相应的第二数据操作消息推送至消息队列,以便消息队列的消费者可根据从消息队列中监听到的与第二数据库相关的消息,判断第二数据库的待操作同步状态,即同步更新第一数据库的数据同步状态。
可以理解的是,可使用的消息队列包括但不限于:ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ。在实际的执行过程中,为便于识别来源于第一数据库的第一数据操作消息,及来源于第二数据库的第二数据操作消息,可以分主题(topic)存储第一数据操作消息、第二数据操作消息。如,以Kafka消息队列为例进行说明,可将第一数据操作消息推送至topic1中,而将第二数据操作消息推送至topic2中。
更进一步地,上述消息队列的消费者可以根据从消息队列中监听到的与第一数据库相关的第一数据操作消息,判断第一数据库已完成对待操作数据的操作,在其他存储区域中相对应地存储所述第一数据库的所述待操作数据、所述待操作数据的新值,存储所述待操作数据的同步状态,并将所述同步状态记录为未同步;在根据从消息队列中监听到的与第二数据库相关的第二数据操作消息,判断第二数据库已完成对待操作数据的同步处理,在其他存储区域中相对应地存储所述第二数据库的所述待操作数据、所述待操作数据的新值,并更新所述待操作数据的同步状态为已同步。在此基础上,可以进一步验证存储于第一数据库中的待操作数据的新值与存储于第二数据库中的待操作数据的新值是否一致,若不一致,则可以根据相对应存储的待操作数据、待操作数据的新值同步更新第二数据库,以保证第一数据库、第二数据库中存储数据的一致性。
值得注意的是,在其他存储区域,使用非关系型数据库或关系型数据库存储所述待操作数据、所述待操作数据的新值以及所述待操作数据的同步状态。如以(key,value)形式进行存储为例进行说明,在根据第一数据操作消息进行存储时,key为待操作数据,value为待操作数据的新值,相应地,另一key为同步状态,value为表示未同步的值(如0、false等);在根据第二数据操作消息进行存储时,key为冗余待操作数据,value为待操作数据的新值。
在一种可选的实施方式中,在记录了所述待操作数据的同步状态为未同步的情况下,启动第一计时器,以累计所述同步状态为未同步的持续时间:在所述持续时间累计至所述第一计时器对应的阈值时间时所述同步状态依然为未同步的情况下,启动第二计时器;在所述第一计时器对应的阈值时间内所述同步状态被记录为已同步的情况下,判断所存储的对于所述第一数据库的所述待操作数据的新值,与所存储的对于所述第二数据库的所述待操作数据的新值是否一致,若不一致,启动所述第二计时器;在所述第二计时器所对应的阈值时间内,指示所述第二数据库尝试对所述待操作数据进行操作。
第一计时器对应的阈值时间、第二计时器的阈值时间,均可以为根据实际需求设定的任意时间,如3秒、5秒等。在持续时间累计至第一计时器对应的阈值时间内,同步状态依然为未同步,则表明第二数据库仍为完成对待操作数据的操作,且第二数据库的数据操作出现异常,无法及时同步,则需要启动第二计时器,也即在第二计时器的阈值时间内,通过获取根据第一数据处理消息相对应存储的待操作数据、待操作数据的新值,指示第二数据库重新进行数据操作,且在第二计时器的阈值时间内不断进行尝试,直至数据操作成功,否则可以通过邮件等发出异常警告。在第一计时器对应的阈值时间内,同步状态已更改为已同步的情况下,则表明第二数据库以完成对待操作数据的处理,在此基础上,则进一步验证第一数据库与第二数据存储数据的一致性,若不一致,则启动第二计时器,即在第二计时器的阈值时间内,通过获取根据第一数据处理消息相对应存储的待操作数据、待操作数据的新值,指示第二数据库重新进行数据操作,直至数据操作成功。如此,在第一数据库出现重启、宕机等问题时,也依然可以保证第一数据库与第二数据库的一致性。
在一种可选的实施方式中,在所述持续时间累计至所述第一计时器对应的阈值时间时所述同步状态依然为未同步的情况下,或者在所存储的对于所述第一数据库的所述待操作数据的新值与所存储的对于所述第二数据库的所述待操作数据的新值不一致的情况下,发送异常警告,以提示所述第一数据库与所述第二数据库的同步存在异常。
基于上述实施例提供的数据同步的方法,通过获取第一数据库的日志消息,并根据日志消息指示第二数据库对待操作数据进行操作,实现了第一数据库与第二数据库的数据一致性,又解耦了第一数据库与第二数据库的同步操作,缩短了用户等待操作请求的反馈时间。除此之外,通过对待操作数据的同步状态的不断更新及判断,并在不同状态为未同步或第一数据库、第二数据库数据不一致的情况下,不断尝试对第二数据库中的数据进行操作,避免了因重启、宕机等造成的第一数据库、第二数据库数据不一致。
参见图2,在上述实施例的基础上,本发明实施例提供了一种数据一致性验证方法,具体包括的步骤如下:
步骤S201,在记录了所述待操作数据的同步状态为未同步的情况下,启动第一计时器,以累计所述同步状态为未同步的持续时间。
步骤S202,判断同步状态为未同步的持续时间是否至第一计时器对应的阈值时间;若持续时间未至阈值时间,则表明同步状态已变更为已同步,即第二数据库已完成对待操作数据的操作,则继续执行下述的步骤S203;若持续时间已至阈值时间,则表明同步状态仍为未同步,即第二数据库未及时完成对待操作数据的操作,则继续执行下述步骤S204。
步骤S203,判断所存储的对于所述第一数据库的所述待操作数据的新值,与所存储的对于所述第二数据库的所述待操作数据的新值是否一致;若一致,则结束操作,若不一致,则继续执行下述步骤S204。
步骤S204,启动所述第二计时器,在所述第二计时器所对应的阈值时间内,指示所述第二数据库尝试对所述待操作数据进行操作。也即也即在第二计时器的阈值时间内,通过获取根据第一数据处理消息相对应存储的待操作数据、待操作数据的新值,指示第二数据库重新进行数据操作,且在第二计时器的阈值时间内不断进行尝试,直至数据操作成功。
步骤S205,发送异常警告,以提示所述第一数据库与所述第二数据库的同步存在异常。也即是说,在第二数据库未能及时同步第一数据库对数据操作的情况下,或者存储于第一数据库的待操作数据的新值与存储于第二数据库的待操作数据的新值不一致的情况下,通过邮件、语音等发送异常警告,以提示相关人员排查数据库同步异常的原因。
参见图3,在上述实施例的基础上,本发明实施例提供了一种数据库同步系统300,包括:第一数据库301、第二数据库302、数据同步装置303;其中,所述第一数据库301,用于接收数据操作请求,所述数据操作请求指示了待操作数据、所述待操作数据的新值;根据所述数据操作请求,在第一数据库中对所述待操作数据进行操作,在所述第一数据库中操作完所述待操作数据后,生成所述第一数据库的日志消息,所述日志消息指示了在所述第一数据库中操作的所述待操作数据、所述待操作数据的新值;所述数据同步装置303,用于获取所述第一数据库的日志消息,根据所述第一数据库的日志消息,指示所述第二数据库对所述待操作数据进行操作;所述第二数据库302,用于根据所述数据同步装置的指示对所述待操作数据进行操作。
在一种可选的实施方式中,还包括:消息队列304;所述数据同步装置303,还用于,根据获取的第一数据库的日志消息,生成第一数据操作消息并发送至所述消息队列,所述第一数据操作消息指示了所述待操作数据、所述待操作数据的新值;根据所述第一数据操作消息,指示所述第二数据库对所述待操作数据进行操作;在所述第二数据库中操作完所述待操作数据后,生成第二数据操作消息并发送至所述消息队列,所述第二数据操作消息指示了所述待操作数据、所述待操作数据的新值。
在一种可选的实施方式中,还包括:数据存储装置305;所述数据存储装置305,用于相对应地存储所述待操作数据、所述待操作数据的新值,存储所述待操作数据的同步状态,并将所述同步状态记录为未同步;相对应地存储所述待操作数据、所述待操作数据的新值,并更新所述同步状态为已同步。
在一种可选的实施方式中,所述数据同步装置303,还用于,在记录了所述待操作数据的同步状态为未同步的情况下,启动第一计时器,已累计所述同步状态为未同步的持续时间:在所述持续时间累计至所述第一计时器对应的阈值时间时所述同步状态依然为未同步的情况下,启动第二计时器;在所述第一计时器对应的阈值时间内所述同步状态被记录为已同步的情况下,判断所存储的对于所述第一数据库的所述待操作数据的新值,与存储的对于所述第二数据库的所述待操作数据的新值是否一致,若不一致,启动所述第二计时器;在所述第二计时器所对应的阈值时间内,指示所述第二数据库尝试对所述待操作数据进行操作。
在一种可选的实施方式中,还包括:异常警告装置306;所述异常警告装置306,用于在所述持续时间累计值所述第一计时器对应的阈值时间时所述同步状态依然为未同步的情况下,或者在所存储的对于所述第一数据库的所述待操作数据的新值与所存储的对于所述第二数据库的所述待操作数据的新值不一致的情况下,发送异常警告,以提示所述第一数据库与所述第二数据库的同步存在异常。
在一种可选的实施方式中,所述数据同步装置303,还用于,根据所获取的第一数据库的日志消息,生成符合所述第二数据库消息格式的所述第一数据操作消息,用以根据所述第一数据操作消息,指示所述第二数据库对所述待操作数据进行操作。
在一种可选的实施方式中,所述数据存储装置305,使用非关系型数据库或关系型数据库存储所述待操作数据、所述待操作数据的新值以及所述待操作数据的同步状态。
图4示出了可以应用本发明实施例的数据同步方法或数据同步系统的示例性系统架构400。
如图4所示,系统架构400可以包括终端设备401、402、403,网络404和服务器405。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所浏览的购物类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(待操作数据的同步状态为已同步)反馈给终端设备。
需要说明的是,本发明实施例所提供的数据同步方法一般由服务器405执行。
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图5,其示出了适于用来实现本发明实施例的终端设备的计算机系统500的结构示意图。图5示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:接收数据操作请求,所述数据操作请求指示了待操作数据、所述待操作数据的新值;根据所述数据操作请求,在第一数据库中对所述待操作数据进行操作,在所述第一数据库中操作完所述待操作数据后,生成所述第一数据库的日志消息,所述日志消息指示了在所述第一数据库中操作的所述待操作数据、所述待操作数据的新值;获取所述第一数据库的日志消息,根据所述第一数据库的日志消息,指示第二数据库对所述待操作数据进行操作。
根据本发明实施例的技术方案通过获取第一数据库的日志消息,并根据日志消息指示第二数据库对待操作数据进行操作,即实现了第一数据库与第二数据库的数据一致性,又解耦了第一数据库与第二数据库的同步操作,缩短了用户等待操作请求的反馈时间。除此之外,通过对待操作数据的同步状态的不断更新及判断,并在不同状态为未同步或第一数据库、第二数据库数据不一致的情况下,不断尝试对第二数据库中的数据进行操作,避免了因重启、宕机等造成的第一数据库、第二数据库数据不一致。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种数据同步方法,其特征在于,包括:
接收数据操作请求,所述数据操作请求指示了待操作数据、所述待操作数据的新值;
根据所述数据操作请求,在第一数据库中对所述待操作数据进行操作,在所述第一数据库中操作完所述待操作数据后,生成所述第一数据库的日志消息,所述日志消息指示了在所述第一数据库中操作的所述待操作数据、所述待操作数据的新值;
获取所述第一数据库的日志消息,根据所述第一数据库的日志消息,指示第二数据库对所述待操作数据进行操作。
2.根据权利要求1所述的数据同步方法,其特征在于,所述根据所述第一数据库的日志消息,指示第二数据库对所述待操作数据进行操作还包括:
根据所获取的第一数据库的日志消息,生成第一数据操作消息并发送至消息队列,所述第一数据操作消息指示了所述待操作数据、所述待操作数据的新值;
根据所述第一数据操作消息,指示所述第二数据库对所述待操作数据进行操作;
在所述第二数据库中操作完所述待操作数据后,生成第二数据操作消息并发送至所述消息队列,所述第二数据操作消息指示了所述待操作数据、所述待操作数据的新值。
3.根据权利要求1或2所述的数据同步方法,其特征在于,还包括:
相对应地存储所述第一数据库的所述待操作数据、所述待操作数据的新值,存储所述待操作数据的同步状态,并将所述同步状态记录为未同步;
相对应地存储所述第二数据库的所述待操作数据、所述待操作数据的新值,并更新所述待操作数据的同步状态为已同步。
4.根据权利要求3所述的数据同步方法,其特征在于,还包括:
在记录了所述待操作数据的同步状态为未同步的情况下,启动第一计时器,以累计所述同步状态为未同步的持续时间:
在所述持续时间累计至所述第一计时器对应的阈值时间时所述同步状态依然为未同步的情况下,启动第二计时器;
在所述第一计时器对应的阈值时间内所述同步状态被记录为已同步的情况下,判断所存储的对于所述第一数据库的所述待操作数据的新值,与所存储的对于所述第二数据库的所述待操作数据的新值是否一致,若不一致,启动所述第二计时器;
在所述第二计时器所对应的阈值时间内,指示所述第二数据库尝试对所述待操作数据进行操作。
5.根据权利要求4所述的数据同步方法,其特征在于,还包括:
在所述持续时间累计至所述第一计时器对应的阈值时间时所述同步状态依然为未同步的情况下,或者在所存储的对于所述第一数据库的所述待操作数据的新值与所存储的对于所述第二数据库的所述待操作数据的新值不一致的情况下,发送异常警告,以提示所述第一数据库与所述第二数据库的同步存在异常。
6.根据权利要求2所述的数据同步方法,其特征在于,
根据所获取的第一数据库的日志消息,生成符合所述第二数据库消息格式的所述第一数据操作消息,用以根据所述第一数据操作消息,指示所述第二数据库对所述待操作数据进行操作。
7.根据权利要求3所述的数据同步方法,其特征在于,
使用非关系型数据库或关系型数据库存储所述待操作数据、所述待操作数据的新值以及所述待操作数据的同步状态。
8.一种数据同步系统,其特征在于,包括:第一数据库、第二数据库、数据同步装置;其中,
所述第一数据库,用于接收数据操作请求,所述数据操作请求指示了待操作数据、所述待操作数据的新值;根据所述数据操作请求,在第一数据库中对所述待操作数据进行操作,在所述第一数据库中操作完所述待操作数据后,生成所述第一数据库的日志消息,所述日志消息指示了在所述第一数据库中操作的所述待操作数据、所述待操作数据的新值;
所述数据同步装置,用于获取所述第一数据库的日志消息,根据所述第一数据库的日志消息,指示所述第二数据库对所述待操作数据进行操作;
所述第二数据库,用于根据所述数据同步装置的指示对所述待操作数据进行操作。
9.一种用于实现数据同步的服务器,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201911030607.3A CN112732728A (zh) | 2019-10-28 | 2019-10-28 | 一种数据同步方法和系统 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201911030607.3A CN112732728A (zh) | 2019-10-28 | 2019-10-28 | 一种数据同步方法和系统 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN112732728A true CN112732728A (zh) | 2021-04-30 |
Family
ID=75588937
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201911030607.3A Pending CN112732728A (zh) | 2019-10-28 | 2019-10-28 | 一种数据同步方法和系统 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN112732728A (zh) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113177093A (zh) * | 2021-05-24 | 2021-07-27 | 商汤国际私人有限公司 | 数据同步方法及装置、电子设备和存储介质 |
| CN114490717A (zh) * | 2022-02-09 | 2022-05-13 | 北京沃东天骏信息技术有限公司 | 一种数据处理方法及装置、设备、存储介质 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN108108431A (zh) * | 2017-12-19 | 2018-06-01 | 中国民航信息网络股份有限公司 | 数据同步方法和系统 |
| CN109565462A (zh) * | 2016-07-06 | 2019-04-02 | 脸谱公司 | 使用客户端数据库的复制进行消息收发的技术 |
| WO2019091324A1 (zh) * | 2017-11-07 | 2019-05-16 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置以及电子设备 |
| CN110019062A (zh) * | 2017-08-14 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 数据同步方法和系统 |
-
2019
- 2019-10-28 CN CN201911030607.3A patent/CN112732728A/zh active Pending
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN109565462A (zh) * | 2016-07-06 | 2019-04-02 | 脸谱公司 | 使用客户端数据库的复制进行消息收发的技术 |
| CN110019062A (zh) * | 2017-08-14 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 数据同步方法和系统 |
| WO2019091324A1 (zh) * | 2017-11-07 | 2019-05-16 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置以及电子设备 |
| CN108108431A (zh) * | 2017-12-19 | 2018-06-01 | 中国民航信息网络股份有限公司 | 数据同步方法和系统 |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113177093A (zh) * | 2021-05-24 | 2021-07-27 | 商汤国际私人有限公司 | 数据同步方法及装置、电子设备和存储介质 |
| CN113177093B (zh) * | 2021-05-24 | 2024-09-20 | 商汤国际私人有限公司 | 数据同步方法及装置、电子设备和存储介质 |
| CN114490717A (zh) * | 2022-02-09 | 2022-05-13 | 北京沃东天骏信息技术有限公司 | 一种数据处理方法及装置、设备、存储介质 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111309747A (zh) | 数据同步方法、系统和装置 | |
| CN111008202B (zh) | 分布式事务处理方法和框架 | |
| CN111338834B (zh) | 数据存储方法和装置 | |
| CN111753012A (zh) | 数据同步方法、装置、设备及存储介质 | |
| CN112948138A (zh) | 一种处理消息的方法和装置 | |
| CN111666134A (zh) | 一种分布式任务调度的方法和系统 | |
| CN113761001A (zh) | 一种跨系统数据同步方法和装置 | |
| CN116614495A (zh) | 数据上传方法、装置、设备、存储介质及程序产品 | |
| CN118885336A (zh) | 数据恢复方法、装置及设备 | |
| CN112732728A (zh) | 一种数据同步方法和系统 | |
| CN115167769A (zh) | 一种写入数据的方法、装置及系统 | |
| CN110795135A (zh) | 一种实现注解式配置的方法和装置 | |
| CN113742376B (zh) | 一种同步数据的方法、第一服务器以及同步数据的系统 | |
| CN113590715B (zh) | 基于区块链的信息推送方法、装置、设备、介质和程序产品 | |
| CN112148705A (zh) | 数据迁移的方法和装置 | |
| CN112241332B (zh) | 一种接口补偿的方法和装置 | |
| CN110705935B (zh) | 一种物流单据的处理方法和装置 | |
| CN112181937B (zh) | 一种结转数据的方法和装置 | |
| CN117950850A (zh) | 一种数据传输方法、装置、电子设备及计算机可读介质 | |
| CN112068853A (zh) | 跨项目同步更新方法和装置 | |
| CN116975012A (zh) | 文件同步方法、文件更新方法、装置、电子设备和介质 | |
| CN114756173A (zh) | 文件合并的方法、系统、设备和计算机可读介质 | |
| US20210034570A1 (en) | Method, device, and computer program product for managing snapshot in application environment | |
| CN113760572A (zh) | 一种消息处理方法和装置 | |
| CN112099841A (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 | ||
| RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210430 |
|
| RJ01 | Rejection of invention patent application after publication |