掌桥专利:专业的专利平台
掌桥专利
首页

一种数据迁移方法以及相关装置

文献发布时间:2024-04-18 19:58:30


一种数据迁移方法以及相关装置

技术领域

本申请实施例涉及大数据领域,尤其涉及一种数据迁移方法以及相关装置。

背景技术

在软件开发的过程中,软件运行需要的数据会存放在产品的数据库内,当产品调整内部技术架构等情况时,不可避免需要切换软件使用的数据库管理系统。此时为了保证软件切换数据库管理系统后,能正常使用之前的数据并保证软件正常运行,需要提供一种方法来实现数据库快速、完整、准确的迁移。

目前现存较频繁被使用提及的数据迁移方法,一是使用数据库工具本身自带的迁入、迁出数据库表与数据的功能进行数据的迁移,二是使用loaddata方式对txt数据文本进行单表数据迁入。

然而单纯使用数据库工具自带的迁入迁出功能进行数据迁移,难以实现不同数据库管理系统之间的数据迁移,而通过loaddata的传输方式,限制了只能单表传输,当数据库在有大量数据表需要迁移时,效率太慢。

发明内容

本申请实施例提供了一种数据迁移方法以及相关装置,用于快速的迁移有大量数据表的数据库。

本申请实施例第一方面提供了一种数据迁移方法:

根据预设条件,从第一数据库中确定第一特征数据表;

根据所述第一特征数据表,执行第一命令,得到第一数据文件,所述第一数据文件包括第一表结构和第一表数据,所述第一表结构为所述第一数据库中全部数据表的表结构,所述第一表数据为所述第一数据库中除了所述第一特征数据表外的其他数据表的数据;

根据所述第一数据文件,执行第二命令,使得所述第一表结构与所述第一表数据迁入到第二数据库。

在一些可选的实施方式中,所述第一特征数据表包括第一特征表标识,所述第一命令包括mysqldump命令和所述第一特征表的标识。

在一些可选的实施方式中,所述第二命令包括gunzip命令和所述第一数据文件的文件名。

在一些可选的实施方式中,所述根据所述第一数据文件,执行第二命令之后,所述方法还包括:

执行验证脚本,得到第一统计结果和第二统计结果,所述第一统计结果包括所述第一数据库的全部数据表数量以及每个数据表的行数,所述第二统计结果包括所述第二数据库的全部数据表数量以及每个数据表的行数;

判断所述第一统计结果是否与所述第二统计结果一致;

若不一致,则针对数据不一致的数据表进行重新检查。

在一些可选的实施方式中,所述根据所述第一特征数据表,执行第一命令,得到第一数据文件之后,所述方法还包括:

根据所述第一特征数据表,执行第三命令,得到第二数据文件,所述第二数据文件包括第二表数据,所述第二表数据为所述第一特征数据表的数据;

根据所述第二数据文件,执行第四命令,使得所述第二表数据迁入到所述第二数据库。

在一些可选的实施方式中,当所述第一数据库与所述第二数据库部署在不同的服务器时,所述根据第一数据文件,执行第二命令之前,所述方法还包括:

将所述第一数据文件,通过文件传输协议ftp传输到部署所述第二数据库的服务器。

在一些可选的实施方式中,根据所述第一数据文件,执行第二命令之前,所述方法还包括:创建所述第二数据库。

本申请实施例第二方面提供了一种数据迁移装置,其中包括:

确定模块,用于根据预设条件,从第一数据库中确定第一特征数据表;

第一执行模块,用于根据所述第一特征数据表,执行第一命令,得到第一数据文件,所述第一数据文件包括第一表结构和第一表数据,所述第一表结构为所述第一数据库中全部数据表的表结构,所述第一表数据为所述第一数据库中除了所述第一特征数据表外的其他数据表的数据;

第二执行模块,用于根据所述第一数据文件,执行第二命令,使得所述第一表结构与所述第一表数据迁入到第二数据库。

本申请第三方面提供一种数据迁移装置,包括至少一个处理器,与存储器耦合;

所述存储器用于存储程序或指令;

所述至少一个处理器用于执行所述程序或指令,以使所述装置实现如第一方面中所述的方法。

本申请第四方面提供一种计算机可读存储介质,包括计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如第一方面或第一方面中的任意一种实现方式。

从以上技术方案可以看出,本申请实施例具有以下优点:

在对第一数据库的数据进行迁出之前,通过预设条件筛选出特征数据表,使得从第一数据库迁出的数据文件可以快速的迁入到第二数据库;并且在数据迁入后,通过检验脚本验证迁出迁入结果,确保了数据迁移的准确性与完整性。

附图说明

为更清楚地说明本实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例中订单数据处理方法的一个实施例示意图;

图2是本申请实施例中订单数据处理方法的另一个实施例示意图;

图3是本申请实施例提供的检验脚本示意图;

图4是本申请实施例提供的订单数据处理装置的一结构示意图;

图5是本申请实施例提供的订单数据处理装置的另一结构示意图。

