数据迁移方法及装置与流程

文档序号:13015920阅读:144来源:国知局
【技术领域】本申请涉及数据库技术领域,尤其涉及一种数据迁移方法及装置。

背景技术:
数据库是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。在数据库使用过程中,当数据库的存储结构无法满足业务需求时,需要将数据库中的数据迁移到能够满足业务需求的新数据库中,这就涉及对大量数据进行迁移的问题。传统数据迁移一般是离线的,但是为了不影响业务使用,出现了在线数据迁移技术,即在数据迁移过程中,仍允许业务线程访问数据库开展业务。但是,当访问数据库的并发多时,容易造成数据库宕机。

技术实现要素:
本申请的多个方面提供一种数据迁移方法及装置,用以在实现数据迁移的同时,严格控制数据库的并发数,以降低数据库宕机的概率。本申请的一方面,提供一种数据迁移方法,包括:确定至少一个待迁移数据库;确定可以为所述至少一个待迁移数据库启动的迁移线程数;根据所述迁移线程数,为所述至少一个待迁移数据库启动至少一个迁移线程,以使所述至少一个迁移线程,对所述至少一个待迁移数据库进行数据迁移。本申请的另一方面,提供一种数据迁移装置,包括:第一确定模块,用于确定至少一个待迁移数据库;第二确定模块,用于确定可以为所述至少一个待迁移数据库启动的迁移线程数;启动模块,用于根据所述迁移线程数,为所述至少一个待迁移数据库启动至少一个迁移线程,以使所述至少一个迁移线程,对所述至少一个待迁移数据库进行数据迁移。由上述可见,本申请确定至少一个待迁移数据库,并确定可以为至少一个待迁移数据库启动的迁移线程数,根据所确定的迁移线程数,为至少一个待迁移数据库启动至少一个迁移线程,以使所启动的至少一个迁移线程,对至少一个待迁移数据库进行数据迁移。本申请一方面可以实现数据迁移,另一方面通过确定可以为待迁移数据库启动的迁移线程数,根据所确定的迁移线程数来启动迁移线程,有利于将待迁移数据库的线程并发数控制在数据库可承受的范围内,降低数据库因为并发数过多引起宕机的概率。【附图说明】为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本申请一实施例提供的数据迁移方法的流程示意图;图2为本申请一实施例提供的数据库实例、数据库及数据迁移装置之间的映射关系示意图;图3为本申请一实施例提供的数据迁移装置的结构示意图;图4为本申请另一实施例提供的数据迁移装置的结构示意图。【具体实施方式】为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。图1为本申请一实施例提供的数据迁移方法的流程示意图。如图1所示,该方法包括:101、确定至少一个待迁移数据库。102、确定可以为上述至少一个待迁移数据库启动的迁移线程数。103、根据上述迁移线程数,为上述至少一个待迁移数据库启动至少一个迁移线程,以使至少一个迁移线程,对至少一个待迁移数据库进行数据迁移。本实施例提供一种数据迁移方法,可由数据迁移装置来执行。数据迁移装置可以是各种具有能力实施本实施例提供的数据迁移方法的设备,例如专用于数据迁移的迁移设备等。本实施例提供的方法既适用于对数据库进行离线迁移,也适用于对数据库进行在线迁移,尤其适用于对数据库进行在线迁移。通常,对数据库的操作一般是启动线程,由线程来完成相应操作。例如,业务系统可以通过业务线程访问数据库,以完成相应业务操作。在本实施例中,数据迁移装置可以部署迁移程序,通过启动迁移程序来启动迁移线程,通过迁移线程完成数据库的迁移。考虑到数据库所能承受的线程并发数是有一定范围的,这里的线程并发数是指同时访问数据库的线程的个数。对于在线迁移,除了迁移线程访问数据库进行数据迁移之外,同时还会有业务线程访问数据库进行业务处理。当并发线程数较多时,很有可能导致数据库宕机。数据库宕机会导致数据迁移效率降低、业务处理失败等一系列问题。为降低数据库在数据迁移过程中因并发线程数较多导致数据库宕机的概率,进一步解决因数据库宕机引起的数据迁移效率较低、业务处理失败等问题,本实施例提供一种解决方法,该方法具体如下:首先,数据迁移装置确定需要进行数据迁移的数据库,即待迁移数据库;待迁移数据库可以是至少一个。例如,现在数据库都是分库分表的,一个业务表可能对应于数十个数据库,在对某个业务表进行数据迁移的时候,需要对这数十个数据库中的数据进行迁移,这数十个数据库可以看做一个数据库系统。例如,可以直接将数据库系统中的全部数据库作为待迁移数据库。也就是说,由一台数据迁移装置负责对数据库系统中全部数据库中的数据进行迁移,这对数据迁移装置的处理能力要求较高。又例如,还可以配置多台数据迁移装置,每台数据迁移装置负责数据库系统中的部分数据库,则所负责的部分数据库即为待迁移数据库。在实际应用中,一般会为数据库系统配置多个数据库实例,每个数据库实例负责数据库系统中的部分数据库,基于此,可以根据数据库实例的个数确定数据库迁移装置的个数,并将每个数据库实例分别部署到一台数据迁移装置上,由数据迁移装置负责对相应部分数据库进行数据迁移。基于上述,一种确定待迁移数据库的具体实施方式包括:根据数据库实例的数量和数据库的总数,对数据库系统中的全部数据库进行分组,获取每个分组内的数据库作为至少一个待迁移数据库。举例说明,假设数据库系统一共包括264个数据库,并且为该数据库系统配置了6个数据库实例,每个数据库实例可以控制44个数据库;则可以按照数据库实例的个数,将数据库分为6个分组,每个分组包括44个数据库(对应于一个数据库实例),将每个数据库实例单独运行在一台数据迁移装置上,实现数据库实例的隔离,并且每台数据迁移装置负责44个数据库的迁移。举例说明,假设数据库系统一共包括132个数据库,并且为该数据库系统配置了3个数据库实例,每个数据可实例可以控制44个数据库;则可以按照数据库实例的个数,将数据库分为3个分组,每个分组包括44个数据库(对应于一个数据库实例),将每个数据库实例单独运行在一台数据迁移装置上,实现数据库实例的隔离,并且每台数据迁移装置负责44个数据库的迁移。如图2所示,3个数据库实例,如实例A、实例B和实例C,分别部署在三台数据迁移装置,如第一数据迁移装置、第二数据迁移装置和第三数据迁移装置上,实例A负责库号为0-43的数据库,实例B负责库号为44-87的数据库,实例C负责库号为88-131的数据库。当确定待迁移数据库之后,数据迁移装置确定可以为上述确定的待迁移数据库启动的迁移线程数。例如,若对待迁移数据库进行离线迁移,则可以根据待迁移数据库所能承受的线程并发数,确定可以为待迁移数据库启动的迁移线程数,例如,可启动的迁移线程数小于或等于待迁移数据库所能承受的线程并发数。又例如,若对待迁移数据库进行在线迁移,则可以根据实际应用总结出的经验值,确定可以为待迁移数据库启动的迁移线程数。或者,若对待迁移数据库进行在线迁移,可以确定每个待迁移数据库的业务线程数,根据每个待迁移数据库的业务线程数和每个待迁移数据库所能承受的最大线程数,确定可以为上述确定的至少一个待迁移数据库启动的迁移线程数。每个待迁移数据库的业务线程数是指当前访问该待迁移数据的业务线程的数量。例如,具体可以根据每个待迁移数据库的业务线程数中最大业务线程数和待迁移数据库所能承受的线程并发数,确定可以为这些待迁移数据库启动的迁移线程数。例如,可以获取待迁移数据库所能承受的线程并发数与最大业务线程数的差值,可以为上述所确定的至少一个待迁移数据库启动的迁移线程数小于或等于该差值。确定可以为至少一个待迁移数据库启动的迁移线程数之后,数据迁移装置可以根据所确定的迁移线程数,为上述所确定的至少一个待迁移数据库启动至少一个迁移线程,以使所启动的迁移线程,对上述所确定的至少一个待迁移数据库进行数据迁移。在一可选实施方式中,可以以待迁移数据库为处理单位,即所有迁移线程同时对一个待迁移数据库进行数据迁移,则数据迁移装置可以直接启动至少一个迁移线程,至少一个迁移线程依次对至少一个待迁移数据库中的每个待迁移数据库进行数据迁移。在另一可选实施方式中,可以根据至少一个迁移线程的数量和至少一个待迁移数据库的数量,对至少一个待迁移数据库进行分组,为每个分组内的待迁移数据库启动一个迁移线程,以使该迁移线程对该分组内的待迁移数据库进行数据迁移。可选的,数据迁移装置可以确定每个迁移线程对应的待迁移数据库的库号,并将所对应的待迁移数据库的库号提供给相应的迁移线程,以使迁移线程根据库号对相应的待迁移数据库进行迁移。例如,从迁移线程的角度来说,每个迁移线程可以按照预设的周期逐个轮询所对应的待迁移数据库,以进行数据迁移。即对于一个迁移线程来说,可以周期性的轮询所对应的待迁移数据库,轮询到哪个待迁移数据库就对哪个待迁移数据库进行数据迁移处理。又例如,迁移线程对待迁移数据库进行数据迁移的一种实施方式包括:当需要进行数据迁移时,每个迁移线程按照数据的存储时间,从所对应待迁移数据库中的最早数据开始进行数据迁移。换句话说,即每个迁移线程对所对应的待迁移数据库进行全量迁移。又例如,结合上述对待迁移数据库进行分组的方案,迁移线程对待迁移数据库进行数据迁移的一种实施方式包括:每个分组对应的迁移线程可以确定每个分组内的待迁移数据库中的目标数据,目标数据是指开展目标业务所需的数据;每个分组对应的迁移线程将目标数据从每个分组内的待迁移数据库迁移到新数据库中;每个分组对应的迁移线程将每个分组内的待迁移数据库中除目标数据之外的其他数据迁移到新移数据库中。在该实施方式中,迁移线程并不是直接对待迁移数据进行全量迁移,而是先确定目标业务以及开展目标业务所需的目标数据,以便于从业务需求角度进行数据迁移,提高数据迁移的灵活度。这里的目标业务是指需要基于数据库中的数据才能开展的业务,具体可以是根据应用场景自行设定,例如可以是比重较大的业务、用户较多的业务、活跃度较高的公司或单位涉及的业务或者满足一定要求的业务等。具体来说,目标业务可以是查询业务、统计业务等。相应的,目标数据是指存储于待迁移数据库中用于开展目标业务所需的数据。当确定开展目标业务所需的目标数据后,迁移线程优先将所对应分组内的待迁移数据库中的目标数据从待迁移数据库中迁移到新数据库中,这样可以保证目标业务的及时开展。进一步,迁移线程将所对应分组内的待迁移数据库中除目标数据之外的其他数据也迁移到新数据库中,完成整个数据迁移过程。值得说明的是,在迁移线程将所对应分组内的待迁移数据库中除目标数据之外的其他数据也迁移到新数据库中的过程中,迁移线程可以采用全量数据迁移策略进行迁移,这里全量迁移的主要目的是将该迁移线程对应分组内的待迁移数据库中除目标数据之外的其他数据迁移到新数据库中。进一步,考虑到待迁移数据库中有一部分数据(即目标数据)已经迁移到新数据库中,为避免新数据库中的数据发生重复,在进行全量数据迁移过程中可以进行数据去重处理。具体的,迁移线程将目标数据迁移到新数据库中之后,可以在本地记录目标业务的业务ID;迁移线程按照数据存储时间,依次从所对应分组内的待迁移数据库中获取数据;将所获取的数据对应的业务ID与本地存储的目标业务的业务ID进行比对;若所获取的数据对应的业务ID与本地存储的目标业务的业务ID不同,说明所获取的数据不属于目标数据,也就意味着不存在于新数据库中,于是将所获取的数据迁移到新数据库中;若所获取的数据对应的业务ID与本地存储的目标业务的业务ID相同,说明所获取的数据属于目标数据,也就意味着已经存在于新数据库中,可以将所获取的数据丢弃。由上述可见,在本实施例中,数据迁移装置确定至少一个待迁移数据库,并确定可以为至少一个待迁移数据库启动的迁移线程数,根据所确定的迁移线程数,为至少一个待迁移数据库启动至少一个迁移线程,以使所启动的至少一个迁移线程,对至少一个待迁移数据库进行数据迁移。本实施例提供的方法,一方面可以实现数据迁移,另一方面通过确定可以为待迁移数据库启动的迁移线程数,根据所确定的迁移线程数来启动迁移线程,有利于将待迁移数据库的线程并发数控制在数据库可承受的范围内,降低数据库因为线程数过多引起宕机的概率,进一步可以解决因数据库宕机导致数据迁移效率较低、业务处理失败等问题。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。图3为本申请一实施例提供的数据迁移装置的结构示意图。如图3所示,该装置包括:第一确定模块31、第二确定模块32和启动模块33。第一确定模块31,用于确定至少一个待迁移数据库。第二确定模块32,用于确定可以为第一确定模块31所确定的至少一个待迁移数据库启动的迁移线程数。启动模块33,用于根据第二确定模块32确定的迁移线程数,为至少一个待迁移数据库启动至少一个迁移线程,以使所启动的至少一个迁移线程,对至少一个待迁移数据库进行数据迁移。在一可选实施方式中,如图4所示,启动模块33的一种实现结构包括:分组单元331和启动单元332。分组单元331,用于根据至少一个迁移线程的数量和至少一个待迁移数据库的数量,对至少一个待迁移数据库进行分组;启动单元332,用于为分组单元331所分出的每个分组内的待迁移数据库启动一个迁移线程,以使迁移线程对分组内的待迁移数据库进行数据迁移。进一步,该装置还包括迁移线程,用于进行数据库迁移。具体的,结合上述分组,迁移线程用于:确定对应分组内的待迁移数据库中的目标数据,所述目标数据是指开展目标业务所需的数据;将对应分组内的目标数据从所述分组内的待迁移数据库迁移到新数据库中;将对应分组内的待迁移数据库中除所述目标数据之外的其他数据迁移到所述新移数据库中。在一可选实施方式中,第二确定模块32具体用于:确定至少一个待迁移数据库中每个待迁移数据库的业务线程数;根据每个待迁移数据库的业务线程数和每个待迁移数据库所能承受的最大线程数,确定可以为至少一个待迁移数据库启动的迁移线程数。在一可选实施方式中,第一确定模块31具体用于:根据数据库实例的数量和数据库的总数,对数据库系统中的全部数据库进行分组,获取每个分组内的数据库作为至少一个待迁移数据库。本实施例提供的数据迁移装置,确定至少一个待迁移数据库,并确定可以为至少一个待迁移数据库启动的迁移线程数,根据所确定的迁移线程数,为至少一个待迁移数据库启动至少一个迁移线程,以使所启动的至少一个迁移线程,对至少一个待迁移数据库进行数据迁移。本实施例提供的数据迁移装置,一方面可以实现数据迁移,另一方面通过确定可以为待迁移数据库启动的迁移线程数,根据所确定的迁移线程数来启动迁移线程,有利于将待迁移数据库的线程并发数控制在数据库可承受的范围内,降低数据库因为并发数过多引起宕机的概率。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1