一种数据迁移方法、装置、电子设备及可读存储介质与流程

文档序号:15518039发布日期:2018-09-25 18:48阅读:171来源:国知局
本发明涉及数据迁移
技术领域
:,特别是涉及一种数据迁移方法、装置、电子设备及可读存储介质。
背景技术
::数据库可以把大量需要共享的数据按照一定的方式组织并存储,以便快速方便地管理与维护数据。在使用数据库的过程中,有时需要将一个数据库(即源数据库)中的数据迁移到另外一个数据库(即目标数据库)中。例如,当需要对源数据库的服务器硬件进行升级时,需要将源数据库中的数据迁移到新的服务器硬件的目标数据库中。数据库中的数据通常以表的形式进行存储,可以分为事务表和非事务表。事务表用于存储对安全性和一致性要求比较高的数据,非事务表可以用于存储其他数据。例如,银行服务器的数据库中可以存储交易记录、储户的余额和服务器的运行记录数据等,其中,事务表中可以存储交易记录和储户的余额,非事务表可以存储服务器的运行记录数据。数据库通常会包含多个事务表和多个非事务表。现有技术中,在迁移各非事务表时,可以同时迁移一个或多个非事务表,当前将要进行迁移的非事务表可以称为待迁移事务表。对于各事务表,也可以同时迁移一个或多个。为了避免因各非事务表在数据迁移过程中被修改,而导致目标数据库中的各非事务表与源数据库中的各非事务表不相同,出现数据不一致的情况。在进行数据迁移之前,需要对源数据库中的数据加读锁(即只执行读指令,不执行写指令)。然后将各非事务表迁移至目标数据库,完成各非事务表的迁移后,释放该读锁,再将各事务表迁移至目标数据库,以缩短数据迁移过程中,源数据库中的数据处于加读锁状态的时间。然而,现有技术在对含有大量非事务表的数据进行迁移时,源数据库中的数据会长期处于加读锁状态,导致源数据库长时间不可用。技术实现要素:本发明实施例的目的在于提供一种数据迁移方法、装置、电子设备及计算机可读存储介质,可以避免数据迁移过程中,源数据库长时间不可用。具体技术方案如下:第一方面,为了达到上述目的,本发明实施例公开了一种数据迁移方法,上述方法包括:在源数据库包含的各非事务表中,获取当前待迁移的目标非事务表;对上述目标非事务表加读锁,将上述目标非事务表迁移至目标数据库;释放上述目标非事务表的读锁;当上述各非事务表迁移完成后,获取上述目标非事务表对应的第一日志记录,其中,上述第一日志记录是上述源数据库的日志记录中从对上述目标非事务表加读锁到上述各非事务表迁移完成时的修改操作日志;根据上述第一日志记录,对上述目标数据库中的上述目标非事务表执行修改操作。可选的,上述根据上述第一日志记录,对上述目标数据库中的上述目标非事务表执行修改操作,包括:在上述第一日志记录中,获取上述目标非事务表对应的目标修改操作记录;根据上述目标修改操作记录,对上述目标数据库中的上述目标非事务表执行修改操作。可选的,上述方法还包括:获取上述源数据库中的各事务表;将上述各事务表迁移至上述目标数据库。可选的,在上述将上述各事务表迁移至上述目标数据库之后,上述方法还包括:获取上述各事务表对应的第二日志记录,其中,上述第二日志记录是上述源数据库的日志记录中从对上述各事务表进行迁移开始到上述各事务表迁移完成时的修改操作日志;根据上述第二日志记录,对上述目标数据库中的上述各事务表执行修改操作。可选的,在上述各非事务表和上述各事务表迁移完成后,上述方法还包括:当达到预设的增量迁移条件时,获取第三日志记录,其中,上述第三日志记录是上述源数据库的日志记录中从上述各非事务表和上述各事务表迁移完成到当前时间的修改操作日志;根据上述第三日志记录,对迁移至上述目标数据库的上述各非事务表和上述各事务表执行修改操作。可选的,上述根据上述第三日志记录,对迁移至上述目标数据库的上述各非事务表和上述各事务表执行修改操作,包括:如果上述第三日志记录中的修改操作是行格式,根据上述第三日志记录确定上述目标数据库中需要进行修改的目标行;根据上述第三日志记录,对上述目标行执行修改操作。可选的,上述根据上述第三日志记录,对迁移至上述目标数据库的上述各非事务表和上述各事务表执行修改操作,包括:如果上述第三日志记录中的修改操作不是行格式,根据上述第三日志记录确定上述目标数据库中需要进行修改的目标表;根据上述第三日志记录,对上述目标表执行修改操作。第二方面,为达到上述目的,本发明实施例公开了一种数据迁移装置,上述装置包括:第一获取模块,用于在源数据库包含的各非事务表中,获取当前待迁移的目标非事务表;第一迁移模块,用于对上述目标非事务表加读锁,将上述目标非事务表迁移至目标数据库;释放模块,用于释放上述目标非事务表的读锁;第二获取模块,用于当上述各非事务表迁移完成后,获取上述目标非事务表对应的第一日志记录,其中,上述第一日志记录是上述源数据库的日志记录中从对上述目标非事务表加读锁到上述各非事务表迁移完成时的修改操作日志;第一修改模块,用于根据上述第一日志记录,对上述目标数据库中的上述目标非事务表执行修改操作。可选的,上述第一修改模块包括:获取子模块,用于在上述第一日志记录中,获取上述目标非事务表对应的目标修改操作记录;第一修改子模块,用于根据上述目标修改操作记录,对上述目标数据库中的上述目标非事务表执行修改操作。可选的,上述装置还包括:第三获取模块,用于获取上述源数据库中的各事务表;第二迁移模块,用于将上述各事务表迁移至上述目标数据库。可选的,上述装置还包括:第四获取模块,用于获取上述各事务表对应的第二日志记录,其中,上述第二日志记录是上述源数据库的日志记录中从对上述各事务表进行迁移开始到上述各事务表迁移完成时的修改操作日志;第二修改模块,用于根据上述第二日志记录,对上述目标数据库中的上述各事务表执行修改操作。可选的,上述装置还包括:第五获取模块,用于当达到预设的增量迁移条件时,获取第三日志记录,其中,上述第三日志记录是上述源数据库的日志记录中从上述各非事务表和上述各事务表迁移完成到当前时间的修改操作日志;第三修改模块,用于根据上述第三日志记录,对迁移至上述目标数据库的上述各非事务表和上述各事务表执行修改操作。可选的,上述第三修改模块包括:第一确定子模块,用于如果上述第三日志记录中的修改操作是行格式,根据上述第三日志记录确定上述目标数据库中需要进行修改的目标行;第二修改子模块,用于根据上述第三日志记录,对上述目标行执行修改操作。可选的,上述第三修改模块包括:第二确定子模块,用于如果上述第三日志记录中的修改操作不是行格式,根据上述第三日志记录确定上述目标数据库中需要进行修改的目标表;第三修改子模块,用于根据上述第三日志记录,对上述目标表执行修改操作。在本发明实施的另一方面,为了达到上述目的,本发明实施例还公开了一种电子设备,上述电子设备包括处理器和存储器;上述存储器,用于存放计算机程序;上述处理器,用于执行上述存储器上所存放的程序时,实现如上述第一方面所述的数据迁移方法。在本发明实施的又一方面,还提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有指令,当其在计算机上运行时,实现如上述第一方面上述的数据迁移方法。在本发明实施的又一方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的数据迁移方法。本发明实施例提供的一种数据迁移方法、装置、电子设备及计算机可读存储介质,针对每一待迁移目标非事务表,首先对该目标待迁移非事务表加读锁,然后迁移至目标数据库,释放该读锁;各非事务表迁移完成后,根据第一目标日志,修改迁移至目标数据库的各非事务表。本发明实施例提供的数据迁移方法,只对源数据库中当前待迁移的非事务表加读锁,当该非事务表迁移完成后,即释放该读锁。迁移该非事务表的过程中,不会影响对源数据库中其他数据的访问,可以避免源数据库长时间不可用。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种数据迁移方法的流程示意图;图2为本发明实施例提供的第二种数据迁移方法的流程示意图;图3为本发明实施例提供的一种事务表迁移方法的流程示意图;图4为本发明实施例提供的第二种事务表迁移方法的流程示意图;图5为本发明实施例提供的一种同步修改目标数据中的数据方法的流程示意图;图6为本发明实施例提供的第二种同步修改目标数据中的数据方法的流程示意图;图7为本发明实施例提供的第三种同步修改目标数据中的数据方法的流程示意图;图8为本发明实施例提供的一种数据迁移装置的结构示意图;图9为本发明实施例提供的第二种数据迁移装置的结构示意图;图10为本发明实施例提供的一种事务表迁移装置的结构示意图;图11为本发明实施例提供的第二种事务表迁移装置的结构示意图;图12为本发明实施例提供的一种同步修改目标数据中的数据装置的结构示意图;图13为本发明实施例提供的第二种同步修改目标数据中的数据装置的结构示意图;图14为本发明实施例提供的第三种同步修改目标数据中的数据装置的结构示意图;图15为本发明实施例提供的一种电子设备的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明申请提供了一种数据迁移方法、装置、电子设备及计算机可读存储介质。上述方法可以应用于终端,也可以应用于服务器。本发明以应用于服务器为例进行说明,其他情况与之类似。应用于上述方法的服务器(以下称为目标服务器)针对每一待迁移目标非事务表,首先对该目标待迁移非事务表加读锁,然后迁移至目标数据库,释放该读锁;目标服务器完成非事务表迁移后,根据第一目标日志,修改迁移至目标数据库的各非事务表。目标服务器只需对当前待迁移的非事务表加读锁,当该非事务表迁移完成后,即释放该读锁。迁移该非事务表的过程中,不会影响对源数据库中其他数据的访问,可以避免源数据库长时间不可用。目标服务器的数据库通常会包含多个非事务表和多个事务表。目标服务器通常会将对安全性和一致性要求比较高的数据存储在各事务表中,将其他数据存储在各非事务表中。例如,目标服务器可以为银行的服务器,目标服务器可以将交易记录、储户的余额存储在各事务表中,可以将目标服务器的运行记录数据存储在各非事务表中。其中,事务(transaction)是指作为单个逻辑工作单元执行的一系列操作。事务表支持事务操作,而非事务表则不支持事务操作。目标服务器可以利用事务的隔离性,开启一事务来迁移事务表;而目标服务器在迁移非事务表时,需要对当前待迁移的非事务表加读锁。上述操作,可以保证目标服务器迁移到目标数据库中的事务表与源数据库中的事务表一致,迁移到目标数据库中的非事务表与源数据库中的非事务表一致。下面再通过具体实施例对本发明进行详细介绍。参见图1,图1为本发明实施例提供的一种数据迁移方法的流程示意图,包括:s101:在源数据库包含的各非事务表中,获取当前待迁移的目标非事务表。当需要对源数据库的数据进行备份或者目标服务器需要进行升级时,目标服务器可以将源数据库中的数据迁移到目标数据库中。其中,源数据库可以是目标服务器中的数据库,目标数据库可以是目标服务器中的数据库,也可以是其他服务器中的数据库。源数据库中的各非事务表,可以用于存储源数据库中除对安全性和一致性要求较高的数据以外的数据。例如,银行服务器的数据库中的非事务表可以用于存储服务器运行记录数据。源数据库中通常会有多个非事务表。目标服务器在迁移各非事务表时,可以每次迁移一个非事务表,也可以同时迁移多个非事务表。即将要迁移的非事务表称为目标非事务表。一种实现方式中,目标服务器可以接收用户发送的迁移指令,该迁移指令可以包含用户需要迁移的各非事务表的名称。目标服务器接收到该迁移指令后,可以解析该迁移指令,获得需要迁移的各非事务表的名称,根据解析获得的各非事务表的名称,可以在源数据库中进行搜索,获得需要进行迁移的各非事务表。s102:对目标非事务表加读锁,将目标非事务表迁移至目标数据库。由于目标服务器在迁移各非事务表时,可以每次只迁移一个非事务表,也可以同时迁移多个非事务表,相应的,目标非事务表可以是一个也可以是多个。目标服务器可以每次对一个目标非事务表加读锁,也可以同时对多个目标非事务表分别加读锁,从而可以实现对多个非事务表的并行处理,提高数据迁移的效率。具体加读锁的情况可以根据目标服务器的处理能力确定。对目标非事务表加读锁后,目标服务器对于该目标非事务表只能进行读操作,而不能进行写操作(包括在目标非事务表中插入数据和更新目标非事务表中的已有数据),基于此,可以保证在迁移该目标非事务表的过程中,源数据库中的该目标非事务表不会被修改。目标服务器只对目标非事务表加读锁,使得在目标非事务表迁移过程中,并不会影响对其他非事务表的读和/或写操作,可以避免源数据库长时间不可用。一种实现方式中,目标服务器可以对该目标非事务表执行locktable指令,实现对该目标非事务表加读锁。s103:释放目标非事务表的读锁。对于一个目标非事务表,目标服务器在很短时间内就可以完成其迁移。目标服务器完成该目标非事务表的迁移后,释放该目标非事务表的读锁,使得源数据库中的该目标非事务表只在迁移的过程中处于加读锁状态。在该目标非事务表迁移过程以外的时间,目标服务器都可以对该目标非事务表执行访问操作。一种实现方式中,目标服务器可以对该目标非事务表执行unlocktables指令,释放该目标非事务表的读锁。s104:当各非事务表迁移完成后,获取目标非事务表对应的第一日志记录。其中,上述第一日志记录是源数据库的日志记录中从对目标非事务表加读锁到各非事务表迁移完成时的修改操作日志。一种实现方式中,上述日志记录可以是源数据库中的二进制日志binlog的日志记录。binlog可以记录目标服务器对源数据库执行的所有ddl(datadefinitionlanguage,数据库模式定义语言)和dml(datamanipulationlanguage,数据库操纵语言)语句的修改操作。具体的,目标服务器可以将每次对源数据库中的非事务表进行修改的操作记录在binlog中。对某一目标非事务表加读锁后,目标服务器可以获取此时binlog中记录的最后一条修改操作在binlog中的第一位置。完成所有非事务表迁移后,目标服务器可以获取此时binlog中记录的最后一条修改操作在binlog中的第二位置。第一位置和第二位置之间的操作记录即是该目标非事务表的第一日志记录。由于各目标非事务表开始迁移的时间可能不相同,导致目标服务器对各目标非事务表加读锁的时间也可能不相同。因此,各目标非事务表对应的第一日志记录也可能不相同。示例性的,源数据库中可以包含非事务表a、非事务表b和非事务表c。目标服务器在迁移各非事务表时,可以按照非事务表a、非事务表b、非事务表c的顺序进行迁移。其中,对非事务表a加读锁的时间为9点,对非事务表b加读锁的时间为10点,对非事务表c加读锁的时间为11点,完成所有的非事务表迁移的时间为12点。可以得到,非事务表a对应的第一日志记录可以为binlog的9点到12点的日志记录,非事务表b对应的第一日志记录可以为binlog的10点到12点的日志记录,非事务表c对应的第一日志记录可以为binlog的11点到12点的日志记录。s105:根据第一日志记录,对目标数据库中的目标非事务表执行修改操作。一种实现方式中,目标服务器可以根据源数据库中binlog的日志记录,获得针对每一目标非事务表的第一日志记录。目标服务器可以按照第一日志记录的修改操作的记录时间的先后顺序,依次读取修改操作,并根据读取到的修改操作对目标数据库中的目标非事务表进行修改。基于上述处理,使得迁移至目标数据库的各非事务表与迁移完成时源数据库中各非事务表相同,保证非事务表的一致性。优选的,在对目标数据库中的各非事务表进行修改时,目标服务器可以同时对目标数据库中的多个非事务表进行修改,以提高修改的效率。由上述可见,本发明实施提供的数据迁移方法,只对当前待迁移的非事务表加读锁,当该非事务表迁移完成后,释放该读锁,可以避免源数据库长时间不可用。可选的,目标服务器可以获取第一日志记录中针对该目标非事务表的修改操作记录,对该目标非事务表进行修改。相应的,参见图2,图2为本发明实施例提供的第二种数据迁移方法的流程示意图。其中,根据第一日志记录,对目标数据库中的目标非事务表进行修改(s105),包括:s1051:在第一日志记录中,获取目标非事务表对应的目标修改操作记录。每一目标非事务表的第一日志记录为目标服务器对源数据库的所有数据的修改操作。一种实现方式中,目标服务器可以根据预先存储的过滤算法,对该第一日志记录进行过滤,获取该第一日志记录中对该目标非事务表的目标修改操作记录。其中,上述过滤算法可以是正则匹配算法,当然也可以利用其他算法对第一日志记录进行过滤,本发明申请对此不限定。s1052:根据目标修改操作记录,对目标数据库中的目标非事务表执行修改操作。一种实现方式中,目标服务器在各非事务表迁移完成后,可以按照目标修改操作记录中修改操作的记录时间的先后顺序,依次读取修改操作,跟根据读取到的修改操作,开启并行线程对各非事务表执行修改操作。基于上述处理,使得目标数据库中的各非事务表与迁移完成时源数据库中的各非事务表相同,保证非事务表的一致性。在本发明的一个具体实施例中,目标服务器还可以迁移数据库中的事务表。参见图3,图3为本发明实施例提供的一种事务表迁移方法流程示意图,具体的处理过程可以为:s301:获取源数据库中的各事务表。源数据库中的各事务表主要用于存储源数据库中对安全性和一致性要求较高的数据,例如,银行服务器的数据库中的事务表可以存储交易记录和储户的余额等数据。源数据库中通常会有多个事务表。一种实现方式中,目标服务器可以接收用户发送的迁移指令,该迁移指令可以包含用户需要迁移的各事务表的名称和用户需要迁移的各事务表的时间。例如,迁移指令中包含的时间为9点,目标服务器接收到该迁移指令后,可以解析该迁移指令,获得需要迁移的各事务表的名称。根据解析获得的各事务表的名称,可以在源数据库中进行搜索,确定需要进行迁移的各事务表,获取9点时源数据库中各事务表的状态,开启事务以该状态迁移各事务表,使得迁移到目标数据库的各事务表与9点时源数据库中的各事务表相同。目标服务器接收到的迁移指令不包含用户需要迁移的各事务表的时间,在确定需要进行迁移的各事务表后,可以获取当前时间源数据库中各事务表的状态,开启事务以该状态迁移各事务表,使得迁移到目标数据库的各事务表与目标服务器接收到该迁移指令时刻源数据库中的各事务表相同。s302:将各事务表迁移至目标数据库。一种实现方式中,根据事务的隔离性,目标服务器在迁移各事务表时,可以将对各事务表的迁移操作作为一个单独的事务,该事务可以获得各事务表在迁移开始时的状态,并以该状态迁移各事务表,使得迁移到目标数据库的各事务表与迁移开始时源数据库中各事务表相同,保证事务表的一致性。目标服务器在迁移各事务表时,可以每次迁移一个事务表,也可以同时迁移多个事务表。由上述可见,在进行数据迁移时,可以同时对源数据库中各事务表进行迁移,保证迁移到目标数据库中的数据的完整性。可选的,在完成各事务表的迁移后,可以对目标数据库中的各事务表进行修改,使其与迁移完成时源数据库中的各事务表相同。参见图4,图4为本发明实施例提供的第二种事务表迁移方法的流程示意图,包括:s401:获取源数据库中的各事务表。s402:将各事务表迁移至目标数据库。其中,s401与上述实施例的s301相同,s402与上述实施例的s302相同,在此不再一一赘述。s403:获取各事务表对应的第二日志记录。其中,第二日志记录是源数据库的日志记录中从对各事务表进行迁移开始到各事务表迁移完成时的修改操作日志。一种实现方式中,目标服务器可以将每次对源数据库中的事务表进行修改的操作记录在binlog中。对各事务表加读锁后,目标服务器可以获取此时binlog中记录的最后一条修改操作在binlog中的第三位置。完成所有事务表迁移后,目标服务器可以获取此时binlog中记录的最后一条修改操作在binlog中的第四位置。第三位置和第四位置之间的操作记录即是各事务表的第二日志记录。s404:根据第二日志记录,对目标数据库中的各事务表执行修改操作。一种实现方式中,目标服务器在各事务表迁移完成后,可以根据预先存储的过滤算法,对第二日志记录进行过滤,获取第二日志记录中对各事务表的修改操作记录。目标服务器可以按照获取的修改操作的记录时间的先后顺序,依次读取修改操作,并根据读取到的修改操作对目标数据库中的各事务表进行修改。基于上述处理,使得目标数据库中的各事务表与迁移完成时源数据库中的各事务表相同。优选的,在对目标数据库中的各事务表进行修改时,目标服务器可以同时对目标数据库中的多个事务表进行修改,以提高修改的效率。其中,上述过滤算法可以是正则匹配算法,当然也可以利用其他算法对第二日志记录进行过滤,本发明申请对此并不限定。在实际操作中,目标服务器并不限制完成各非事务表的迁移和完成各事务表的迁移的先后顺序。通常情况下,如果目标服务器首先完成各非事务表的迁移,则需要将目标数据库中的各非事务表修改为完成各事务表时刻的状态;如果目标服务器首先完成各事务表的迁移,则需要将目标数据库中的各事务表修改为完成各非事务表时刻的状态。由上述可见,目标服务器完成各事务表的迁移后,可以对目标数据库中的各事务表执行修改操作,使目标数据库中的各事务表与各非事务表保持为同一时刻的状态。可选的,在完成目标数据库中各非事务表和各事务表的修改后,当目标服务器修改源数据库中的数据时,可以同步修改目标数据库中的数据(各非事务表和各事务表)。相应的,参见图5,图5为本发明实施例提供的一种同步修改目标数据中的数据方法的流程示意图,包括:s501:当达到预设的增量迁移条件时,获取第三日志记录。其中,第三日志记录是源数据库的日志记录中从各非事务表和各事务表迁移完成到当前时间的修改操作日志。预设的增量迁移条件可以是根据业务需求预先设定的,例如,目标服务器可以在预先设定的增量数据迁移时间点,对目标数据库中的数据库进行同步修改,也可以在接收到对源数据库中的数据进行修改的指令后,对目标数据库中的数据进行同步修改。一种实现方式中,目标服务器可以将每次对源数据库中的非事务表和/或事务表进行修改的操作记录在binlog中。当各非事务表和各事务表迁移时,目标服务器可以获取此时binlog中记录的最后一条修改操作在binlog中的第五位置。当达到预设的增量迁移条件时,目标服务器可以获取此时binlog中记录的最后一条修改操作在binlog中的第六位置。第五位置和第六位置之间的操作记录即是第三日志记录。s502:根据第三日志记录,对迁移至目标数据库的各非事务表和各事务表执行修改操作。一种实现方式中,目标服务器可以按照第三日志记录的修改操作的记录时间的先后顺序,依次读取修改操作,并根据读取到的修改操作对目标数据库中的各非事务表和各事务表进行修改。由上述可见,目标服务器可以根据业务需求,进行增量数据迁移,使目标数据库和源数据库在某一时间点保持数据一致。优选的,在对目标数据库中的各事务表和各非事务表进行修改时,目标服务器可以同时对目标数据库中的多个事务表或多个非事务表进行修改,以提高修改的效率。可选的,目标服务器可以根据第三日志记录中的修改操作的格式,采取不同的方式同步修改目标数据库中的数据。相应的,参见图6,图6为本发明实施例提供的第二种同步修改目标数据中的数据方法的流程示意图,包括:s601:获取第三日志记录。与上述实施例中的s501相同,在此不再赘述。s602:如果第三日志记录中的修改操作是行格式,根据第三日志记录确定目标数据库中需要进行修改的目标行。第三日志记录中的修改操作是行格式,即第三日志记录中记录的是目标服务器对源数据库中的各事务表和各非事务表中每一行数据修改的细节(包括哪一行数据被修改,及该行数据被修改后的值)。目标服务器可以根据第三日志记录,确定需要对目标数据库中进行修改的行(即目标行)。其中,目标行可以是事务表中的行,也可以是非事务表中的行。s603:根据第三日志记录,对目标行执行修改操作。一种实现方式中,目标服务器可以按照第三日志记录的每一行数据修改的细节的记录时间的先后顺序,依次读取修改细节,并根据读取到的修改细节,开启并行线程对目标行执行修改操作。由上述可见,当第三日志记录中的修改操作是行格式,目标服务器可以开启并行线程对目标行执行修改操作,提高同步修改目标数据库的效率。相应的,参见图7,图7为本发明实施例提供的第三种同步修改目标数据中的数据方法的流程示意图,包括:s701:获取第三日志记录。与上述实施例中的s501相同,在此不再赘述。s702:如果第三日志记录中的修改操作不是行格式,根据第三日志记录确定目标数据库中需要进行修改的目标表。一种实现方式中,第三日志记录中的修改操作可以是statement格式,即第三日志记录中记录的是目标服务器对源数据库执行的sql(structuredquerylanguage,结构化查询语言)语句,及每条sql语句在执行时的上下文信息。其中,每条sql语句可以包含该sql语句所修改的事务表和/或非事务表的名称,目标服务器可以根据上下文信息,保证在目标数据库中执行每一sql语句与在源数据库中执行该sql语句得到的结果相同。目标服务器可以根据第三日志记录,确定需要对目标数据库中需要进行修改的表(即目标表)。其中,目标表可以是事务表中,也可以是非事务表。s703:根据第三日志记录,对目标表执行修改操作。一种实现方式中,目标服务器可以按照第三日志记录记录的sql语句的记录时间的先后顺序,依次读取sql语句,并根据读取到的sql语句,开启并行线程对目标表执行修改操作,以提高修改目标表的效率。由上述可见,当第三日志记录中的修改操作不是行格式,目标服务器可以开启并行线程对目标表执行修改操作,提高同步修改目标数据库的效率。与上述方法实施对应,参见图8,图8为本发明实施例提供的一种数据迁移装置的结构示意图,包括:第一获取模块801,用于在源数据库包含的各非事务表中,获取当前待迁移的目标非事务表;第一迁移模块802,用于对上述目标非事务表加读锁,将上述目标非事务表迁移至目标数据库;释放模块803,用于释放上述目标非事务表的读锁;第二获取模块804,用于当上述各非事务表迁移完成后,获取上述目标非事务表对应的第一日志记录,其中,上述第一日志记录是上述源数据库的日志记录中从对上述目标非事务表加读锁到上述各非事务表迁移完成时的修改操作日志;第一修改模块805,用于根据上述第一日志记录,对上述目标数据库中的上述目标非事务表执行修改操作。在本发明的一个具体实施例中,参见图9,图9为本发明实施例提供的第二种数据迁移装置的结构示意图,其中,第一修改模块805,包括:获取子模块8051,用于在上述第一日志记录中,获取上述目标非事务表对应的目标修改操作记录;第一修改子模块8052,用于根据上述目标修改操作记录,对上述目标数据库中的上述目标非事务表执行修改操作。在本发明的一个具体实施例中,参见图10,图10为本发明实施例提供的一种事务表迁移装置的结构示意图,包括:第三获取模块1001,用于获取上述源数据库中的各事务表;第二迁移模块1002,用于将上述各事务表迁移至上述目标数据库。在本发明的一个具体实施例中,参见图11,图11为本发明实施例提供的第二种事务表迁移装置的结构示意图,还包括:第四获取模块1003,用于获取上述各事务表对应的第二日志记录,其中,上述第二日志记录是上述源数据库的日志记录中从对上述各事务表进行迁移开始到上述各事务表迁移完成时的修改操作日志;第二修改模块1004,用于根据上述第二日志记录,对上述目标数据库中的上述各事务表执行修改操作。在本发明的一个具体实施例中,参见图12,图12为本发明实施例提供的一种同步修改目标数据中的数据装置的结构示意图,包括:第五获取模块1201,用于当达到预设的增量迁移条件时,获取第三日志记录,其中,上述第三日志记录是上述源数据库的日志记录中从上述各非事务表和上述各事务表迁移完成到当前时间的修改操作日志;第三修改模块1202,用于根据上述第三日志记录,对迁移至上述目标数据库的上述各非事务表和上述各事务表执行修改操作。在本发明的一个具体实施例中,参见图13,图13为本发明实施例提供的第二种同步修改目标数据中的数据装置的结构示意图,其中,第三修改模块1202,包括:第一确定子模块12021,用于如果上述第三日志记录中的修改操作是行格式,根据上述第三日志记录确定上述目标数据库中需要进行修改的目标行;第二修改子模块12022,用于根据上述第三日志记录,对上述目标行执行修改操作。在本发明的一个具体实施例中,参见图14,图14为本发明实施例提供的第三种同步修改目标数据中的数据装置的结构示意图,其中,第三修改模块1202,包括:第二确定子模块12023,用于如果上述第三日志记录中的修改操作不是行格式,根据上述第三日志记录确定上述目标数据库中需要进行修改的目标表;第三修改子模块12024,用于根据上述第三日志记录,对上述目标表执行修改操作。由上述可见,利用本发明实施例提供的数据迁移装置,可以只对源数据库中当前待迁移的非事务表加读锁,当该非事务表迁移完成后,即释放该读锁。迁移该非事务表的过程中,不会影响对源数据库中其他数据的访问,可以避免源数据库长时间不可用。本发明实施例还提供了一种电子设备,如图15所示,包括存储器1501和处理器1502,其中,存储器1501,用于存放计算机程序;处理器1502,用于执行存储器1501上所存放的程序时,实现如下步骤:在源数据库包含的各非事务表中,获取当前待迁移的目标非事务表;对上述目标非事务表加读锁,将上述目标非事务表迁移至目标数据库;释放上述目标非事务表的读锁;当上述各非事务表迁移完成后,获取上述目标非事务表对应的第一日志记录,其中,上述第一日志记录是上述源数据库的日志记录中从对上述目标非事务表加读锁到上述各非事务表迁移完成时的修改操作日志;根据上述第一日志记录,对上述目标数据库中的上述目标非事务表执行修改操作。关于该方法各个步骤的具体实现以及相关解释内容可以参见前述方法实施例部分,在此不做赘述。上述电子设备可以具备有实现上述电子设备与其他设备之间通信的通信接口。上述的处理器1502,通信接口,存储器1501通过通信总线完成相互间的通信,此处所提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。存储器1501可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。上述的处理器1502可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。本发明实施例提供的电子设备,在进行数据迁移时,只对源数据库中当前待迁移的非事务表加读锁,当该非事务表迁移完成后,即释放该读锁。迁移该非事务表的过程中,不会影响对源数据库中其他数据的访问,可以避免源数据库长时间不可用。本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行本发明实施例提供的数据迁移方法。具体的,上述数据迁移方法,包括:在源数据库包含的各非事务表中,获取当前待迁移的目标非事务表;对上述目标非事务表加读锁,将上述目标非事务表迁移至目标数据库;释放上述目标非事务表的读锁;当上述各非事务表迁移完成后,获取上述目标非事务表对应的第一日志记录,其中,上述第一日志记录是上述源数据库的日志记录中从对上述目标非事务表加读锁到上述各非事务表迁移完成时的修改操作日志;根据上述第一日志记录,对上述目标数据库中的上述目标非事务表执行修改操作。需要说明的是,上述数据迁移方法的其他实现方式与前述方法实施例部分相同,这里不再赘述。通过运行本发明实施例提供的计算机可读存储介质中存储的指令,在进行数据迁移时,只对源数据库中当前待迁移的非事务表加读锁,当该非事务表迁移完成后,即释放该读锁。迁移该非事务表的过程中,不会影响对源数据库中其他数据的访问,可以避免源数据库长时间不可用。本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行本发明实施例提供的数据迁移方法。具体的,上述数据迁移方法,包括:在源数据库包含的各非事务表中,获取当前待迁移的目标非事务表;对上述目标非事务表加读锁,将上述目标非事务表迁移至目标数据库;释放上述目标非事务表的读锁;当上述各非事务表迁移完成后,获取上述目标非事务表对应的第一日志记录,其中,上述第一日志记录是上述源数据库的日志记录中从对上述目标非事务表加读锁到上述各非事务表迁移完成时的修改操作日志;根据上述第一日志记录,对上述目标数据库中的上述目标非事务表执行修改操作。需要说明的是,上述数据迁移方法的其他实现方式与前述方法实施例部分相同,这里不再赘述。通过运行本发明实施例提供的计算机程序产品,在进行数据迁移时,只对源数据库中当前待迁移的非事务表加读锁,当该非事务表迁移完成后,即释放该读锁。迁移该非事务表的过程中,不会影响对源数据库中其他数据的访问,可以避免源数据库长时间不可用。在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。上述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行上述计算机程序指令时,全部或部分地产生按照本发明实施例上述的流程或功能。上述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。上述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,上述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。上述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。上述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质、计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1