具体实施方式

本申请实施例提供了一种数据迁移方法以及相关装置,用于快速地迁移大量的数据库数据。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例,例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

下面对本申请实施例所使用到的一些名词或术语进行解释说明,该名词或术语也作为发明内容的一部分。

1.mysqldump命令:数据库迁出命令,可直接迁出整个数据库全部表结构与表数据,生成数据文件。其中,可针对特征表添加参数“--no-data”或“-d”只迁出表结构不迁出表数据,或者添加参数“--ignore-table”排除特征数据表的迁出。

2.gunzip命令:解压文件命令,将传输到新数据库的数据文件为压缩文件,对其进行解压即可迁入数据。其中,可以添加参数“--ignore-table”排除特征数据表的迁入。

请参阅图1,为本申请实施例提供的一种数据迁移方法流程图,包括:

101,根据预设条件,从第一数据库中确定第一特征数据表;

考虑到在实际的软件开发中,数据库有存在有数据量大,但对程序运行中无实际作业只做记录的特征数据表,例如日志表、操作记录表等,考虑到在实际生成迁移中,此类特征数据表的耗时时长,为了提高时效性,对此类数据表先跳过表数据的迁移,只进行表结构的迁移;或者是无法通过mysqldump/gunzip命令进行表结构和表数据同时迁移的表。

对此,可通过预设条件将此类特征数据表筛选出来。

具体的,预设条件可以是“无主键”、“行数大于10000条”、“表名称包含log字符”等,具体此处不做限定。

可以理解的是,在实际应用在,对于第一数据库,可能不存在符合条件的特征数据表,此时,可以进行全表迁出。本申请实施例对是否存在特征数据表并不限定。

102,根据所述第一特征数据表,执行第一命令,得到第一数据文件;

执行mysqldump命令,附带筛选出来的特征数据表的表名,可以迁出数据文件,数据文本包括第一数据库全部数据表的表结构和除特征数据表以外的表数据。

具体的,根据不同环境输入迁出数据库名(databaseName)、迁出数据库服务器用户名(userName)、迁出数据库服务器密码(password)、迁出数据库服务器IP、迁出数据库服务器端口(port)、特征表名(fetureTable)。

export_dump.gz为迁出的数据文件,export_01.log、export_02.log为迁出数据时打印的日志文件,输入的命令可以是:

nohup mysqldump-c--databases databaseName--no-create-db-uuserName-ppassword-hIP-Pport--ignore-table=databaseName.fetureTable2>export_01.log|gzip>export_dump.gz 2>>export_02.log&。

可以理解的是,前述的是忽略特征数据表的表数据来得到数据文件,在实际应用中,也可以是选择只迁出特征数据表的表数据来得到数据文件。例如在迁出全部表结构和除特征数据表以外的表数据后,择时迁出数据量大的特征数据表的表数据。

103,根据所述第一数据文件,执行第二命令,使得第一表结构与第一表数据迁入到第二数据库。

执行gunzip命令,可以解压压缩状态的数据文件,将数据文件迁入第二数据库,使得第一数据库中全部数据表的表结构和除特征数据表以外的表数据迁入到第二数据库。

具体的,根据不同环境输入迁出数据库名(databaseName)、迁出数据库服务器用户名(userName)、迁出数据库服务器密码(password)、迁出数据库服务器IP、迁出数据库服务器端口(port)、特征表名(fetureTable)。

export_dump.gz为待迁入的数据文件,import_01.log为迁入数据时打印的日志文件,输入的命令可以是:

nohup gunzip-cf export_dump.gz|mysql-udatabaseName-ppassword-hIP-Pport--init-command="set autocommit=1">import_01.log 2>&1&。

本申请实施例中,通过筛选出不适合进行一次同步迁移的特征数据表,使用mysqldump命令和gunzip命令实现快速的数据迁出和数据迁入,兼容例如mysql、tdsql等数据库,使得在不同的数据库管理系统之间也能实现快速的数据迁移。

请参阅图2,为本申请实施例提供的另一种数据迁移方法流程图,包括:

201,创建第二数据库;

根据实际的业务需求,创建待迁入数据的第二数据库。

可以理解的是,这只是针对服务器不存在数据库时执行,若业务需求是在已有数据的数据库中迁入数据,那么步骤201可以跳过。

202,从第一数据库在迁出第一数据文件;

根据预设的条件筛选出特征数据表,然后通过mysqldump命令迁出数据文件。其中,可以通过“--ignore-table”等命令排除特征数据表的迁出。

可以理解的是,在实际应用在,对于第一数据库,可能不存在符合条件的特征数据表,此时,可以进行全表迁出。本申请实施例对是否存在特征数据表并不限定。

203,将第一数据文件传输到第二数据库的服务器中;

当第一数据库与第二数据库是位于不同服务器的数据库,此时,可以通过文件传输协议(file transferprotocol,FTP)等方式将前述迁出的数据文件传输到第二数据库的服务器中。

