数据库间的数据迁移方法和系统的制作方法
【专利摘要】一种数据库间的数据迁移方法,包括以下步骤:读锁源数据库的从数据库,记录从数据库最后一次执行的更新事件在源数据库中对应的更新位置;将从数据库中存储的数据导出至目标数据库;读锁源数据库,获取所述更新位置之后源数据库产生的更新,将所述更新同步到所述目标数据库。上述方法中,只有在将上述更新位置之后源数据库产生的所有更新同步到目标数据库期间,业务不能访问数据库,而源数据库的大部分数据已经由从数据库导出至目标数据库,该期间更新的数据量较小,因而该期间花费的时间也较少,因此上述方法能减少业务中断访问数据库的时间。此外,还提供一种数据库间的数据迁移系统。
【专利说明】数据库间的数据迁移方法和系统
【【技术领域】】
[0001]本发明涉及数据库技术,特别地涉及一种数据库间的数据迁移方法和系统。
【【背景技术】】
[0002]数据库技术是信息系统的一项核心技术,目前常用的数据库类型有多种,例如,DB2、Oracle、SQL Server、mySQL等,各种类型的数据库的功能侧重点不同,都具体有自己的优势。例如,mySQL是一个小型关系型数据库管理系统。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,MySQL被广泛地应用在Internet上的中小型网站中。
[0003]为了保证数据的存储安全,主数据库一般都具有一个以上用于备份的从数据库。主从数据库的版本一般是相同的。以MySQL为例,MySQL支持单向、异步复制的主从备份。MySQL在进行主从备份时,一个服务器充当主服务器,一个或多个其它服务器充当从服务器。在主服务器上启用二进制日志,二进制日志用于跟踪所有对主数据库的更新(插入、删除、修改等等)。每个从服务器从主服务器接收记录在二进制日志中的更新。当一个从服务器连接主服务器时,从服务器通知主服务器自己在二进制日志中读取的最后一次更新的位置。从服务器接收该位置以后发生的任何更新,并在本机上执行相同的更新,然后封锁并等待主服务器通知新的更新。从服务器执行备份不会干扰主服务器,在备份过程中主服务器可以继续处理更新。
[0004]为了适应的新的需求,同种类型的数据库往往具有较多不同的版本。随着业务功能的变化,存储业务数据的数据库版本也需要变化,因此需要将业务访问的源数据库的数据迁移到目标数据库。
[0005]传统方法 在不同版本的数据库间进行数据迁移之前,必须先读锁数据库,即禁止写数据库,只提供读数据库的服务。在此期间,业务必须中断对数据库的访问。当源数据库的数据全部迁移到目标数据库以后,将业务访问的数据库配置修改为目标数据库,业务才能恢复对数据库的访问。然而,由于业务的历史数据比较庞大,将源数据库的数据迁移至目标数据库往往需要几个小时甚至几天的时间。
[0006]因此,为了将业务的访问从源数据库切换到与源数据库不同版本的目标数据库,业务对数据库的访问需要中断较长的时间。
【
【发明内容】
】
[0007]基于此,有必要提供一种能减少业务中断访问数据库时间的数据库间的数据迁移方法。
[0008]一种数据库间的数据迁移方法,包括以下步骤:
[0009]读锁源数据库的从数据库,记录从数据库最后一次执行的更新事件在源数据库中对应的更新位置;
[0010]将从数据库中存储的数据导出至目标数据库;
[0011]读锁源数据库,获取所述更新位置之后源数据库产生的更新,将所述更新同步到所述目标数据库。[0012]基于此,还有必要提供一种能减少业务中断访问数据库时间的数据库间的数据迁移系统。
[0013]一种数据库间的数据迁移系统,包括:
[0014]读写控制模块,用于读锁源数据库的从数据库;
[0015]位置记录模块,用于记录从数据库最后一次执行的更新事件在源数据库中对应的更新位置;
[0016]数据导出模块,用于将从数据库中存储的数据导出至目标数据库;
[0017]所述读写控制模块还用于读锁源数据库;
[0018]剩余更新同步模块,用于获取所述更新位置之后源数据库产生的更新,将所述更新同步到所述目标数据库。
[0019]上述数据库间的数据迁移方法和系统,在将源数据库的数据迁移至目标数据库时,读锁源数据库的从数据库,记录从数据库最后一次执行的更新事件在源数据库中对应的更新位置;将从数据库中存储的数据导出到目标数据库;读锁源数据库,获取上述更新位置之后源数据库产生的更新,将更新同步到目标数据库。上述方法和系统,在读锁源数据库之前,业务可以对源数据库进行访问,而在将所有更新同步到目标数据库之后,源数据库与目标数据库的数据是一致的,业务可切换到目标数据库访问数据,因而只有在将上述更新位置之后源数据库产生的所有更新同步到目标数据库期间,业务不能访问数据库,而源数据库的大部分数据已经由从数据库导出至目标数据库,该期间更新的数据量较小,因而该期间花费的时间也较少,因此上述方法和系统能减少业务中断访问数据库的时间。
【【专利附图】
【附图说明】】
[0020]图1为一个实施例中的数据库间的数据迁移方法的流程示意图;
[0021]图2为一个实施例中步骤S60的流程示意图;
[0022]图3为一个实施例中的数据库间的数据迁移方法的原理示意图;
[0023]图4为一个实施例中的数据库间的数据迁移系统的结构示意图;
[0024]图5为一个实施例中数据导出模块的结构示意图。
【【具体实施方式】】
[0025]如图1所示,在一个实施例中,一种数据库间的数据迁移方法,包括以下步骤:
[0026]步骤S20,读锁源数据库的从数据库,记录从数据库最后一次执行的更新事件在源数据库中对应的更新位置。
[0027]具体的,从数据库为源数据库的备份数据库。在步骤S20之前,可每间隔预设时间,获取源数据库的更新中尚未同步到从数据库的更新,在从数据库中执行相同的更新。因而,源数据库的大部分数据同步到了从数据库中。
[0028]具体的,更新事件在源数据库中对应的更新位置为该更新事件在记录了源数据库的更新的日志文件中的位置。进一步,更新事件在日志文件中的位置指的是更新事件位于该日志文件中的偏移量。源数据库一般具有多个日志文件,更新事件所在的日志文件的文件名以及更新事件在该日志文件中的偏移量即可唯一确定更新事件在源数据库中对应的更新位置。因此,步骤S20可记录更新事件所在的日志文件的文件名以及更新事件在该日志文件中的偏移量。
[0029]具体的,读锁从数据库,即给从数据库加读锁,禁止对从数据库进行写操作,只提供读从数据库的服务。
[0030]步骤S40,将从数据库中存储的数据导出到目标数据库。
[0031]在一个实施例中,步骤S40的具体过程包括:将从数据库存储的数据导出转存储为备份文件,备份文件中包含重构从数据库存储的数据的命令语句;在目标数据库中执行所述命令语句。
[0032]具体的,对于支持SQL语言的数据库,可将从数据库存储的数据导出转存储为包含SQL命令语句的备份文件,进一步的,在目标数据库中执行备份文件中的SQL命令语句以重构从数据库存储的数据。
[0033]步骤S60,读锁源数据库,获取更新位置之后源数据库产生的更新,将获取的更新同步到目标数据库。
[0034]具体的,可给源数据库加读锁,禁止对源数据库进行写操作,只提供读源数据库的服务。
[0035]具体的,在一个实施例中,可获取从数据库最后一次执行的更新事件所在的源数据库的日志文件中该更新事件之后的所有更新,将获取的更新同步到目标数据库。进一步的,将从数据库最后一次执行的更新事件所在的日志文件之后产生的所有源数据库的日志文件全量导入目标数据库,即获取从数据库最后一次执行的更新事件所在的日志文件之后产生的所有源数据库的日志文件中的更新,在目标数据库中执行与获取的更新相同的更新操作。
[0036]在一个实施例中,在步骤S60之后,上述数据库间的数据迁移方法还包括步骤:可将业务访问从源数据库切换到目标数据库。
[0037]具体的,可修改业务访问的数据库的相关配置,将源数据库的相关信息对应修改为目标数据库的相关信息,并启动对目标数据库的访问。
[0038]上述数据库间的数据迁移方法,在读锁源数据库之前,业务可以对源数据库进行访问,而在将所有更新同步到目标数据库之后,源数据库与目标数据库的数据是一致的,业务可切换到目标数据库访问数据,因而只有在将上述更新位置之后源数据库产生的所有更新同步到目标数据库期间,业务不能访问数据库,而源数据库的大部分数据已经由从数据库导出至目标数据库,该期间更新的数据量较小,因而该期间花费的时间也较少,因此上述方法和系统能减少业务中断访问数据库的时间。
[0039]如图2所示,在一个实施例中,步骤S60的具体过程包括:
[0040]步骤S602,按照更新产生顺序获取上述更新位置之后源数据库发生的更新,将获取的更新同步到目标数据库,并监测剩余的未同步到目标数据库的源数据库的更新量是否小于阈值,重复执行以上步骤,直到剩余的未同步到目标数据库的源数据库的更新量小于阈值。
[0041]具体的,更新记录在日志文件中,因此,可通过监测日志文件的总大小来监测日志文件中记录的更新量的大小。具体的,在一个实施例中,可监测记录剩余的未同步到所述目标数据库的源数据库的更新的至少一个日志文件的总大小是否小于预设值。[0042]具体的,在一个实施例中,当源数据库具有多个未同步到目标数据库的日志文件时,将最后一个日志文件以前的未同步到目标数据库中的日志文件导入目标数据库。当只有一个未同步到目标数据库的日志文件时,判断该日志文件的大小是否小于预设值,若否,则等待产生新的日志文件或执行产生新的日志文件的命令。产生新的日志文件后,重复执行上述步骤,直到只剩下一个未同步到目标数据库的日志文件且该日志文件的小于预设值。
[0043]步骤S604,若剩余的未同步到目标数据库的源数据库的更新量小于阈值,则读锁源数据库,获取剩余的未同步到所述目标数据库的源数据库的更新,将剩余的更新同步到目标数据库。
[0044]具体的,在一个实施例中,当只有一个未同步到目标数据库的日志文件且该日志文件的小于预设值时,则读锁源数据库。进一步的,将最后一个日志文件导入目标数据库。
[0045]本实施例中,不断地将源数据库中新产生且未同步到目标数据库中的更新同步到目标数据库,当剩余的未同步到目标数据库的源数据库的更新量小于阈值时,读锁源数据库,并将剩余的未同步的所有更新同步到目标数据库。由于本实施例在剩余更新量较小时再读锁源数据库,将少量的更新同步到目标数据库所花费的时间也较少,因此读锁源数据库的时间也较少,从而可进一步的缩小业务中断访问数据库的时间。
[0046]在一个实施例中,源数据库、从数据库和目标数据为MYSQL数据库。
[0047]在步骤S20之前,可启用用于跟踪所有对源数据库的更新(插入、删除、修改等等)的日志。
[0048]在一个实施例中,从数据库最后一次执行的更新事件在源数据库中对应的更新位置为该更新事件在源数据库的日志文件中的位置。步骤S20可记录更新事件所在的日志文件的文件名以及更新事件在该日志文件中的偏移量。
[0049]步骤S40的具体过程为:将从数据库存储的数据导出转存储为备份文件,备份文件中包含重构从数据库存储的数据的SQL命令;在目标数据库中执行SQL命令。
[0050]具体的,可通过mysqldump工具将从数据库存储的数据导出转存储为备份文件。mysqldump是MYSQL用于转存储数据库的实用程序,在此不再赘述。进一步的,可通过MYSQL客户端在目标数据库中执行SQL命令。
[0051]在一个实施例中,步骤S60的具体过程包括:读锁源数据库,获取源数据库的日志文件中上述更新位置之后的更新日志;将获取的更新日志中记录的更新转换为SQL命令;在目标数据库中执行转换而成的SQL命令。
[0052]具体的,可获取从数据库最后一次执行的更新事件所在的源数据库的日志文件,并获取该日志文件中该更新事件之后的所有更新日志;进一步的,获取该日志文件之后产生的日志文件中所记录的所有更新日志。
[0053]进一步的,可将获取的更新日志中记录的更新通过mysqlbinlog工具转换为SQL命令。mysqlbinlog工具为将MYSQL的日志文件转换为SQL命令的实用程序,在此不再赘述。进一步的,可通过MYSQL客户端在目标数据库中执行转换而成的SQL命令。
[0054]下面结合图3说明上述数据库间的数据迁移方法的原理。
[0055](I)源数据库301的更新单向异步备份到从数据库302,日志文件303记录源数据库301的更新。[0056](2)读锁从数据库302,记录从数据库302最后一次执行的更新事件在日志文件303中的更新位置。
[0057](3)将从数据库302中存储的数据导出转存储为备份文件304,备份文件304中包含重构从数据库302存储的数据的命令语句。
[0058](4)在目标数据库305中执行备份文件304中包含的命令语句。
[0059](5)读锁源数据库301。
[0060](6)获取日志文件303中从数据库302最后一次执行的更新事件的更新位置之后的源数据库301产生的所有更新,将获取的更新同步到目标数据库305。
[0061]如图4所示,在一个实施例中,一种数据库间的数据迁移系统,包括读写控制模块
10、位置记录模块20、数据导出模块30、剩余更新同步模块40,其中:
[0062]读写控制模块10用于读锁源数据库的从数据库。
[0063]具体的,从数据库为源数据库的备份数据库。在一个实施例中,上述数据库间的数据迁移系统还包括从数据库更新模块(图中未示出),用于每间隔预设时间,获取源数据库的更新中尚未同步到从数据库的更新,在从数据库中执行相同的更新。从数据库更新模块将源数据库的大部分数据同步到了从数据库中。
[0064]具体的,读写控制模块10给从数据库加读锁,禁止对从数据库进行写操作,只提供读从数据库的服务。
[0065]位置记录模块20用于记录从数据库最后一次执行的更新事件在源数据库中对应的更新位置。
[0066]具体的,更新事件在源数据库中对应的更新位置为该更新事件在记录了源数据库的更新的日志文件中的位置。进一步,更新事件在日志文件中的位置指的是更新事件位于该日志文件中的偏移量。源数据库一般具有多个日志文件,更新事件所在的日志文件的文件名以及更新事件在该日志文件中的偏移量即可唯一确定更新事件在源数据库中对应的更新位置。因此,位置记录模块20可记录更新事件所在的日志文件的文件名以及更新事件在该日志文件中的偏移量。
[0067]数据导出模块30用于将从数据库中存储的数据导出到目标数据库。
[0068]如图5所示,在一个实施例中,数据导出模块30包括备份模块320和命令执行模块340,其中:
[0069]备份模块320用于将从数据库存储的数据导出转存储为备份文件,备份文件中包含重构从数据库存储的数据的命令语句。
[0070]命令执行模块340用于在目标数据库中执行上述命令语句。
[0071]具体的,对于支持SQL语言的数据库,备份模块320可将从数据库存储的数据导出转存储为包含SQL命令语句的备份文件,进一步的,命令执行模块340可在目标数据库中执行备份文件中的SQL命令语句以重构从数据库存储的数据。
[0072]读写控制模块10还用于读锁源数据库。
[0073]具体的,读写控制模块10可给源数据库加读锁,禁止对源数据库进行写操作,只提供读源数据库的服务。
[0074]剩余更新同步模块40用于获取更新位置之后源数据库产生的更新,将获取的更新同步到目标数据库。[0075]具体的,在一个实施例中,剩余更新同步模块40可获取从数据库最后一次执行的更新事件所在的源数据库的日志文件中该更新事件之后的所有更新,将获取的更新同步到目标数据库。进一步的,剩余更新同步模块40可将从数据库最后一次执行的更新事件所在的日志文件之后产生的所有源数据库的日志文件全量导入目标数据库,即获取从数据库最后一次执行的更新事件所在的日志文件之后产生的所有源数据库的日志文件中的更新,在目标数据库中执行与获取的更新相同的更新操作。
[0076]在一个实施例中,上述数据库间的数据迁移系统还包括访问切换模块(图中未示出),用于将业务访问从源数据库切换到目标数据库。
[0077]具体的,访问切换模块可修改业务访问的数据库的相关配置,将源数据库的相关信息对应修改为目标数据库的相关信息,并启动对目标数据库的访问。
[0078]上述数据库间的数据迁移系统,在读锁源数据库之前,业务可以对源数据库进行访问,而在将所有更新同步到目标数据库之后,源数据库与目标数据库的数据是一致的,业务可切换到目标数据库访问数据,因而只有在将上述更新位置之后源数据库产生的所有更新同步到目标数据库期间,业务不能访问数据库,而源数据库的大部分数据已经由从数据库导出至目标数据库,该期间更新的数据量较小,因而该期间花费的时间也较少,因此上述系统能减少业务中断访问数据库的时间。
[0079]在一个实施例中,剩余更新同步模块40包括更新模块和监测模块(图中未示出),其中:
[0080]更新模块用于在读写控制模块10读锁源数据库之前,按照更新产生顺序获取上述更新位置之后源数据库发生的更新,将获取的更新同步到目标数据库。
[0081]监测模块用于监测剩余的未同步到目标数据库的源数据库的更新量是否小于阈值。
[0082]本实施例中,读写控制模块10还用于若剩余的未同步到所述目标数据库的源数据库的更新量小于阈值,则读锁源数据库。
[0083]更新模块还用于在读写控制模块10读锁源数据库之后,获取剩余的未同步到所述目标数据库的源数据库的更新,将剩余的更新同步到所述目标数据库。
[0084]具体的,更新记录在日志文件中,因此,监测模块可通过监测日志文件的总大小来监测日志文件中记录的更新量的大小。具体的,在一个实施例中,监测模块可监测记录剩余的未同步到所述目标数据库的源数据库的更新的至少一个日志文件的总大小是否小于预设值。
[0085]具体的,在一个实施例中,当源数据库具有多个未同步到目标数据库的日志文件时,更新模块可将最后一个日志文件以前的未同步到目标数据库中的日志文件导入目标数据库。当只有一个未同步到目标数据库的日志文件时,更新模块可等待产生新的日志文件或执行产生新的日志文件的命令。产生新的日志文件后,更新模块可继续将最后一个日志文件以前的未同步到目标数据库中的日志文件导入目标数据库。
[0086]而监测模块可监测是否只剩下一个未同步到目标数据库的日志文件且该日志文件的小于预设值,若是,则通知读写模块10读写源数据库,并通知更新模块将最后一个日志文件导入目标数据库。
[0087]当只有一个未同步到目标数据库的日志文件且该日志文件的小于预设值时,读写控制模块10读锁源数据库,进一步的,更新模块将最后一个日志文件导入目标数据库。
[0088]本实施例中,不断地将源数据库中新产生且未同步到目标数据库中的更新同步到目标数据库,当剩余的未同步到目标数据库的源数据库的更新量小于阈值时,读锁源数据库,并将剩余的未同步的所有更新同步到目标数据库。由于本实施例在剩余更新量较小时再读锁源数据库,将少量的更新同步到目标数据库所花费的时间也较少,因此读锁源数据库的时间也较少,从而可进一步的缩小业务中断访问数据库的时间。
[0089]在一个实施例中,源数据库、从数据库和目标数据为MYSQL数据库。
[0090]在一个实施例中,上述系统还包括日志记录模块(图中未示出),用于启用用于跟踪所有对源数据库的更新(插入、删除、修改等等)的日志。
[0091]在一个实施例中,从数据库最后一次执行的更新事件在源数据库中对应的更新位置为该更新事件在源数据库的日志文件中的位置。位置记录模块20可记录更新事件所在的日志文件的文件名以及更新事件在该日志文件中的偏移量。
[0092]数据导出模块30用于将从数据库存储的数据导出转存储为备份文件,备份文件中包含重构从数据库存储的数据的SQL命令,进一步的,在目标数据库中执行SQL命令。
[0093]具体的,数据导出模块30可通过mysqldump工具将从数据库存储的数据导出转存储为备份文件。mysqldump是MYSQL用于转存储数据库的实用程序,在此不再赘述。
[0094]剩余更新同步模块40用于获取源数据库的日志文件中上述更新位置之后的更新日志;将获取的更新日志中记录的更新转换为SQL命令;并在目标数据库中执行转换而成的SQL命令。
[0095]具体的,剩余更新同步模块40可获取从数据库最后一次执行的更新事件所在的源数据库的日志文件,并获取该日志文件中该更新事件之后的所有更新日志;进一步的,可获取该日志文件之后产生的日志文件中所记录的所有更新日志。
[0096]进一步的,剩余更新同步模块40可将获取的更新日志中记录的更新通过mysqlbinlog工具转换为SQL命令。mysqlbinlog工具为将MYSQL的日志文件转换为SQL命令的实用程序,在此不再赘述。
[0097]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序控制相关的硬件来完成的,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random AccessMemory, RAM)等。
[0098]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种数据库间的数据迁移方法,包括以下步骤: 读锁源数据库的从数据库,记录从数据库最后一次执行的更新事件在源数据库中对应的更新位置; 将从数据库中存储的数据导出至目标数据库; 读锁源数据库,获取所述更新位置之后源数据库产生的更新,将所述更新同步到所述目标数据库。
2.根据权利要求1所述的方法,其特征在于,所述将从数据库中存储的数据导出至目标数据库的步骤包括: 将从数据库存储的数据导出转存储为备份文件,所述备份文件中包含重构从数据库存储的数据的命令语句; 在所述目标数据库中执行所述命令语句。
3.根据权利要求1所述的方法,其特征在于,所述读锁源数据库,获取所述更新位置之后源数据库发生的更新,将所述更新同步到所述目标数据库的步骤包括: 按照更新产生顺序获取所述更新位置之后源数据库发生的更新,将获取的更新同步到所述目标数据库,并监测剩余的未同步到所述目标数据库的源数据库的更新量是否小于阈值; 若剩余的未同步到所述目标数据库的源数据库的更新量小于阈值,则读锁源数据库,获取剩余的未同步到所述目标数据库的源数据库的更新,将剩余的更新同步到所述目标数据库。
4.根据权利要求3所述的方法,其特征在于,所述监测剩余的未同步到所述目标数据库的源数据库的更新量是否小于阈值的步骤包括: 监测记录剩余的未同步到所述目标数据库的源数据库的更新的日志文件的大小是否小于预设值。
5.根据权利要求1所述的方法,其特征在于,在所述将所述更新同步到所述目标数据库的步骤之后,所述方法还包括: 将业务访问从所述源数据库切换到所述目标数据库。
6.根据权利要求1-5任一所述的方法,其特征在于,所述源数据库、从数据库和目标数据为MYSQL数据库; 所述将从数据库中存储的数据导出到目标数据库的步骤包括: 将从数据库存储的数据导出转存储为备份文件,所述备份文件中包含重构从数据库存储的数据的SQL命令; 在所述目标数据库中执行所述SQL命令。
7.根据权利要求6所述的方法,其特征在于,所述更新位置为从数据库最后一次执行的更新事件在源数据库的日志文件中的位置; 所述获取所述更新位置之后源数据库产生的更新,将所述更新同步到所述目标数据库的步骤包括: 获取源数据库的日志文件中所述更新位置之后的更新日志; 将所述更新日志中记录的更新转换为SQL命令; 在所述目标数据库中执行转换而成的SQL命令。
8.一种数据库间的数据迁移系统,其特征在于,包括: 读写控制模块,用于读锁源数据库的从数据库; 位置记录模块,用于记录从数据库最后一次执行的更新事件在源数据库中对应的更新位置; 数据导出模块,用于将从数据库中存储的数据导出至目标数据库; 所述读写控制模块还用于读锁源数据库; 剩余更新同步模块,用于获取所述更新位置之后源数据库产生的所有更新,将所述更新同步到所述目标数据库。
9.根据权利要求8所述的系统,其特征在于,所述数据导出模块包括: 备份模块,用于将从数据库存储的数据导出转存储为备份文件,所述备份文件中包含重构从数据库存储的数据的命令语句; 命令执行模块,在所述目标数据库中执行所述命令语句。
10.根据权利要求8所述的系统,其特征在于,所述剩余更新同步模块包括: 更新模块,用于在读写控制模块读锁源数据库之前,按照更新产生顺序获取所述更新位置之后源数据库发生的更新,将获取的更新同步到所述目标数据库; 监测模块,用于监测剩余的未同步到所述目标数据库的源数据库的更新量是否小于阈值; 所述读写控制模块用于若剩余的未同步到所述目标数据库的源数据库的更新量小于阈值,则读锁源数据库; 所述更新模块还用于在所述读写控制模块读锁源数据库之后,获取剩余的未同步到所述目标数据库的源数据库的更新,将剩余的更新同步到所述目标数据库。
11.根据权利要求10所述的系统,其特征在于,所述剩余更新同步模块还用于监测记录剩余的未同步到所述目标数据库的源数据库的更新的日志文件的大小是否小于预设值。
12.根据权利要求8所述的系统,其特征在于,所述系统还包括: 访问切换模块,用于在将所述更新同步到所述目标数据库之后,将业务访问从所述源数据库切换到所述目标数据库。
13.根据权利要求8-12任一所述的系统,其特征在于,所述源数据库、从数据库和目标数据为MYSQL数据库; 数据导出模块用于将从数据库存储的数据导出转存储为备份文件,所述备份文件中包含重构从数据库存储的数据的SQL命令,并在所述目标数据库中执行所述SQL命令。
14.根据权利要求13所述的系统,其特征在于,所述更新位置为从数据库最后一次执行的更新事件在源数据库的日志文件中的位置; 剩余更新同步模块用于获取源数据库的日志文件中所述更新位置之后的更新日志,将所述更新日志中记录的更新转换为SQL命令,并在所述目标数据库中执行转换而成的SQL命令。
【文档编号】G06F17/30GK103530290SQ201210226102
【公开日】2014年1月22日 申请日期:2012年7月3日 优先权日:2012年7月3日
【发明者】邹伟, 徐晓明 申请人:深圳市腾讯计算机系统有限公司