数据同步方法、装置、存储介质及设备与流程

    专利2022-07-08  88


    本发明涉及数据库技术领域,具体地,涉及一种数据同步方法、装置、存储介质及设备。



    背景技术:

    现有技术中为了解决数据库存储数据时,由于突发情况,如网络断开、服务器断电等情况,导致数据库服务不可用的问题,通过各数据库提供的自带的主从复制,实现主数据库和从数据库分离,主数据库放在一个机房,其他机房部署从数据库,这样即使一个数据库(例如主数据库)服务不可用时,也可访问其他数据库。但是主数据库和从数据库之间的同步是通过网络同步相关数据,主数据库获得更新数据后,再分发给从数据库,存在一定的延时,如果网络环境不稳定,会导致延时加长或者无法同步。



    技术实现要素:

    本发明实施例的目的是提供一种数据同步方法、装置、存储介质及设备,解决了现有技术中跨机房数据库数据一致性问题,本发明实施例可针对各个数据库执行所接收到的写操作事务,只有当接收到所有数据库对应的写操作事务成功的信息时,才能确定所述写操作事务操作成功,从而保证各个机房访问的数据库之间的数据状态完全一致。

    为了实现上述目的,本发明实施例提供一种数据同步方法,所述方法包括:接收写操作事务;针对各个数据库执行所述写操作事务;当接收到所有数据库对应的写操作事务成功的信息时,记录并反馈所述写操作事务操作成功。

    进一步地,所述针对各个数据库执行所述写操作事务包括:针对所述各个数据库执行所述写操作事务的预写操作;当接收到所有数据库反馈的预写操作完成的信息时,向所述各个数据库提交所述写操作事务。

    进一步地,所述针对各个数据库执行所述写操作事务之前,所述方法还包括:根据所述写操作事务中指示的将要操作数据所在记录的标识,在所述各个数据库的预设列表中查找所述标识对应的存储位置,并记录所述各个数据库中在所述存储位置上将要操作数据的第一状态。

    进一步地,在所述针对各个数据库执行所述写操作事务之后,所述方法还包括:当接收到任意一个数据库对应的写操作事务失败的信息时,确定所述写操作事务操作失败;根据所记录的所述各个数据库中在所述存储位置上将要操作数据的第一状态,将写操作事务成功的数据库中的数据回滚至所述第一状态。

    进一步地,所述当接收到任意一个数据库对应的写操作事务失败的信息时,确定所述写操作事务操作失败包括:当接收到任意一个数据库反馈的预写操作无法完成的信息时,确定所述写操作事务操作失败;或者当接收到所有数据库反馈的预写操作完成的信息并向所述各个数据库提交所述写操作事务之后,接收到任意一个数据库反馈的写操作事务无法完成的信息时,确定所述写操作事务操作失败。

    进一步地,在所述接收到任意一个数据库对应的写操作事务失败的信息之后,所述方法还包括:提示写操作事务失败的数据库存在故障。

    进一步地,所所述写操作事务中包括操作类型,所述操作类型包括新增数据、更新数据或删除数据。

    相应的,本发明实施例还提供一种数据同步装置,包括:接收单元,用于接收写操作事务;处理单元,用于针对各个数据库执行所述写操作事务;确定单元,用于当所述接收单元接收到所有数据库对应的写操作事务成功的信息时,记录并反馈所述写操作事务操作成功。

    进一步地,所述处理单元还用于针对所述各个数据库执行所述写操作事务的预写操作;当接收到所有数据库反馈的预写操作完成的信息时,向所述各个数据库提交所述写操作事务。

    进一步地,所述装置还包括:查找单元,用于根据所述写操作事务中指示的将要操作数据所在记录的标识,在所述各个数据库的预设列表中查找所述标识对应的存储位置;记录单元,用于记录所述各个数据库中在所述存储位置上将要操作数据的第一状态。

    进一步地,所述确定单元还用于当接收到任意一个数据库对应的写操作事务失败的信息时,确定所述写操作事务操作失败;所述装置还包括:回滚单元,用于根据所记录的所述各个数据库中在所述存储位置上将要操作数据的第一状态,将写操作事务成功的数据库中的数据回滚至所述第一状态。

    进一步地,所确定单元还用于当接收到任意一个数据库反馈的预写操作无法完成的信息时,确定所述写操作事务操作失败;或者当接收到所有数据库反馈的预写操作完成的信息并向所述各个数据库提交所述写操作事务之后,接收到任意一个数据库反馈的写操作事务无法完成的信息时,确定所述写操作事务操作失败。

    进一步地,所述装置还包括:提示单元,用于提示写操作事务失败的数据库存在故障。

    进一步地,所述写操作事务中包括操作类型,所述操作类型包括新增数据、更新数据或删除数据中的任意一种。

    相应的,本发明实施例还提供一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如上所述的数据同步方法。

    相应的,本发明实施例还提供一种设备,所述设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器与所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如上所述的数据同步方法。

    通过上述技术方案,针对各个数据库执行所接收到的写操作事务,只有当接收到所有数据库对应的写操作事务成功的信息时,才能确定所述写操作事务操作成功。本发明实施例解决了现有技术中跨机房数据库数据一致性问题,因为只有在所有数据库均写操作成功时,才能确定所述写操作事务操作成功,不会因为网络延时、中断等异常情况导致的数据写操作执行不同步,实现了所有数据库中存储的数据保持同步,从而保证各个机房访问的数据库之间的数据状态完全一致。

    本发明的其它特征和优点将在随后的具体实施方式部分予以详细说明。

    附图说明

    附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:

    图1是本发明实施例提供的一种数据同步方法的流程示意图;

    图2是本发明实施例提供的另一种数据同步方法的流程示意图;

    图3是本发明实施例提供的一种数据同步装置的结构示意图;

    图4是本发明实施例提供的另一种数据同步装置的结构示意图;

    图5是本发明实施例提供的又一种数据同步装置的结构示意图;

    图6是本发明实施例提供的再一种数据同步装置的结构示意图;

    图7是本发明实施例提供的一种设备的结构示意图。

    具体实施方式

    以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。

    图1是本发明实施例提供的一种数据同步方法的流程示意图。所述方法应用于数据同步装置,该装置可位于中间件服务,如图1所示,所述方法包括如下步骤:

    步骤101,接收写操作事务;

    步骤102,针对各个数据库执行所述写操作事务;

    步骤103,当接收到所有数据库对应的写操作事务成功的信息时,记录并反馈所述写操作事务操作成功。

    其中,本发明实施例中的数据库之间完全独立,不存在现有技术中所述的主数据库与从数据库的形式。所述写操作事务中至少包括将要操作数据、将要操作数据所在记录的标识以及操作类型。其中,为了保证所有数据库中将要操作数据的一致性,在每个数据库中存在预设列表,所述预设列表中指示数据库中的记录的标识与其存储位置的对应关系。也就是说,无论将要操作数据在每个数据库中的存储位置是否相同,只要通过其所在记录的标识以及每个数据库的预设列表,即可在各自的数据库中查找到将要操作数据的存储位置,从而保证了针对各个数据库执行写操作事务的数据一致性。另外,所述操作类型包括新增数据、更新数据或删除数据。当所述写操作事务的操作类型为新增数据时,该事务中包括的将要操作数据为需要新增加到各个数据库中的数据,对应的将要操作数据所在记录的标识为将要新增加的数据所在记录的标识。当所述写操作事务的操作类型为更新数据时,该事务中包括的将要操作数据为对各个数据库中的某个指定数据进行更新的数据,对应的将要操作数据所在记录的标识为该需要更新的指定数据所在记录的标识。当所述写操作事务的操作类型为删除数据时,该事务中包括的将要操作数据为需要删除的各个数据库中的指定数据,对应的将要操作数据所在记录的标识为该需要删除的指定数据所在记录的标识。

    在步骤102中,在接收写操作事务之后,首先针对所述各个数据库执行所述写操作事务的预写操作。其中,对于所述各个数据库的预写操作可以依次执行也可以并行,在本发明实施例中并不限定。根据所述写操作事务中的操作类型,各个数据库执行预写操作,为新增数据预处理、更新数据预处理或删除数据预处理。当接收到所有数据库反馈的预写操作完成的信息时,则向所述各个数据库提交所述写操作事务。其中,在向所述各个数据库提交所述写操作事务的时候,可以依次提交,也可以同时提交,在本发明实施例中并不限定。另外,当各个数据库接收到所提交的所述写操作事务时,所述各个数据库对上述执行预写操作的数据执行实际的写入操作,即对新增数据预处理、更新数据预处理或删除数据预处理执行真正的新增数据处理、更新数据处理或删除数据处理,从而完成所述写操作事务。与现有技术不同的是,本申请中的写操作不再包含预写操作那部分的动作。当接收到所有数据库对应的写操作事务成功的信息时,记录本次写操作事务操作成功,并通知用户本次写操作事务操作成功。

    其中,需要注意的是,将本发明实施例采取的在接收到所有数据库反馈的预写操作完成的信息之后,才能向所述各个数据库提交所述写操作事务,作为第一种方式。而将接收到一个数据库反馈的预写操作完成的信息之后,直接向该数据库提交所述写操作事务,其它数据库也类似,接收到一个反馈提交一个写操作事务,作为第二种方式。当采用第二种方式时,若出现某个数据库预写操作无法完成,而其它预写操作完成的数据库已经被提交所述写操作事务的情况,第二种方式存在资源浪费的问题,所以在本发明实施例中采用第一种方式,保证了只要存在任意一个数据库预写操作无法完成,其它已经提交所述写操作事务的数据库也是无效的。

    在本发明实施例的一种实施方式中,为了解决写操作事务失败时,其它写操作事务操作成功的数据库与写操作事务失败的数据库之间的数据不一致的问题,在所述针对各个数据库执行所述写操作事务之前,可根据所述写操作事务中指示的将要操作数据所在记录的标识,在所述各个数据库的预设列表中查找所述标识对应的存储位置,并记录所述各个数据库中在所述存储位置上将要操作数据的第一状态。例如,所述第一状态可以为将要操作数据的数据形式以及数据值。在本发明实施例的实施方式中,记录所述各个数据库中在所述存储位置上将要操作数据的第一状态,可在接收到所述写操作事务之后,也可在上一次写操作事务成功之后执行。

    例如,当操作类型为新增数据时,则根据所述写操作事务中指示的将要新增数据所在记录的标识,在所述各个数据库的预设列表中查找该标识对应的存储位置,并记录所述各个数据库中在该存储位置上新增该数据之前的数据,作为将要操作数据的第一状态,例如,在新增数据之前,所述标识对应的记录中的原始数据值。当操作类型为更新数据时,则根据所述写操作事务中指示的将要更新数据所在记录的标识,在所述各个数据库的预设列表中查找该标识对应的存储位置,并记录所述各个数据库中在该存储位置上更新数据之前的原始数据,作为将要操作数据的第一状态,例如,在更新数据之前,所述标识对应的记录中的原始数据值。当操作类型为删除数据时,则根据所述写操作事务中指示的将要删除数据所在记录的标识,在所述各个数据库的预设列表中查找该标识对应的存储位置,并记录所述各个数据库中在所述存储位置上删除之前的数据,作为将要操作数据的第一状态,例如,在删除数据之前,所述标识对应的记录中的原始数据值。

    作为上述实施方式的扩展,由于已经记录了所述各个数据库中在所述存储位置上将要操作数据的第一状态,因此,当接收到任意一个数据库对应的写操作事务失败的信息时,确定所述写操作事务操作失败,并根据所记录的所述各个数据库中在所述存储位置上将要操作数据的第一状态,将写操作事务成功的数据库中的数据回滚至所述第一状态,从而保证了无论是写操作事务成功还是失败,所有数据库中的数据均会保持同步。其中,对于不同的操作类型,在回滚至所述第一状态时,存在不同的处理方式。例如,对于新增数据的写操作事务,当接收到任意一个数据库对应的写操作事务失败的信息时,根据所记录的第一状态,将新增数据成功的数据库中的数据回滚为新增数据之前的数据,即将所述标识对应的记录中新增的数据删除。对于更新数据的写操作事务,当接收到任意一个数据库对应的写操作事务失败的信息时,根据所记录的第一状态,将更新数据成功的数据库中的数据回滚为更新数据之前的原始数据。对于删除数据的写操作事务,当接收到任意一个数据库对应的写操作事务失败的信息时,根据所记录的第一状态,将删除数据成功的数据库中的数据回滚为删除之前的数据,即将所述标识对应的记录中删除的数据重新写入数据库中的该记录中。

    另外,对于写操作事务操作失败的情况,还可以提示写操作事务失败的数据库存在故障,以便于能够立即发现数据库问题以及定位哪些数据库发生了故障。其中,写操作事务操作失败存在下述两种形式:一种是预写操作无法完成,即当接收到任意一个数据库反馈的预写操作无法完成的信息时,确定所述写操作事务操作失败;另一种是预写操作完成但是提交写操作事务无法完成,即当接收到所有数据库反馈的预写操作完成的信息并向所述各个数据库提交所述写操作事务之后,接收到任意一个数据库反馈的写操作事务无法完成的信息时,确定所述写操作事务操作失败,也就是说所有数据库预写操作均完成了,但是真正写入的时候无法完成。无论是上述哪一种写操作事务失败,都可以通过上述实施例中的回滚机制,实现所有数据库中的数据一致性。

    为了便于理解本发明实施例,图2是本发明实施例提供的一种数据同步方法的流程示意图。如图2所示,所述方法包括如下步骤:

    步骤201,接收写操作事务;

    步骤202,根据所述写操作事务中指示的将要操作数据所在记录的表述,在所述各个数据库的预设列表中查找所述标识对应的存储位置,并记录所述各个数据库中在所述存储位置上将要操作数据的第一状态;

    步骤203,针对所述各个数据库执行所述写操作事务的预写操作;

    其中,针对所述各个数据库执行所述预写操作时,可能存在无法写入的情况,对于该情况,在本发明实施例中可通过设定次数的重试机制执行预写操作,例如,设定次数为3次,即预写操作存在3次重试的机会,当3次预写操作均无法完成时,则表示该数据库的预先操作无法完成。

    步骤204,判断是否接收到所有数据库反馈的预写操作完成的信息,是则执行步骤205,否则若是接收到任意一个数据库反馈的预写操作无法完成的信息时,执行步骤208;

    步骤205,向所述各个数据库提交所述写操作事务,也就是说,将上述预写操作的数据真正执行写操作;

    步骤206,判断是否接收到所有数据库反馈的写操作事务成功的信息,是则执行步骤207,否则若是接收到任意一个数据库反馈的写操作事务无法完成的信息时,执行步骤208;

    步骤207,确定所述写操作事务操作成功;

    步骤208,确定所述写操作事务操作失败,提示写操作事务失败的数据库存在故障,并根据所记录的所述各个数据库中在所述存储位置上将要操作数据的第一状态,将写操作事务成功的数据库中的数据回滚至所述第一状态,即对于新增数据,将所新增的数据删除;对于更新数据,回滚至更新数据之前的原始数据;对于删除数据,将删除的数据重新写入数据库中。

    本发明实施例应用于数据同步装置,该装置可位于中间件服务,所述中间件服务可为jdbc(javadatabaseconnectivity,java数据库连接),本发明实施例可通过jdbc提供的数据库驱动接口向各个数据库发出写操作事务。各个机房的数据库相互独立,所有对数据库的写操作事务均通过中间件服务来完成,只有所有数据库的预写操作完成时,才会向各个数据库提交写操作事务,即各个数据库真正完成写操作。只有写操作事务完成时,才表示此次写入操作成功。只要有一个数据库预写操作无法完成或写操作事务无法完成,已经预写操作完成的数据或写操作事务成功的数据都会回滚至写操作之前的第一状态,确保了所有数据库的数据保持同步,而要读取数据时,也会保证读到的数据是最新数据。另外,各个机房的应用直连该机房的数据库,所有读操作都直接读取该数据库的数据,对于一些读操作要求高于写操作的应用来说,由于中间件服务仅用于执行写操作,即使中间件服务暂时无法提供服务,读操作也不会受到影响。另外,由于各个机房的数据库保持了数据一致性,当本机房的服务器宕机,无法提供数据库服务时,与本机房连接的应用可以访问其他机房的数据库,保证了应用不会受到影响。

    相应的,图3是本发明实施例提供的一种数据同步装置的结构示意图。如图3所示,所述装置30包括:接收单元31,用于接收写操作事务;处理单元32,用于针对各个数据库执行所述写操作事务;确定单元33,用于当所述接收单元接收到所有数据库对应的写操作事务成功的信息时,记录并反馈所述写操作事务操作成功。

    进一步地,所述处理单元还用于针对所述各个数据库执行所述写操作事务的预写操作;当接收到所有数据库反馈的预写操作完成的信息时,向所述各个数据库提交所述写操作事务。

    进一步地,如图4所示,所述装置还包括:查找单元34,用于根据所述写操作事务中指示的将要操作数据所在记录的标识,在所述各个数据库的预设列表中查找所述标识对应的存储位置;记录单元35,用于记录所述各个数据库中在所述存储位置上将要操作数据的第一状态。

    进一步地,所述确定单元还用于当接收到任意一个数据库对应的写操作事务失败的信息时,确定所述写操作事务操作失败;如图5所示,所述装置还包括:回滚单元36,用于根据所记录的所述各个数据库中在所述存储位置上将要操作数据的第一状态,将写操作事务成功的数据库中的数据回滚至所述第一状态。

    进一步地,所确定单元还用于当接收到任意一个数据库反馈的预写操作无法完成的信息时,确定所述写操作事务操作失败;或者当接收到所有数据库反馈的预写操作完成的信息并向所述各个数据库提交所述写操作事务之后,接收到任意一个数据库反馈的写操作事务无法完成的信息时,确定所述写操作事务操作失败。

    进一步地,如图6所示,所述装置还包括:提示单元37,用于提示写操作事务失败的数据库存在故障。

    进一步地,所述写操作事务中包括操作类型,所述操作类型包括新增数据、更新数据或删除数据中的任意一种。

    本装置的操作过程,参见上述数据同步方法的实现过程。

    所述数据同步装置包括处理器和存储器,上述接收单元、处理单元、确定单元、查找单元、记录单元、回滚单元和提示单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

    处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来保证各个数据库中存储的数据保持同步。

    相应的,本发明实施例还提供一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如上述实施例所述的数据同步方法。

    相应的,图7是本发明实施例提供的一种设备的结构示意图,如图7所示,所述设备70包括至少一个处理器701、以及与所述处理器701连接的至少一个存储器702、总线703;其中,所述处理器与所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行上述实施例所述的数据同步方法。

    本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述数据同步方法。

    本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:接收写操作事务;针对各个数据库执行所述写操作事务;当接收到所有数据库对应的写操作事务成功的信息时,记录并反馈所述写操作事务操作成功。

    进一步地,所述针对各个数据库执行所述写操作事务包括:针对所述各个数据库执行所述写操作事务的预写操作;当接收到所有数据库反馈的预写操作完成的信息时,向所述各个数据库提交所述写操作事务。

    进一步地,所述针对各个数据库执行所述写操作事务之前,所述方法还包括:根据所述写操作事务中指示的将要操作数据所在记录的标识,在所述各个数据库的预设列表中查找所述标识对应的存储位置,并记录所述各个数据库中在所述存储位置上将要操作数据的第一状态。

    进一步地,在所述针对各个数据库执行所述写操作事务之后,所述方法还包括:当接收到任意一个数据库对应的写操作事务失败的信息时,确定所述写操作事务操作失败;根据所记录的所述各个数据库中在所述存储位置上将要操作数据的第一状态,将写操作事务成功的数据库中的数据回滚至所述第一状态。

    进一步地,所述当接收到任意一个数据库对应的写操作事务失败的信息时,确定所述写操作事务操作失败包括:当接收到任意一个数据库反馈的预写操作无法完成的信息时,确定所述写操作事务操作失败;或者当接收到所有数据库反馈的预写操作完成的信息并向所述各个数据库提交所述写操作事务之后,接收到任意一个数据库反馈的写操作事务无法完成的信息时,确定所述写操作事务操作失败。

    进一步地,在所述接收到任意一个数据库对应的写操作事务失败的信息之后,所述方法还包括:提示写操作事务失败的数据库存在故障。

    进一步地,所所述写操作事务中包括操作类型,所述操作类型包括新增数据、更新数据或删除数据。

    本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

    在一个典型的配置中,设备包括一个或多个处理器(cpu)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。

    存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。

    计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

    还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。

    本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

    以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。


    技术特征:

    1.一种数据同步方法,其特征在于,包括:

    接收写操作事务;

    针对各个数据库执行所述写操作事务;

    当接收到所有数据库对应的写操作事务成功的信息时,记录并反馈所述写操作事务操作成功。

    2.根据权利要求1所述的数据同步方法,其特征在于,所述针对各个数据库执行所述写操作事务包括:

    针对所述各个数据库执行所述写操作事务的预写操作;

    当接收到所有数据库反馈的预写操作完成的信息时,向所述各个数据库提交所述写操作事务。

    3.根据权利要求2所述的数据同步方法,其特征在于,在所述针对各个数据库执行所述写操作事务之前,所述方法还包括:

    根据所述写操作事务中指示的将要操作数据所在记录的标识,在所述各个数据库的预设列表中查找所述标识对应的存储位置,并记录所述各个数据库中在所述存储位置上将要操作数据的第一状态。

    4.根据权利要求3所述的数据同步方法,其特征在于,在所述针对各个数据库执行所述写操作事务之后,所述方法还包括:

    当接收到任意一个数据库对应的写操作事务失败的信息时,确定所述写操作事务操作失败;

    根据所记录的所述各个数据库中在所述存储位置上将要操作数据的第一状态,将写操作事务成功的数据库中的数据回滚至所述第一状态。

    5.根据权利要求4所述的数据同步方法,其特征在于,所述当接收到任意一个数据库对应的写操作事务失败的信息时,确定所述写操作事务操作失败包括:

    当接收到任意一个数据库反馈的预写操作无法完成的信息时,确定所述写操作事务操作失败;或者

    当接收到所有数据库反馈的预写操作完成的信息并向所述各个数据库提交所述写操作事务之后,接收到任意一个数据库反馈的写操作事务无法完成的信息时,确定所述写操作事务操作失败。

    6.根据权利要求4所述的数据同步方法,其特征在于,在所述接收到任意一个数据库对应的写操作事务失败的信息之后,所述方法还包括:

    提示写操作事务失败的数据库存在故障。

    7.根据权利要求1所述的数据同步方法,其特征在于,所述写操作事务中包括操作类型,所述操作类型包括新增数据、更新数据或删除数据。

    8.一种数据同步装置,其特征在于,包括:

    接收单元,用于接收写操作事务;

    处理单元,用于针对各个数据库执行所述写操作事务;

    确定单元,用于当所述接收单元接收到所有数据库对应的写操作事务成功的信息时,记录并反馈所述写操作事务操作成功。

    9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如权利要求1~7中任一项所述的数据同步方法。

    10.一种设备,其特征在于,所述设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器与所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行上述权利要求1~7中任一项所述的数据同步方法。

    技术总结
    本发明涉及数据库技术领域,公开了一种数据同步方法、装置、存储介质及设备,解决了现有技术中跨机房数据库数据一致性问题。所述方法包括:接收写操作事务;针对各个数据库执行所述写操作事务;当接收到所有数据库对应的写操作事务成功的信息时,记录并反馈所述写操作事务操作成功。本发明实施例适用于数据库中的数据存储过程。

    技术研发人员:韩学明
    受保护的技术使用者:北京国双科技有限公司
    技术研发日:2019.09.12
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-21911.html

    最新回复(0)