需要说明的是,服务器中也可以同时存在第一数据库与第二数据库,此时,步骤203可以跳过。

204,将第一数据文件迁入到第二数据库;

通过gunzip命令解压迁入数据文件。其中,可以通过“--ignore-table”等命令跳过特征数据表的迁入。其中,可以通过“--ignore-table”等命令排除特征数据表的迁入。

205,执行验证脚本校验数据是否一致;

在完成迁入命令后,在第一数据库与第二数据库中执行验证脚本,获得第一数据库的表数据量与每个数据表的行数量,以及第二数据库的表数据量与每个数据表的行数量。将两者进行比较,校验数据是否一致。

请参阅图3,为校验脚本代码的部分示意图:

具体的,首先需要在验证脚本中配置需要进行统计数据的数据库ip、端口、数据库服务器用户名和密码;其次在数据库服务器中调起该脚本,统计数据库中除系统表外的所有表的数量以及每个表的数据量。

若数据一致,则执行步骤206;若数据不一致,则执行步骤207。

206,完成迁移工作。

完成数据迁移工作,之后可以针对特征数据表进行择期迁入。

具体的,选择系统在线用户较少的时候,例如凌晨时分或者系统维护时,此时对数据量大的特征数据表进行迁入,对本系统运作影响较少。

207,重检数据不一致的表。

若发现有数据表数据量在迁出迁入后不一致,则针对数据迁入时的提示信息以及分析表结构,重新对表数据进行单独迁出迁入。

本申请实施例中,提供了ftp等方式在不同服务器中传输数据文件,在执行迁入命令后,通过调用检验脚本来确保数据迁移的准确性和完整性。

本发明实施例还提供了一种数据迁移装置,参考图4,为本发明实施例提供的一种数据迁移装置的示意图,所述装置包括:

确定模块401,根据预设条件,从第一数据库中确定第一特征数据表;

第一执行模块402,用于根据所述第一特征数据表,执行第一命令,得到第一数据文件,所述第一数据文件包括第一表结构和第一表数据,所述第一表结构为所述第一数据库中全部数据表的表结构,所述第一表数据为所述第一数据库中除了所述第一特征数据表外的其他数据表的数据;

第二执行模块403,根据所述第一数据文件,执行第二命令,使得所述第一表结构与所述第一表数据迁入到第二数据库。

相应的,本发明实施例还提供一种计算机,参见图5所示,可以包括:

处理器501、存储器502、输入装置503和输出装置504。浏览器服务器中的处理器501的数量可以一个或多个,图4中以一个处理器为例。在本发明的一些实施例中,处理器501、存储器502、输入装置503和输出装置504可通过总线或其它方式连接,其中,图5中以通过总线连接为例。

存储器502可用于存储软件程序以及模块,处理器501通过运行存储在存储器502的软件程序以及模块。存储器502可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。输入装置503可用于接收输入的数字或字符信息,以及产生与浏览器服务器的用户设置以及功能控制有关的键信号输入。

具体在本实施例中,处理器501会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器502中,并由处理器501来运行存储在存储器502中的应用程序,从而实现各种功能:

根据预设条件,从第一数据库中确定第一特征数据表;

根据所述第一特征数据表,执行第一命令,得到第一数据文件,所述第一数据文件包括第一表结构和第一表数据,所述第一表结构为所述第一数据库中全部数据表的表结构,所述第一表数据为所述第一数据库中除了所述第一特征数据表外的其他数据表的数据;

根据所述第一数据文件,执行第二命令,使得所述第一表结构与所述第一表数据迁入到第二数据库。

需要说明的是,本申请提供的一种订单数据处理方法以及相关装置可用于大数据领域或金融领域。上述仅为示例,并不对本申请提供的一种数据处理方法以及相关装置的应用领域进行限定。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

所属领域的技术人员可以清楚地了解到,为描述方便和简洁,上述提供的任一种通信装置中相关内容的解释及有益效果均可参考上文提供的对应的方法实施例,此处不再赘述。

在本申请实施例中,终端设备或接入网设备可以包括硬件层、运行在硬件层之上的操作系统层,以及运行在操作系统层上的应用层。其中,硬件层可以包括中央处理器(central processing unit,CPU)、内存管理单元(memory management unit,MMU)和内存(也称为主存)等硬件。操作系统层的操作系统可以是任意一种或多种通过进程(process)实现业务处理的计算机操作系统,例如,Linux操作系统、Unix操作系统、Android操作系统、iOS操作系统或windows操作系统等。应用层可以包含浏览器、通讯录、文字处理软件、即时通信软件等应用。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者接入网设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。

相关技术
  • 一种数据迁移方法及装置
  • 一种数据迁移方法、装置和系统
  • 一种数据迁移方法和装置
  • 一种集群Hbase数据迁移的方法及装置
  • 一种数据迁移方法及装置
  • 一种不同系统间数据迁移方法、数据迁移系统及相关设备
  • 一种不同系统间数据迁移方法、数据迁移系统及相关设备
技术分类

06120116504333