CN109783504A - 数据同步方法、装置、计算机设备及存储介质 - Google Patents
数据同步方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN109783504A CN109783504A CN201910064887.3A CN201910064887A CN109783504A CN 109783504 A CN109783504 A CN 109783504A CN 201910064887 A CN201910064887 A CN 201910064887A CN 109783504 A CN109783504 A CN 109783504A
- Authority
- CN
- China
- Prior art keywords
- data
- tables
- value
- version value
- version
- 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数据库的应用越来越广泛。MySQL数据库(如下简称为数据库)提供了多副本的主从复制模式,常见的主从复制模式包括一主一从、一主多从、多主复制、多源复制等,以便于通过多个副本对外提供高可用和读写分离的服务能力。
在实施中,针对主从复制模式的数据库,用户可以通过主数据库实例在使用的主数据库的副本上进行写操作,并且,主数据库实例会将该写操作的数据同步至其它从数据库中,其中,该其它从数据库与该主数据库具有复制关联关系。
然而,对于多源复制模式的数据库,由于用户可以在每个主数据库的副本上进行写操作,因此,如果用户同时在多个主数据库中进行写操作,则向其它数据库进行数据同步时容易导致出现数据不一致的现象。
发明内容
本申请实施例提供了一种数据同步方法、装置、计算机设备及存储介质,可以解决相关技术中数据同步时容易出现数据不一致现象的问题。所述技术方案如下:
第一方面,提供了一种数据同步方法,所述方法包括:
接收来自任意数据库实例的第一变更日志,所述第一变更日志包括第一版本值,所述第一版本值用于指示所述任意数据库实例对数据执行变更操作时的时间点;
从本端数据库实例中确定所述第一变更日志对应的数据表;
根据所述第一版本值,对所述数据表进行数据同步。
可选地,所述第一变更日志还包括目标数据和所述目标数据的关联信息,所述目标数据为所述任意数据库实例变更后的数据,所述根据所述第一版本值,对所述数据表进行数据同步,包括:
在所述数据表中查询所述关联信息对应的行;
如果所述数据表中所述关联信息对应的行不存在数据,则将所述第一变更日志中的目标数据和所述第一版本值插入至所述行中;
如果所述数据表中所述关联信息对应的行存在数据,则基于所述第一版本值与第二版本值,对所述数据表进行数据同步,所述第二版本值用于指示所述关联信息对应的行中数据的更新版本。
可选地,所述基于所述第一版本值与所述第二版本值,对所述数据表进行数据同步,包括:
将所述第一版本值与所述第二版本值进行比较;
如果所述第一版本值比所述第二版本值高,则将所述数据表中所述关联信息对应的行的数据更新为所述第一变更日志中的目标数据,以及将所述第二版本值更新为所述第一版本值;
如果所述第一版本值比所述第二版本值低,则保留所述数据表中原有的数据和所述第二版本值。
可选地,所述第一版本值包括所述任意数据库实例对数据执行变更操作时的时间戳和所述任意数据库实例的数据库实例标识。
可选地,所述第一版本值还包括删除标识,所述删除标识用于表示对应的目标数据已被逻辑删除。
可选地,所述第一版本值是由所述任意数据库实例在检测到数据变更方式是按照参考语法执行时生成,所述参考语法包括定义所述第一版本值的生成方式、数据变更方式。
第二方面,提供了一种数据同步装置,所述装置包括:
接收模块,用于接收来自任意数据库实例的第一变更日志,所述第一变更日志包括第一版本值,所述第一版本值用于指示所述任意数据库实例对数据执行变更操作时的时间点;
确定模块,用于从本端数据库实例中确定所述第一变更日志对应的数据表;
同步模块,用于根据所述第一版本值,对所述数据表进行数据同步。
可选地,所述同步模块用于:
所述第一变更日志还包括目标数据和所述目标数据的关联信息,所述目标数据为所述任意数据库实例变更后的数据,在所述数据表中查询所述关联信息对应的行;
如果所述数据表中所述关联信息对应的行不存在数据,则将所述第一变更日志中的目标数据和所述第一版本值插入至所述行中;
如果所述数据表中所述关联信息对应的行存在数据,则基于所述第一版本值与第二版本值,对所述数据表进行数据同步,所述第二版本值用于指示所述关联信息对应的行中数据的更新版本。
可选地,所述同步模块用于:
将所述第一版本值与所述第二版本值进行比较;
如果所述第一版本值比所述第二版本值高,则将所述数据表中所述关联信息对应的行的数据更新为所述第一变更日志中的目标数据,以及将所述第二版本值更新为所述第一版本值;
如果所述第一版本值比所述第二版本值低,则保留所述数据表中原有的数据和所述第二版本值。
可选地,所述第一版本值包括所述任意数据库实例对数据执行变更操作时的时间戳和所述任意数据库实例的数据库实例标识。
可选地,所述第一版本值还包括删除标识,所述删除标识用于表示对应的目标数据已被逻辑删除。
可选地,所述第一版本值是由所述任意数据库实例在检测到数据变更方式是按照参考语法执行时生成,所述参考语法包括定义所述第一版本值的生成方式、数据变更方式。
第三方面,提供一种计算机设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为实现上述第一方面所述的数据同步方法。
第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述第一方面所述的数据同步方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的数据同步方法。
本申请实施例提供的技术方案带来的有益效果是:
接收来自任意数据库实例的第一变更日志,该第一变更日志包括第一版本值,根据该第一版本值可以确定该任意数据库实例对数据执行变更操作时的时间点。从本端数据库实例中获取该第一变更日志对应的数据表,然后根据该第一版本值确定如何对该数据表进行数据同步。由于根据该第一版本值可以确定数据变更的时间先后顺序,因此,当接收到来自多个数据库实例的第一变更日志时,根据每个第一变更日志中的第一版本值对数据进行同步处理可以避免出现数据不一致的情况。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种数据库的部署架构示意图;
图2是根据另一示例性实施例示出的一种实施环境的示意图;
图3是根据一示例性实施例示出的一种数据同步方法的流程图;
图4是根据另一示例性实施例示出的一种数据同步方法的流程图;
图5是根据一示例性实施例示出的一种数据同步装置的结构示意图;
图6是根据另一示例性实施例示出的一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例提供的数据同步方法进行详细介绍之前,先对本申请实施例涉及的名词、应用场景和实施环境进行简单介绍。
首先,对本申请实施例涉及的名词进行简单介绍。
IDC:(Internet Data Center,互联网数据中心),是利用已有的互联网通信线路、带宽资源,建立标准化的电信专业级机房环境,可以为企业、政府提供服务器托管、租用以及相关增值等方面的全方位服务。
复制关联关系:当两个数据库实例之间可以相互进行数据复制时,称该两个数据库实例之间具有复制关联关系;或者,当两个数据库实例中的其中一个数据库实例可以向另一个数据库实例复制数据时,也称该两个数据库实例之间具有复制关联关系。
复制集群:是指具有复制关联关系的多个数据库实例组成的集群。
其次,对本申请实施例涉及的应用场景进行简单介绍。
目前,MySQL数据库(以下简称数据库)在互联网数据业务领域得到广泛的应用。数据库可以提供异步复制结构的多副本服务,并且,随着数据库版本的增加,数据库的异步复制技术有了较大的进步,其中一个典型的提高就是可以支持多源复制,多源复制可以使得数据库能够支持多主一从的复制方式,即一个数据库实例可以接收多个数据库实例同时复制的写操作数据,譬如如图1所示。然而,当同时允许多个数据库实例提供写服务时很容易造成数据不一致性,为了能够支持多源复制并保存数据一致性,数据库从5.7版本开始推出复制组服务,该复制组服务采用同步复制的方式进行数据同步,即某个主数据库实例对数据执行写操作时,会同时向其它数据库实例同步写操作的数据,待同步结束后向用户反馈写操作结果,从而实现多源复制并保存数据一致性。
然而,在一些实施例中,多个主数据库之间的地理位置可能相对比较远,比如跨IDC场景,在该种情况下,在网络环境较差的情况下,复制组服务无法提供高效稳定的服务。也就是说复制组服务仅仅适用于同一IDC环境中,但无法适应于跨IDC的环境中。为此,本申请实施例提供了一种数据同步方法,该方法可以应用于任何环境中,并能够保证数据同步的一致性。其具体实现请参见下文所述的实施例。
接下来,对本申请实施例提供的实施环境进行简单介绍。
本申请实施例提供的数据同步方法可以应用于数据库的多源复制结构中,请参考图2,该图2是根据一示例性实施例示出的一种多源复制结构的部署架构示意图,该实施环境包括至少两个主数据库实例。
数据库实例之间的复制关联关系可以根据实际需求预先进行配置。在一些实施中,数据库的异步复制支持把多个数据库均配置成为互为主备模式,这样数据库就从逻辑上配置了一种主主数据库,此时每个数据库实例均主数据库实例,理论上来说,这种主主复制结构可以允许用户在每个数据库实例进行写操作,且每个数据库实例均会将写操作的数据同步到其它的数据库实例中。
当然,本申请实施例仅是以该数据同步方法应用于主主数据库中为例进行说明。在另一实施例中,该多源复制结构也可以为主从数据库,即该实施环境中除了包括至少两个主数据库外,还可以包括一个或者多个从数据库,此时也可以采用本申请实施例提供的数据同步方法,其实现原理相同。
另外,还需要说明的是,上述数据库实例运行于计算机设备中,该计算机设备可以为平板电脑、笔记本电脑、台式计算机等等,本申请实施例对此不作限定。
在介绍完本申请实施例涉及的应用场景和实施环境后,接下来将结合附图对本申请实施例提供的数据同步方法进行详细介绍。
请参考图3,该图3是根据一示例性实施例示出的一种数据同步方法的流程图,该数据同步方法可以应用于上述图2所示的实施环境中,该数据同步方法可以包括如下几个实现步骤:
步骤301:接收来自任意数据库实例的第一变更日志,该第一变更日志包括第一版本值,该第一版本值用于指示该任意数据库实例对数据执行变更操作时的时间点。
步骤302:从本端数据库实例中确定该第一变更日志对应的数据表。
步骤303:根据该第一版本值,对该数据表进行数据同步。
在本申请实施例中,接收来自任意数据库实例的第一变更日志,该第一变更日志包括第一版本值,根据该第一版本值可以确定该任意数据库实例对数据执行变更操作时的时间点。从本端数据库实例中获取该第一变更日志对应的数据表,然后根据该第一版本值确定如何对该数据表进行数据同步。由于根据该第一版本值可以确定数据变更的时间先后顺序,因此,当接收到来自多个数据库实例的第一变更日志时,根据每个第一变更日志中的第一版本值对数据进行同步处理可以避免出现数据不一致的情况。
可选地,该第一变更日志还包括目标数据和该目标数据的关联信息,该目标数据为该任意数据库实例变更后的数据,该根据该第一版本值,对该数据表进行数据同步,包括:
在该数据表中查询该关联信息对应的行;
如果该数据表中该关联信息对应的行不存在数据,则将该第一变更日志中的目标数据和第一版本值插入至该行中;
如果该数据表中该关联信息对应的行存在数据,则基于该第一版本值与第二版本值,对该数据表进行数据同步,该第二版本值用于指示关联信息对应的行中数据的更新版本。
可选地,该基于该第一版本值与第二版本值,对该数据表进行数据同步,包括:
将该第一版本值与该第二版本值进行比较;
如果该第一版本值比该第二版本值高,则将该数据表中该关联信息对应的行的数据更新为该第一变更日志中的目标数据,以及将该第二版本值更新为该第一版本值;
如果该第一版本值比该第二版本值低,则保留该数据表中原有的数据和该第二版本值。
可选地,该第一版本值包括该任意数据库实例对数据执行变更操作时的时间戳和该任意数据库实例的数据库实例标识。
可选地,该第一版本值还包括删除标识,该删除标识用于表示对应的目标数据已被逻辑删除。
可选地,该第一版本值是由该任意数据库实例在检测到数据变更方式是按照参考语法执行时生成,该参考语法包括定义该第一版本值的生成方式、数据变更方式。
上述所有可选技术方案,均可按照任意结合形成本申请的可选实施例,本申请实施例对此不再一一赘述。
图4是根据另一示例性实施例示出的一种数据同步方法的流程图,本实施例以该数据同步方法应用于上述图2所示的实施环境中进行举例说明,该方法可以包括如下几个步骤:
步骤401:接收来自任意数据库实例的第一变更日志,该第一变更日志包括第一版本值,该第一版本值用于指示该任意数据库实例对数据执行变更操作时的时间点。
其中,该任意数据库实例可以为预先配置的与本端数据库实例具有复制关联关系的主数据库实例,也即是,用户通过该任意数据库实例能够对数据进行变更操作,该变更操作可以包括但不限于一致性写操作、一致性删除操作、一致性查询操作。
该任意数据库实例的数量一般为多个,此时本端数据库实例可以同时接收来自其他多个主数据库实例的第一变更日志,在该种情况下,本端数据库实例分别基于每个主数据库实例传输的第一变更日志按照下述步骤进行数据同步处理。
在一些实施例中,该第一变更日志可以为binlog日志。在数据库提供的异构复制结构的多副本服务中,当数据库实例对数据执行变更操作后,可以以binlog日志的方式记载所执行的变更操作。
另外,该第一版本值是由该任意数据库实例在检测到数据变更方式是按照参考语法执行时生成,该参考语法包括定义该第一版本值的生成方式、数据变更方式。
也就是说,该第一变更日志中携带的第一版本值可以由该任意数据库实例自动生成。在实施中,该任意数据库实例当检测到数据变更方式是按照参考语法执行时,生成该第一版本值,将该第一版本值和变更后的数据对应添加至该第一变更日志中,将该第一变更日志传输至与该任意数据库实例具有复制关联关系的所有的数据库实例中,当然,该所有的数据库实例包括本端数据库实例。
其中,该参考语法可以由技术人员根据实际需求自定义设置。该参考语法在逻辑上相当于对数据执行了SET语义,该SET语义的实现原理是:在写操作过程中如果数据存在则更新已存在的数据,如果数据不存在则插入新数据。另外,该第一版本值的生成方法可以由数据库实例调用底层程序来实现,也就是说,当数据库实例检测到数据变更方式是按照参考语法执行时,不仅按照SET语义对数据执行变更操作,还会自动调用底层程序生成该第一版本值。
譬如,当该变更操作为一致性写操作时,该参考语法可以定义为:HASET table_name SET field1=new-value1,field2=new-value2WHERE key1=value1 AND key2=value2。再如,当该变更操作为一致性删除操作时,该参考语法可以定义为:HADELETE FROMtable_name WHERE key1=value1 AND key2=value2。
另外,上述第一版本值可以包括任意数据库实例对数据执行变更操作的时间戳和该任意数据库实例的数据库实例标识,该数据库实例标识是数据库实例配置的参数,可以用于标识一个数据库实例在某个复制集群中的唯一性。在一些实施例中,该数据标识的配置取值范围可以为[1,31]。
如此,本端数据库实例根据该第一版本值可以确定变更数据的时间点、以及变更后的数据是来自哪个数据库实例。进一步地,第一版本值可以为BIGINT型的数据。另外,该第一版本值还可以包括删除标识,该删除标识用于表示对应的目标数据已被逻辑删除,在实施中,该删除标识可以根据实际需求自定义设置,譬如,当该删除标识为第一数值时表示已被逻辑删除,当该删除标识为第二数值为标识未被逻辑删除,具体地,该第一数值可以为“1”,该第二数值可以为“0”,在该种情况下,后续进行一致性查询操作时,可以将该第一版本值与2进行取模运算,以根据运算结果来判断数据是否已被逻辑删除。
需要注意的是,这里所述的已被逻辑删除是指在逻辑上被删除,但并没有真正从该数据库实例中删除。
譬如,该第一版本值的生成原理可以为:
当前时间戳<<6|SERVER_ID<<1|删除标记;
其中,该当前时间戳用于表示对数据执行变更操作时的时间,在一种可能的实现方式中,该当前时间戳可以是从1970年1月1日0点0分0秒至当前时间之间的微妙数。SERVER_ID为数据库标识,上述“<<6”表示左移六位,同理,“<<1”表示左移一位。
任意数据库实例将该第一版本值和变更后的数据对应添加至该第一变更日志中,之后,该任意数据库实例向与自身具有复制关联关系的其它数据库实例(包括本端数据库实例)发送该第一变更日志。
进一步地,该第一变更日志还包括目标数据和该目标数据的关联信息,该目标数据为该任意数据库实例变更后的数据。也就是说,该任意数据库实例将变更后的数据和相关的关联信息也一同添加至该第一变更日志中。进一步地,该关联信息可以包括目标数据所在数据表的主键等信息。
步骤402:从本端数据库实例中确定该第一变更日志对应的数据表。
本端数据库实例接收到上述任意数据库实例发送的第一变更日志后,从本端数据库实例中确定第一变更日志对应的数据表,以便于基于该第一版本值对所确定的数据表进行数据同步操作。
在实施时,基于第一版本值对该数据表进行数据同步具体可以包括两种情况:一种情况是所确定的数据表不包括版本字段,此时可以按照常规的处理方式进行数据同步,这里不做过多介绍。而另一种情况是所确定的数据表包括版本字段,此时执行如下步骤403至步骤405。
步骤403:在该数据表中查询该关联信息对应的行。
具体地,当该数据表包括版本字段时,可以基于该关联信息中的主键在该数据表中查询对应的行,以检测该数据表中该主键对应的行的当前值,或者说检测该数据表中该主键对应的行当前是否存在数据。如果该数据表中该主键对应的行当前不存在数据则执行如下步骤404,否则,如果该数据表中该主键对应的行当前存在数据,则执行如下步骤405。
步骤404:如果该数据表中该关联信息对应的行不存在数据,则将该第一变更日志中的目标数据和第一版本值插入至该行中。
如果该数据表中该主键对应的行当前不存在数据,说明该数据表中该主键对应的行当前是空的,此时可以直接将该第一变更日志中携带的目标数据插入至该行中,使得该数据表中该主键对应的行的目标数据与该任意数据库实例中对应的数据相同。另外,为了便于后续查询该目标数据的变更时间,还可以将该第一版本值插入至该版本字段中,以通过该第一版本值来记录该目标数据的变更时间。
步骤405:如果该数据表中该关联信息对应的行存在数据,则基于该第一版本值与第二版本值,对该数据表进行数据同步,该第二版本值用于指示该关联信息对应的行中数据的变更版本。
如果该数据表中该主键对应的行中存在数据,则为了保证各个具有复制关联关系的数据库实例中数据的一致性,这里可以基于该第一版本值与第二版本值来确定对该数据表的数据同步策略,即确定在该数据表中该主键对应的行存储哪个版本的数据。
在一些实施例中,基于该第一版本值与第二版本值,对该数据表进行数据同步的具体实现可以包括:将该第一版本值与该第二版本值进行比较,如果该第一版本值比该第二版本值高,则将该数据表中该关联信息对应的行的数据更新为该第一变更日志中的目标数据,以及将该第二版本值更新为该第一版本值,如果该第一版本值比该第二版本值低,则保留该数据表中原有的数据和该第二版本值。
在一种可能的实现方式中,将该第一版本值与该第二版本值进行比较的具体实现可以包括:判断该第一版本值与该第二版本值之间的大小关系,当该第一版本值大于该第二版本值时,可以确定该第一版本值比该第二版本值高,当该第一版本值小于该该第二版本值时,可以确定该第一版本值比该第二版本值低。
由于该第一版本值用于指示数据库实例对数据执行变更操作时的时间点,因此,当第一版本值比第二版本值高时,说明该目标数据的变更时间比该第二版本值对应的数据的变更时间晚,或者说该目标数据是最新变更的。因此,当确定该第一版本值比该第二版本值高时,将该数据表中该关联信息对应的行的数据更新为第一变更日志中的目标数据。反之,当该第一版本值比该第二版本值低时,说明该第一版本值对应的目标数据的变更时间早于该数据表中该关联信息对应的行的数据的变更时间,比如可能是由于数据库实例对数据执行变更操作时数据写入速度较慢导致的,此时,不对该数据表执行变更操作,即保留该数据表中原有的数据,并且,保留该第二版本值。
如此,按照上述方法执行后,复制集群中的多个主数据库实例最终都会保留每行记录的最大版本值对应数据,小版本的数据都会在执行SET语法操作以及数据同步操作后被覆盖,从而保证数据的一致性。
值得一提的是,本申请实施例提供的方法可以使得所有的读写操作都可以针对自身所在IDC的数据库实例进行操作,从而能够在多IDC之间保证读写操作的效率。并且,即使在多个IDC之间出现断网或网络环境较差的情况下,也能够保证IDC内的服务正常执行,从而提升了弱网情况甚至是在跨国的网络情况下的数据库的高可用性。
进一步地,对于本端的数据库实例来说,当检测到数据变更方式是按照参考语法执行时,生成第三版本值,该参考语法包括定义该第三版本值的生成方式、数据变更方式,将该第三版本值和变更后的数据对应添加至第二变更日志中,将该第二变更日志传输至与本端数据库实例具有复制关联关系的其他数据库实例中。
也即是,与其它数据库实例同理,当本端数据库实例检测到数据变更方式是按照参考语法执行时,在进行数据变更的同时,生成第三版本值。进一步地,可以获取执行变更操作的时间点和本端数据库实例的数据库实例标识,然后基于获取的时间点和数据库实例标识,生成该第三版本值。此外,当该变更操作为一致性删除操作时,还需要在该第三版本值中携带删除标识。之后,将该第三版本值和变更后的数据对应添加至第二变更日志中,该第二变更日志用于记录本端数据库实例执行的变更操作以及执行变更操作的时间点。在执行完变更操作后将该第二变更日志发送给与本端具有复制关联关系的其他数据库实例中,以便于该其他数据库实例可以基于该第二变更日志进行数据同步操作。
接下来举个具体例子进行说明。例如,当需要创建一张user数据表时,假设该user数据表包括两个字段,分别是id和name字段,在创建该user数据表时,如果是按照参考语法执行,则会添加一个版本字段用来记录变更版本,该版本字段的值为第一版本值。其中,创建代码如下所示:
当执行一致性写操作时,按照参考语法执行代码实现如下:
在按照参考语法执行一致性写操作后,可以进行一致性查询,实现代码如下:
其中,mysql>select*from user where__version%2=0语句的含义是版本值与2进行取模运算,从查询结果来看该数据未被逻辑删除,查询出的数据即为一致性写操作写入的数据。
进一步地,为了对一致性删除操作进行验证,这里采用如下代码对上述一致性写操作的数据进行一致性删除:
之后,再进行一致性查询操作,执行结果如下:
mysql>select*from user where__version%2=0;
Empty set(0.00sec)
根据该执行结果可以看出,数据已经被逻辑删除,因此,本端数据库实例未查询到一致性写操作所写入的数据。
在本申请实施例中,接收来自任意数据库实例的第一变更日志,该第一变更日志包括第一版本值,根据该第一版本值可以确定该数据库实例对数据执行变更操作时的时间点。从本端数据库实例中获取该第一变更日志对应的数据表,然后根据该第一版本值确定如何对该数据表进行数据同步。由于根据该第一版本值可以确定数据变更的时间先后顺序,因此,当接收到来自多个数据库实例的第一变更日志时,根据每个第一变更日志中的第一版本值对数据进行同步处理可以避免出现数据不一致的情况。
图5是根据一示例性实施例示出的一种数据同步装置的结构示意图,该数据同步装置可以由软件、硬件或者两者的结合实现。该装置可以包括:
接收模块510,用于接收来自任意数据库实例的第一变更日志,所述第一变更日志包括第一版本值,所述第一版本值用于指示所述任意数据库实例对数据执行变更操作时的时间点;
确定模块520,用于从本端数据库实例中确定所述第一变更日志对应的数据表;
同步模块530,用于根据所述第一版本值,对所述数据表进行数据同步。
可选地,所述同步模块530用于:
所述第一变更日志还包括目标数据和所述目标数据的关联信息,所述目标数据为所述任意数据库实例变更后的数据,在所述数据表中查询所述关联信息对应的行;
如果所述数据表中所述关联信息对应的行不存在数据,则将所述第一变更日志中的目标数据和所述第一版本值插入至所述行中;
如果所述数据表中所述关联信息对应的行存在数据,则基于所述第一版本值与第二版本值,对所述数据表进行数据同步,所述第二版本值用于指示所述关联信息对应的行中数据的更新版本。
可选地,所述同步模块530用于:
将所述第一版本值与所述第二版本值进行比较;
如果所述第一版本值比所述第二版本值高,则将所述数据表中所述关联信息对应的行的数据更新为所述第一变更日志中的目标数据,以及将所述第二版本值更新为所述第一版本值;
如果所述第一版本值比所述第二版本值低,则保留所述数据表中原有的数据和所述第二版本值。
可选地,所述第一版本值包括所述任意数据库实例对数据执行变更操作时的时间戳和所述任意数据库的数据库实例标识。
可选地,所述第一版本值还包括删除标识,所述删除标识用于表示对应的目标数据已被逻辑删除。
可选地,所述第一版本值是由所述任意数据库实例在检测到数据变更方式是按照参考语法执行时生成,所述参考语法包括定义所述第一版本值的生成方式、数据变更方式。
在本申请实施例中,接收来自任意数据库实例的第一变更日志,该第一变更日志包括第一版本值,根据该第一版本值可以确定该任意数据库实例对数据执行变更操作时的时间点。从本端数据库实例中获取该第一变更日志对应的数据表,然后根据该第一版本值确定如何对该数据表进行数据同步。由于根据该第一版本值可以确定数据变更的时间先后顺序,因此,当接收到来自多个数据库实例的第一变更日志时,根据每个第一变更日志中的第一版本值对数据进行同步处理可以避免出现数据不一致的情况。
需要说明的是:上述实施例提供的数据同步装置在实现数据同步方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据同步装置与数据同步方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图6示出了本申请一个示例性实施例提供的计算机设备600的结构框图。该计算机设备600可以是:平板电脑、笔记本电脑或台式电脑。计算机设备600还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,计算机设备600包括有:处理器601和存储器602。
处理器601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器601可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器601还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器601所执行以实现本申请中方法实施例提供的数据同步方法。
在一些实施例中,计算机设备600还可选包括有:外围设备接口603和至少一个外围设备。处理器601、存储器602和外围设备接口603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口603相连。具体地,外围设备包括:射频电路604、触摸显示屏605、摄像头606、音频电路607、定位组件608和电源609中的至少一种。
外围设备接口603可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器601和存储器602。在一些实施例中,处理器601、存储器602和外围设备接口603被集成在同一芯片或电路板上;在一些其他实施例中,处理器601、存储器602和外围设备接口603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路604用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路604包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路604可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路604还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏605用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏605是触摸显示屏时,显示屏605还具有采集在显示屏605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器601进行处理。此时,显示屏605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏605可以为一个,设置计算机设备600的前面板;在另一些实施例中,显示屏605可以为至少两个,分别设置在计算机设备600的不同表面或呈折叠设计;在再一些实施例中,显示屏605可以是柔性显示屏,设置在计算机设备600的弯曲表面上或折叠面上。甚至,显示屏605还可以设置成非矩形的不规则图形,也即异形屏。显示屏605可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-EmittingDiode,有机发光二极管)等材质制备。
摄像头组件606用于采集图像或视频。可选地,摄像头组件606包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件606还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器601进行处理,或者输入至射频电路604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在计算机设备600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器601或射频电路604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路607还可以包括耳机插孔。
定位组件608用于定位计算机设备600的当前地理位置,以实现导航或LBS(Location Based Service,基于位置的服务)。定位组件608可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源609用于为计算机设备600中的各个组件进行供电。电源609可以是交流电、直流电、一次性电池或可充电电池。当电源609包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,计算机设备600还包括有一个或多个传感器610。该一个或多个传感器610包括但不限于:加速度传感器611、陀螺仪传感器612、压力传感器613、指纹传感器614、光学传感器615以及接近传感器616。
加速度传感器611可以检测以计算机设备600建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器611可以用于检测重力加速度在三个坐标轴上的分量。处理器601可以根据加速度传感器611采集的重力加速度信号,控制触摸显示屏605以横向视图或纵向视图进行用户界面的显示。加速度传感器611还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器612可以检测计算机设备600的机体方向及转动角度,陀螺仪传感器612可以与加速度传感器611协同采集用户对计算机设备600的3D动作。处理器601根据陀螺仪传感器612采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器613可以设置在计算机设备600的侧边框和/或触摸显示屏605的下层。当压力传感器613设置在计算机设备600的侧边框时,可以检测用户对计算机设备600的握持信号,由处理器601根据压力传感器613采集的握持信号进行左右手识别或快捷操作。当压力传感器613设置在触摸显示屏605的下层时,由处理器601根据用户对触摸显示屏605的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器614用于采集用户的指纹,由处理器601根据指纹传感器614采集到的指纹识别用户的身份,或者,由指纹传感器614根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器601授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器614可以被设置计算机设备600的正面、背面或侧面。当计算机设备600上设置有物理按键或厂商Logo时,指纹传感器614可以与物理按键或厂商Logo集成在一起。
光学传感器615用于采集环境光强度。在一个实施例中,处理器601可以根据光学传感器615采集的环境光强度,控制触摸显示屏605的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏605的显示亮度;当环境光强度较低时,调低触摸显示屏605的显示亮度。在另一个实施例中,处理器601还可以根据光学传感器615采集的环境光强度,动态调整摄像头组件606的拍摄参数。
接近传感器616,也称距离传感器,通常设置在计算机设备600的前面板。接近传感器616用于采集用户与计算机设备600的正面之间的距离。在一个实施例中,当接近传感器616检测到用户与计算机设备600的正面之间的距离逐渐变小时,由处理器601控制触摸显示屏605从亮屏状态切换为息屏状态;当接近传感器616检测到用户与计算机设备600的正面之间的距离逐渐变大时,由处理器601控制触摸显示屏605从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图6中示出的结构并不构成对计算机设备600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本申请实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由计算机设备的处理器执行时,使得计算机设备能够执行上述实施例提供的数据同步方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例提供的数据同步方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据同步方法,其特征在于,所述方法包括:
接收来自任意数据库实例的第一变更日志,所述第一变更日志包括第一版本值,所述第一版本值用于指示所述任意数据库实例对数据执行变更操作时的时间点;
从本端数据库实例中确定所述第一变更日志对应的数据表;
根据所述第一版本值,对所述数据表进行数据同步。
2.如权利要求1所述的方法,其特征在于,所述第一变更日志还包括目标数据和所述目标数据的关联信息,所述目标数据为所述任意数据库实例变更后的数据,所述根据所述第一版本值,对所述数据表进行数据同步,包括:
在所述数据表中查询所述关联信息对应的行;
如果所述数据表中所述关联信息对应的行不存在数据,则将所述第一变更日志中的目标数据和所述第一版本值插入至所述行中;
如果所述数据表中所述关联信息对应的行存在数据,则基于所述第一版本值与第二版本值,对所述数据表进行数据同步,所述第二版本值用于指示所述关联信息对应的行中数据的更新版本。
3.如权利要求2所述的方法,其特征在于,所述基于所述第一版本值与第二版本值,对所述数据表进行数据同步,包括:
将所述第一版本值与所述第二版本值进行比较;
如果所述第一版本值比所述第二版本值高,则将所述数据表中所述关联信息对应的行的数据更新为所述第一变更日志中的目标数据,以及将所述第二版本值更新为所述第一版本值;
如果所述第一版本值比所述第二版本值低,则保留所述数据表中原有的数据和所述第二版本值。
4.如权利要求1-3任一项所述的方法,其特征在于,所述第一版本值包括所述任意数据库实例对数据执行变更操作时的时间戳和所述任意数据库实例的数据库实例标识。
5.如权利要求4所述的方法,其特征在于,所述第一版本值还包括删除标识,所述删除标识用于表示对应的目标数据已被逻辑删除。
6.如权利要求1所述的方法,其特征在于,所述第一版本值是由所述任意数据库实例在检测到数据变更方式是按照参考语法执行时生成,所述参考语法包括定义所述第一版本值的生成方式、数据变更方式。
7.一种数据同步装置,其特征在于,所述装置包括:
接收模块,用于接收来自任意数据库实例的第一变更日志,所述第一变更日志包括第一版本值,所述第一版本值用于指示所述任意数据库实例对数据执行变更操作时的时间点;
确定模块,用于从本端数据库实例中确定所述第一变更日志对应的数据表;
同步模块,用于根据所述第一版本值,对所述数据表进行数据同步。
8.如权利要求7所述的装置,其特征在于,所述同步模块用于:
所述第一变更日志还包括目标数据和所述目标数据的关联信息,所述目标数据为所述任意数据库实例变更后的数据,在所述数据表中查询所述关联信息对应的行;
如果所述数据表中所述关联信息对应的行不存在数据,则将所述第一变更日志中的目标数据和所述第一版本值插入至所述行中;
如果所述数据表中所述关联信息对应的行存在数据,则基于所述第一版本值与第二版本值,对所述数据表进行数据同步,所述第二版本值用于指示所述关联信息对应的行中数据的更新版本。
9.一种计算机设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为实现权利要求1-6所述的任一项方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现权利要求1-6所述的任一项方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910064887.3A CN109783504A (zh) | 2019-01-23 | 2019-01-23 | 数据同步方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910064887.3A CN109783504A (zh) | 2019-01-23 | 2019-01-23 | 数据同步方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109783504A true CN109783504A (zh) | 2019-05-21 |
Family
ID=66502149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910064887.3A Pending CN109783504A (zh) | 2019-01-23 | 2019-01-23 | 数据同步方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109783504A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362631A (zh) * | 2019-07-22 | 2019-10-22 | 阿里巴巴集团控股有限公司 | 一种同步数据的方法和系统 |
CN111966747A (zh) * | 2020-07-23 | 2020-11-20 | 深圳市科脉技术股份有限公司 | 数据同步方法、系统、终端设备及存储介质 |
CN112817995A (zh) * | 2021-02-22 | 2021-05-18 | 北京奇艺世纪科技有限公司 | 数据处理方法和装置、电子设备及存储介质 |
CN113239113A (zh) * | 2021-05-10 | 2021-08-10 | 浪潮软件股份有限公司 | 一种基于营销平台交易数据同步的数据补偿方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105447014A (zh) * | 2014-08-15 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 基于binlog的元数据管理方法和用于提供元数据的方法及装置 |
CN105636121A (zh) * | 2015-12-17 | 2016-06-01 | 福建新大陆通信科技股份有限公司 | 一种客户端登录服务器同步数据的方法及系统 |
US20160371319A1 (en) * | 2015-06-19 | 2016-12-22 | Sap Se | Synchronization on reactivation of asynchronous table replication |
CN107423303A (zh) * | 2016-05-24 | 2017-12-01 | 北京京东尚科信息技术有限公司 | 数据同步的方法和系统 |
-
2019
- 2019-01-23 CN CN201910064887.3A patent/CN109783504A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105447014A (zh) * | 2014-08-15 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 基于binlog的元数据管理方法和用于提供元数据的方法及装置 |
US20160371319A1 (en) * | 2015-06-19 | 2016-12-22 | Sap Se | Synchronization on reactivation of asynchronous table replication |
CN105636121A (zh) * | 2015-12-17 | 2016-06-01 | 福建新大陆通信科技股份有限公司 | 一种客户端登录服务器同步数据的方法及系统 |
CN107423303A (zh) * | 2016-05-24 | 2017-12-01 | 北京京东尚科信息技术有限公司 | 数据同步的方法和系统 |
Non-Patent Citations (1)
Title |
---|
SYNCNAVIGATOR: "MySQL 5.7 多主一从(多源复制)同步配置", 《博客园HTTPS://WWW.CNBLOGS.COM/SYNCNAVIGATOR/P/10189499.HTML》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362631A (zh) * | 2019-07-22 | 2019-10-22 | 阿里巴巴集团控股有限公司 | 一种同步数据的方法和系统 |
CN111966747A (zh) * | 2020-07-23 | 2020-11-20 | 深圳市科脉技术股份有限公司 | 数据同步方法、系统、终端设备及存储介质 |
CN112817995A (zh) * | 2021-02-22 | 2021-05-18 | 北京奇艺世纪科技有限公司 | 数据处理方法和装置、电子设备及存储介质 |
CN112817995B (zh) * | 2021-02-22 | 2023-09-15 | 北京奇艺世纪科技有限公司 | 数据处理方法和装置、电子设备及存储介质 |
CN113239113A (zh) * | 2021-05-10 | 2021-08-10 | 浪潮软件股份有限公司 | 一种基于营销平台交易数据同步的数据补偿方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108881030B (zh) | 灰度发布场景下的路由方法及装置 | |
CN112035410B (zh) | 日志存储方法、装置、节点设备及存储介质 | |
CN109783504A (zh) | 数据同步方法、装置、计算机设备及存储介质 | |
CN110602206B (zh) | 基于区块链的数据共享方法、装置及存储介质 | |
EP4009187A1 (en) | Block processing method and apparatus, and data query method and apparatus based on blockchain | |
CN108717432B (zh) | 资源查询方法及装置 | |
CN111340482B (zh) | 冲突检测方法、装置、节点设备及存储介质 | |
CN111694834A (zh) | 图数据的入库方法、装置、设备及可读存储介质 | |
CN110213153A (zh) | 未读消息的显示方法、获取方法、装置、终端及存储介质 | |
US11934814B2 (en) | Application porting method and apparatus, device, and medium | |
CN111241115B (zh) | 数据同步方法、装置、设备及存储介质 | |
CN109889325B (zh) | 校验方法、装置、电子设备及介质 | |
CN110147380A (zh) | 数据更新方法、装置、服务器以及存储介质 | |
CN111949680A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN111290948A (zh) | 测试数据获取方法、装置、计算机设备及可读存储介质 | |
CN110032384A (zh) | 资源更新的方法、装置、设备及存储介质 | |
CN109933594A (zh) | 获取数据的方法、装置、电子设备及介质 | |
CN112632918B (zh) | 文档编辑方法、装置、终端及存储介质 | |
US11080243B2 (en) | Synchronizing virtualized file systems | |
CN112084157A (zh) | 文件恢复方法、装置、计算机设备及存储介质 | |
CN112738624B (zh) | 用于视频的特效渲染的方法和装置 | |
CN109359259A (zh) | 加载网页的方法及装置 | |
CN113268234A (zh) | 页面生成方法、装置、终端和存储介质 | |
CN110321332B (zh) | 多媒体文件恢复方法、装置、终端和存储介质 | |
CN115098537A (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 | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20190521 Assignee: GUANGZHOU CUBESILI INFORMATION TECHNOLOGY Co.,Ltd. Assignor: GUANGZHOU HUADUO NETWORK TECHNOLOGY Co.,Ltd. Contract record no.: X2021440000031 Denomination of invention: Data synchronization method, device, computer equipment and storage medium License type: Common License Record date: 20210125 |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190521 |