CN111797172A - 数据迁移方法、装置、设备、分布式***及存储介质 - Google Patents
数据迁移方法、装置、设备、分布式***及存储介质 Download PDFInfo
- Publication number
- CN111797172A CN111797172A CN202010923655.1A CN202010923655A CN111797172A CN 111797172 A CN111797172 A CN 111797172A CN 202010923655 A CN202010923655 A CN 202010923655A CN 111797172 A CN111797172 A CN 111797172A
- Authority
- CN
- China
- Prior art keywords
- data
- migrated
- target data
- migration
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000005012 migration Effects 0.000 title claims abstract description 226
- 238000013508 migration Methods 0.000 title claims abstract description 226
- 238000000034 method Methods 0.000 title claims abstract description 77
- 230000008859 change Effects 0.000 claims abstract description 64
- 238000004590 computer program Methods 0.000 claims description 6
- 230000004044 response Effects 0.000 description 17
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供一种数据迁移方法、装置、设备、分布式***及存储介质,所述方法应用于包括多个数据节点的分布式***中的每个数据节点上,所述方法包括:确定本次数据迁移任务中本节点的待迁移表以及目标数据节点;将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据节点的目标数据表中,所述增量数据为在所述数据迁移任务启动之后对所述待迁移表中的数据进行更改操作得到的数据。本实施例实现对数据的有效迁移。
Description
技术领域
本说明书涉及数据处理领域,尤其涉及数据迁移方法、装置、设备、分布式***及存储介质。
背景技术
分布式***是多个数据节点通过通信线路互联而构成的松散耦合的***。每个数据节点都是一个能够独立处理某项事务的计算机设备;当其中一个数据节点的负荷较重时,为了减轻该数据节点的负荷,需要将该数据节点上的部分数据迁移至其他的数据节点。
因此,有必要提供一种数据迁移方法来实现数据的迁移。
发明内容
为克服相关技术中存在的问题,本说明书提供了数据迁移方法、装置、设备、分布式***及存储介质。
第一方面,本说明书的实施例提供了一种数据迁移方法,应用于包括多个数据节点的分布式***中的每个数据节点上,所述方法包括:
确定本次数据迁移任务中本节点的待迁移表以及目标数据节点;
将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据节点的目标数据表中,所述增量数据为在所述数据迁移任务启动之后对所述待迁移表中的数据进行更改操作得到的数据。
可选地,在所述确定本次数据迁移任务中本节点的待迁移表以及目标数据节点之后,还包括:
从本节点的数据库中获取所述待迁移表的元数据;
根据所述元数据在所述目标数据节点的数据库中建立所述目标数据表。
可选地,还包括:
将所述待迁移表中的存量数据写入所述目标数据节点的目标数据表,所述存量数据为在所述数据迁移任务启动之前所述待迁移表中的数据。
可选地,在将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据节点的目标数据表中之前,还包括:
记录位点信息,所述位点信息指示在将增量数据写入所述待迁移表以及所述目标数据表之前,所述待迁移表中的主键的取值范围;
所述将所述待迁移表中的存量数据写入所述目标数据节点的目标数据表,包括:
获取所述待迁移表的所述位点信息;
根据所述位点信息指示的所述待迁移表中的主键的取值范围,确定所述待迁移表中的存量数据;
读取所述待迁移表中的存量数据并写入所述目标数据表。
可选地,在所述待迁移表和所述目标数据表的迁移状态均为第一状态的情况下,执行将所述增量数据写入所述待迁移表以及所述目标数据表的操作;
则在所述将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据表中之前,还包括:
将所述待迁移表的迁移状态确定为第一状态;
将指示所述第一状态的状态信息同步给所述目标数据节点,以使所述目标数据节点将所述目标数据表的迁移状态确定为所述第一状态。
可选地,所述增量数据为在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之后,对所述待迁移表中的数据进行更改操作得到的数据;
所述存量数据为在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之前所述待迁移表中的数据。
可选地,在所述待迁移表和所述目标数据表的迁移状态均为第二状态的情况下,执行将所述存量数据写入所述目标数据表的操作;
则在所述将所述待迁移表中的存量数据写入所述目标数据节点的目标数据表之前,还包括:
将所述待迁移表的迁移状态确定为第二状态;
将指示所述第二状态的状态信息同步给所述目标数据节点,以使所述目标数据节点将所述目标数据表的迁移状态确定为所述第二状态。
可选地,对所述迁移表中的数据进行的更改操作、以及确定所述待迁移表和所述目标数据表的迁移状态的操作为互斥操作。
可选地,所述对所述待迁移表中的数据进行的更改操作是在获取针对于所述待迁移表的读锁之后进行的;
所述确定所述待迁移表和所述目标数据表的迁移状态的操作是在获取针对于所述待迁移表的写锁之后进行的;所述读锁和所述写锁为互斥锁。
可选地,在将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据节点的目标数据表中之前,还包括:
记录位点信息,所述位点信息指示在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之前所述待迁移表中的主键的取值范围;所述位点信息用于确定所述待迁移表的存量数据。
可选地,还包括:
在所述存量数据写入完成之后,向所述目标数据节点发送切换请求,所述切换请求用于将对所述待迁移表的读操作切换至所述目标数据表;
在切换完成后停止对所述待迁移表的写操作。
可选地,对所述迁移表中的数据进行的更改操作和所述将对所述待迁移表的读操作切换至所述目标数据表的操作为互斥操作。
可选地,所述对所述待迁移表中的数据进行的更改操作是在获取针对于所述待迁移表的读锁之后进行的;
所述将对所述待迁移表的读操作切换至所述目标数据表的操作是在获取针对于所述待迁移表的写锁之后进行的;所述读锁和所述写锁为互斥锁。
可选地,所述向所述目标数据节点发送切换请求,还包括:
在校验所述待迁移表中的数据与所述目标数据表中的数据一致后,向所述目标数据节点发送切换请求。
第二方面,本说明书的实施例提供了一种数据迁移装置,应用于包括多个数据节点的分布式***中的每个数据节点上,所述装置包括:
迁移信息确定模块,用于确定本次数据迁移任务中本节点的待迁移表以及目标数据节点;
增量数据迁移模块,用于将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据节点的目标数据表中,所述增量数据为在所述数据迁移任务启动之后对所述待迁移表中的数据进行更改操作得到的数据。
第三方面,本说明书的实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如第一方面任一所述的方法。
第四方面,本说明书的实施例提供了一种分布式***,包括多个数据节点,任一所述数据节点被配置为:
确定本次数据迁移任务中本节点的待迁移表以及目标数据节点;
将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据节点的目标数据表中,所述增量数据为在所述数据迁移任务启动之后对所述待迁移表中的数据进行更改操作得到的数据。
第五方面,本说明书的实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项所述的方法。
本说明书的实施例提供的技术方案可以包括以下有益效果:
本说明书实施例中,对于增量数据采用双写的方法,保证在数据迁移任务结束之前,所有对待迁移表中的数据进行的更改操作在所述待迁移表和所述目标数据表中都执行一次,从而保证了两边操作的原子性,实现增量数据的有效迁移,由于是所述数据节点实时将所述增量数据写入所述待迁移表以及所述目标数据表中,无需借助其他第三方工具,具有广泛的应用性;进一步地,由于对增量数据采用双写的方法,在数据迁移过程中无需停止客户端对所述待迁移表的访问,有利于提高访问效率以及用户的访问体验。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1是本说明书根据一示例性实施例示出的一种数据迁移方法的应用场景图;
图2是本说明书根据一示例性实施例示出的一种数据迁移方法的流程图;
图3是本说明书根据一示例性实施例示出的第二种数据迁移方法的流程图;
图4是本说明书根据一示例性实施例示出的第三种数据迁移方法的流程图;
图5是本说明书根据一示例性实施例示出的一种数据迁移方法的时序图;
图6是本说明书数据迁移装置所在计算机设备的一种硬件结构图;
图7是本说明书根据一示例性实施例示出的一种数据迁移装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
请参阅图1,分布式***是多个数据节点通过通信线路互联而构成的松散耦合的***。每个数据节点都是一个能够独立处理某项事务的计算机设备,当其中一个数据节点的负荷较重时,为了减轻该数据节点的负荷,需要将该数据节点上的部分数据迁移至其他的数据节点。
相关技术中通常使用基于binlog的异步数据复制机制,binlog是MySQL数据库中的二进制日志,用于记录MySQL内部增删改查等对MySQL数据库有更新的内容的记录,主要用于数据库的主从复制以及增量恢复,具体而言,在进行数据迁移时,(1)对本数据节点中要迁移的数据表进行全表扫描,将表中的存量数据一条条的读出来后***到新节点的新数据表中,并且记录一个binlog的位点信息;(2)对于数据表中的增量部分(即数据迁移过程中对数据表中的数据进行更改得到的数据),将(1)中在binlog中记录的位点信息之后的所有日志数据复制到新的节点,在新的节点通过回放(replay)这些日志数据恢复出这些增量数据。
但是这种数据迁移方式主要存在以下问题:第一,需要借助第三方工具以实现binlog中日志数据的读取以及回放;第二,需要binlog日志保存足够长时间范围内的日志数据,以保证通过回放这些日志数据恢复出增量数据,但一旦binlog日志丢失,或者因为存储空间不足使得binlog日志无法写入新的日志数据等,将无法通过binlog日志来获取增量数据,导致数据迁移失败。
基于此,请参阅图2,本说明书实施例提供了一种数据迁移方法,应用于包括多个数据节点的分布式***中的每个数据节点上,所述方法包括:
在步骤S101中,确定本次数据迁移任务中本节点的待迁移表以及目标数据节点。
在步骤S102中,将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据节点的目标数据表中,所述增量数据为在所述数据迁移任务启动之后对所述待迁移表中的数据进行更改操作得到的数据。
在一实施例中,所述数据迁移任务可以由客户端触发,也可以由所述分布式***自动触发;在一个例子中,可以由客户端向所述数据节点发送携带有所述数据迁移任务的指令,所述数据节点接收该指令并根据该指令执行所述数据迁移任务;在另一个例子中,所述分布式***中包括一调度***,所述调度***用于对所述分布式***中的多个数据节点进行有效管理,所述调度***在检测到某一个数据节点的负荷超过预设阈值时,自动向该数据节点发送携带有所述数据迁移任务的指令,所述数据节点接收该指令并根据该指令执行所述数据迁移任务。
所述数据节点在接收到携带有所述数据迁移任务的指令之后,首先确定本次数据迁移任务中本节点的待迁移表以及目标数据节点,即本次数据迁移任务指示要将所述待迁移表及其数据迁移至所述目标数据节点的数据库中。
首先,所述数据节点从本节点的数据库中获取所述待迁移表的元数据,所述元数据是为描述数据的数据,主要是描述数据属性的信息;然后所述数据节点根据所述元数据在所述目标数据节点的数据库中建立所述目标数据表,进而可以将所述待迁移表中的数据迁移至所述目标数据表中。
在一种可能的实现方式中,为了保证数据节点之间的数据安全,所述数据节点在所述目标数据节点的数据库中建立所述目标数据表之前,需要向所述目标数据节点发送通知消息,所述通知消息指示要在所述目标数据节点的数据库中建立目标数据表,所述数据节点在接收到所述目标数据节点针对于所述通知消息返回的响应之后,才在所述目标数据节点的数据库中建立所述目标数据表;从而有效保证数据节点之间的数据安全。
在建立所述目标数据表之后,所述数据节点将所述待迁移表中的存量数据写入所述目标数据节点的目标数据表,所述存量数据为在所述数据迁移任务启动之前所述待迁移表中的数据;以及所述数据节点将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据表中,所述增量数据为在所述数据迁移任务启动之后对所述待迁移表中的数据进行更改操作得到的数据。其中,所述更改操作是指对所述迁移表中的数据进行的基本操作,诸如对所述待迁移表中的数据的***、删除或者修改等操作;在一个例子中,所述操作可以是DML(Data Manipulation Language,数据操纵语言)操作。
在一实施例中,在将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据节点的目标数据表中之前,所述数据节点会先记录位点信息,所述位点信息指示在将增量数据写入所述待迁移表以及所述目标数据表之前,所述待迁移表中的主键的取值范围,所述位点信息用于确定所述待迁移表中的存量数据,则在准备存量数据的迁移时,所述数据节点首先获取所述待迁移表的所述位点信息,然后根据所述位点信息指示的所述待迁移表中的主键的取值范围,确定所述待迁移表中的存量数据,最后读取所述待迁移表中的存量数据并写入所述目标数据表。
本实施例中,对于增量数据采用双写的方法,保证在数据迁移任务结束之前,所有对待迁移表中的数据进行的更改操作在所述待迁移表和所述目标数据表中都执行一次,从而保证了两边操作的原子性,实现增量数据的有效迁移,由于是所述数据节点实时将所述增量数据写入所述待迁移表以及所述目标数据表中,无需借助第三方工具,也无需依赖于binlog日志,从而具有广泛的应用性;进一步地,由于对增量数据采用双写的方法,在数据迁移过程中无需停止客户端对所述待迁移表的访问,有利于提高访问效率以及用户的访问体验。
在一种实现方式中,所述数据节点可以通过XA(eXtended Architecture)事务来实现对增量数据的双写(即写入所述待迁移表和所述目标数据表),XA事务是一种采用两阶段提交方式来管理分布式事务;具体而言,所述数据节点的数据库对应有数据库资源管理器,所述数据节点在接收到携带所述更改操作的指令之后,将所述携带所述更改操作的指令传输给本节点的数据库资源管理器和目标数据节点的数据库资源管理器,接下来通过XA事务实现数据双写,第一阶段为准备(prepare)阶段:在本节点的数据库资源管理器准备好执行所述更改操作之后,向所述数据节点报告已准备就绪;以及所述目标数据节点的数据库资源管理器准备好执行所述更改操作之后,向所述数据节点报告已准备就绪;第二阶段为提交阶段(commit):当所述数据节点确认本节点的数据库资源管理器和所述目标数据节点的数据库资源管理器都准备好了之后,向本节点的数据库资源管理器和所述目标数据节点的数据库资源管理器发送提交命令,使得本节点的数据库资源管理器基于所述提交命令执行对所述待迁移表的更改操作,以及使得所述目标数据节点的数据库资源管理器基于所述提交命令执行对所述目标数据表的更改操作,从而保证了两边操作的原子性和一致性。
在一实施例中,所述数据节点是在所述待迁移表和所述目标数据表的迁移状态均为第一状态的情况下,执行将所述增量数据写入所述待迁移表以及所述目标数据表的操作,则请参阅图3,为本说明书实施例提供的第二种数据迁移方式的流程图,所述方法包括:
在步骤S201中,确定本次数据迁移任务中本节点的待迁移表以及目标数据节点。
在步骤S202中,将所述待迁移表的迁移状态确定为第一状态;以及,将指示所述第一状态的状态信息同步给所述目标数据节点,以使所述目标数据节点将所述目标数据表的迁移状态确定为所述第一状态。
在步骤S203中,将所述待迁移表中的存量数据写入所述目标数据节点的目标数据表,所述存量数据为在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之前所述待迁移表中的数据。
在步骤S204中,将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据表中,所述增量数据为在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之后,对所述待迁移表中的数据进行更改操作得到的数据。
在一实施例中,在所述将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据表中之前,所述数据节点首先将所述待迁移表的迁移状态确定为第一状态,所述第一状态指示能够对增量数据采用双写的操作方式,即能够将增量数据写入所述待迁移表和所述目标数据表两个表中,然后将指示所述第一状态的状态信息同步给所述目标数据节点,以使所述目标数据节点将所述目标数据表的迁移状态确定为所述第一状态,这样,在所述待迁移表和所述目标数据表的迁移状态均为第一状态之后,客户端发送的针对于所述待迁移表的更改操作可以在所述待迁移表和所述目标数据表两个表中执行。
考虑到数据迁移任务进行过程中,可以随时对所述待迁移表中的数据进行更改的,如果在确定所述待迁移表和所述目标数据表的迁移状态为第一状态的过程中接收到对所述迁移表中的数据进行的更改操作,如果两者同时执行,可能会漏掉对某些增量数据的双写,从而无法保证所述待迁移表的数据和所述目标数据表的数据一致性。因此,本说明书实施例中对所述迁移表中的数据进行的更改操作、以及确定所述待迁移表和所述目标数据表的迁移状态的操作为互斥操作。
即是说,所述数据节点在确定所述待迁移表将所述待迁移表的迁移状态确定为所述第一状态时,需要等待当前所有的针对于待迁移表的更改操作执行完毕之后才执行的;而在确定所述待迁移表和所述目标数据表的迁移状态为第一状态期间也无法执行针对于待迁移表的更改操作,需是等待所述待迁移表和所述目标数据表的迁移状态均确定为第一状态之后才能执行针对于待迁移表的更改操作,这样有利于保证所述待迁移表的数据和所述目标数据表的数据一致性。
在一种实现方式中,可以通过竞争一个MDL元数据锁的方式来保证两者的有序进行,其中,所述对所述待迁移表中的数据进行的更改操作是在获取针对于所述待迁移表的读锁之后进行的;所述确定所述待迁移表和所述目标数据表的迁移状态为第一状态的操作是在获取针对于所述待迁移表的写锁之后进行的;所述读锁和所述写锁为互斥锁。即是说,在执行完对所述待迁移表中的数据进行的更改操作并释放所述读锁之后,才能获取写锁并执行确定所述待迁移表和所述目标数据表的迁移状态为第一状态的操作;在执行完确定所述待迁移表和所述目标数据表的迁移状态为第一状态的操作并释放所述写锁之后,才能获取读锁并执行对所述待迁移表中的数据进行的更改操作。从而有利于保证所述待迁移表的数据和所述目标数据表的数据一致性。
其中,执行所述确定所述待迁移表和所述目标数据表的迁移状态为第一状态的操作是非常快速的,在这期间,客户端向所述数据节点发送的针对于所述待迁移表的更改操作虽然需要等待所述确定所述待迁移表和所述目标数据表的迁移状态的操作执行完,但等待时间是很短,使得在用户层面上是不会感知到这一变化,从用户角度看,用户可以正常通过客户端进行对所述待迁移表的更改操作。
可以这么说,所述数据节点是在所述待迁移表和所述目标数据表的迁移状态均为第一状态的情况下,执行将所述增量数据写入所述待迁移表以及所述目标数据表的操作,而在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之前针对于所述待迁移表的更改操作得到的数据,只写入所述待迁移表中,即是说,所述增量数据为在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之后,对所述待迁移表中的数据进行更改操作得到的数据;所述存量数据为在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之前所述待迁移表中的数据。
在一实施例中,在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之后,所述数据节点可以记录对于所述待迁移表的位点信息,所述位点信息指示在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之前所述待迁移表中的主键的取值范围,这样可以基于所述位点信息定位出所述待迁移表中的存量数据。
在进行存量数据的迁移之前,所述数据节点可以获取所述待迁移表的位点信息,所述位点信息指示在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之前所述待迁移表中的主键的取值范围,比如所述位点信息包括所述待迁移表的主键的最大值和最小值;然后所述数据节点根据所述位点信息指示的所述待迁移表中的主键的取值范围确定所述待迁移表中的存量数据,读取所述待迁移表中的存量数据并写入所述目标数据表。本实施例基于位点信息实现对存量数据的准确定位,实现对存量数据的有效迁移。
同样,所述数据节点是在所述待迁移表和所述目标数据表的迁移状态均为第二状态的情况下,执行将所述存量数据写入所述目标数据表的操作;则在所述将所述待迁移表中的存量数据写入所述目标数据节点的目标数据表之前,所述数据节点首先将所述待迁移表的迁移状态确定为第二状态,能够将所述待迁移表的存量数据写入所述目标数据表中,然后将指示所述第二状态的状态信息同步给所述目标数据节点,以使所述目标数据节点将所述目标数据表的迁移状态确定为所述第二状态。
需要说明的是,所述第一状态指示可以开始对增量数据采用双写的操作方式,所述第二状态指示可以开始将所述待迁移表的存量数据写入所述目标数据表中,所述第一状态和所述第二状态并不冲突,两者可以同时存在。
在一实施例中,为了保证所述待迁移表的数据和所述目标数据表的数据一致性,避免在确定所述待迁移表和所述目标数据表的迁移状态期间客户端针对于所述待迁移表的更改操作导致数据不一致的影响,本说明书实施例中对所述迁移表中的数据进行的更改操作、以及确定所述待迁移表和所述目标数据表的迁移状态的操作为互斥操作。
即是说,所述数据节点在确定所述待迁移表将所述待迁移表的迁移状态确定为所述第二状态时,需要等待当前所有的针对于待迁移表的更改操作执行完毕之后才执行的;而在确定所述待迁移表和所述目标数据表的迁移状态为第二状态期间也无法执行针对于待迁移表的更改操作,需是等待所述待迁移表和所述目标数据表的迁移状态均确定为第二状态之后才能执行针对于待迁移表的更改操作,这样有利于保证所述待迁移表的数据和所述目标数据表的数据一致性。
在一种实现方式中,可以通过竞争一个MDL元数据锁的方式来保证两者的有序进行,其中,所述对所述待迁移表中的数据进行的更改操作是在获取针对于所述待迁移表的读锁之后进行的;所述确定所述待迁移表和所述目标数据表的迁移状态为第二状态的操作是在获取针对于所述待迁移表的写锁之后进行的;所述读锁和所述写锁为互斥锁。从而有利于保证所述待迁移表的数据和所述目标数据表的数据一致性。
其中,执行所述确定所述待迁移表和所述目标数据表的迁移状态为第二状态的操作是非常快速的,在这期间,客户端向所述数据节点发送的针对于所述待迁移表的更改操作虽然需要等待所述确定所述待迁移表和所述目标数据表的迁移状态为第二状态的操作执行完,但等待时间是很短,使得在用户层面上是不会感知到这一变化,从用户角度看,用户可以正常通过客户端进行对所述待迁移表的更改操作。
进一步地,考虑到相关技术中在将数据迁移完成之后,通常会将针对于待迁移表的读操作和写操作停掉之后,然后针对于所述待迁移表的读操作和写操作接入到所述目标数据表中,在停掉到接入期间,与所述待迁移表有关的业务是不可用的,对于一些需要提供7×24(即全天候不间断服务)在线服务的业务方,这是难以接受的。基于此,本说明书提供了一种切换方式,在所述存量数据写入完成之后,增量数据也通过实时的双写方式写入所述目标数据表中,则所述数据节点可以向所述目标数据节点发送切换请求,所述切换请求用于将对所述待迁移表的读操作切换至所述目标数据表,并在切换过程中继续保持增量数据双写方式,即是说,与所述待迁移表有关的业务可以继续使用,并在切换完成后停止对所述待迁移表的写操作,本实施例结合数据双写方式,使得在数据表切换过程中用户仍然可以通过客户端对所述待迁移表进行操作,实现在线切换,从而有利于提高用户的使用体验。
为了保证所述待迁移表的数据和所述目标数据表的数据一致性,本说明书实施例中对所述迁移表中的数据进行的更改操作和所述将对所述待迁移表的读操作切换至所述目标数据表发送所述切换请求的操作为互斥操作。
即是说,所述数据节点在发送切换请求之前,需要等待当前所有的针对于待迁移表的更改操作执行完毕之后才执行的;而在发送切换请求到从所述目标数据节点接收到针对于所述切换请求的响应期间也无法执行针对于待迁移表的更改操作,需是等待接收到针对于所述切换请求的响应之后,表明所述将对所述待迁移表的读操作切换至所述目标数据表发送所述切换请求的操作已执行完成,这时才能执行针对于待迁移表的更改操作,这样有利于保证所述待迁移表的数据和所述目标数据表的数据一致性。
在一种实现方式中,可以通过竞争一个MDL元数据锁的方式来保证两者的有序进行,其中,所述对所述待迁移表中的数据进行的更改操作是在获取针对于所述待迁移表的读锁之后进行的,在执行后所述更改操作后释放读锁;所述将对所述待迁移表的读操作切换至所述目标数据表的操作是在获取针对于所述待迁移表的写锁之后进行的,即所述数据节点在获取写锁之后,向所述目标数据节点发送切换请求,并在接收到针对于所述切换请求的响应之后,表明所述将对所述待迁移表的读操作切换至所述目标数据表发送所述切换请求的操作已执行完成,这时释放写锁;所述读锁和所述写锁为互斥锁。从而有利于保证所述待迁移表的数据和所述目标数据表的数据一致性。
其中,执行所述将对所述待迁移表的读操作切换至所述目标数据表的操作是非常快速的,在这期间,客户端向所述数据节点发送的针对于所述待迁移表的更改操作或者查询操作虽然需要等待所述将对所述待迁移表的读操作切换至所述目标数据表的操作执行完,但等待时间是很短,使得在用户层面上是不会感知到这一变化,从用户角度看,用户可以正常通过客户端进行对所述待迁移表的更改操作或者查询操作,可能会有一个很短的延时存在,但不影响用户的使用。
在一实施例中,在将所述存量数据写入完成之后,为了保证数据的一致性,所述数据节点先校验所述待迁移表中的数据与所述目标数据表中的数据是否一致,在一致的情况下所述数据节点向所述目标数据节点发送切换请求,所述切换请求用于将对所述待迁移表的读操作切换至所述目标数据表,在从所述目标数据节点接收到针对于所述切换请求的响应时,表明切换完成,则在切换完成之后停止对所述待迁移表的写操作,接着,所述数据节点可以将在本节点数据库中的与所述待迁移表相关的数据删除,至此,针对于所述待迁移表的数据迁移任务结束。
请参阅图4,为本说明书实施例提供的第三种数据迁移方式的流程图,所述方法包括:
在步骤S301中,确定本次数据迁移任务中本节点的待迁移表以及目标数据节点。
在步骤S302中,将所述待迁移表的迁移状态确定为第一状态;以及,将指示所述第一状态的状态信息同步给所述目标数据节点,以使所述目标数据节点将所述目标数据表的迁移状态确定为所述第一状态。
在步骤S303中,记录位点信息,所述位点信息指示在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之前所述待迁移表中的主键的取值范围。
在步骤S304中,根据所述位点信息确定所述待迁移表中的存量数据,并将所述待迁移表中的存量数据写入所述目标数据节点的目标数据表,所述存量数据为在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之前所述待迁移表中的数据。
在步骤S305中,将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据表中,所述增量数据为在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之后,对所述待迁移表中的数据进行更改操作得到的数据。
在步骤S306中,在所述存量数据写入完成之后,校验所述待迁移表中的数据与所述目标数据表中的数据是否一致。若是,执行步骤S307~S309,若否,执行步骤S310~S311。
在步骤S307中,若是,向所述目标数据节点发送切换请求,所述切换请求用于将对所述待迁移表的读操作切换至所述目标数据表。
在步骤S308中,在切换完成后停止对所述待迁移表的写操作。
在步骤S309中,删除所述待迁移表。
在步骤S310中,若否,停止对所述目标数据表的写操作。
在步骤S311中,删除所述目标数据表。
另外,本说明书由所述数据节点来执行所述数据迁移任务还有这么一个好处,相关技术中的基于binlog的异步数据复制机制来实现数据迁移,由于是借助于第三方工具,对于数据库没有完整的控制权,因此当在数据迁移过程中如果用户通过客户端对数据表执行了某些操作,例如通过ALTER TABLE 语句(用于在已有的表中添加、修改或删除列)来对数据表中的数据进行更改时,那么迁移至新节点的数据可能有部分是无效的,此时需要重新进行数据迁移任务,耗费了过多的计算资源。而本说明书的数据迁移方法是直接在数据节点上进行的,对于数据节点上的数据库有完整的控制权,则在数据迁移过程中如果接收到客户端针对于所述待迁移表的DDL(Data Definition Language,数据定义语言)操作,则可以在等待所述待迁移表迁移完成之后再进行,或者可以向客户端返回一个错误提示,所述错误提示用于告知用户在数据迁移过程中不能进行DDL操作。
这里以将在数据节点1的数据库1中的待迁移表迁移至数据节点2中的数据库2为例进行说明:请参阅图5,为本说明实施例提供的一种数据迁移方法的时序图,包括:
1、客户端向数据节点1发送携带有数据迁移任务的指令A。
2、数据节点1基于指令A向客户端发送响应A,响应A用于向客户端表示已收到指令A。
3、数据节点1根据所述数据迁移任务从数据库1中获取待迁移表的元数据;
4、数据节点1根据所述待迁移表的元数据在数据库2中建立目标数据表。
5、客户端向数据节点1发送携带有DML操作的指令B;所述DML操作是针对于所述待迁移表中的数据。
6、数据节点1获取读锁后,对所述待迁移表中的数据执行DML操作。
7、在执行完成后,所述数据节点1向客户端返回携带有执行结果的响应B并释放读锁。
8、数据节点1获取写锁后,确定所述待迁移表的迁移状态为第一状态。
9、数据节点1将指示所述第一状态的状态信息同步给数据节点2,以使数据节点2将所述目标数据表的迁移状态确定为所述第一状态。
10、数据节点2向数据节点1返回携带有同步结果的响应C,所述同步结果用于向数据节点1表示已确定目标数据表的迁移状态为第一状态;数据节点1基于所述响应C释放写锁。
其中,在步骤8~步骤10期间,客户端向数据节点1发送的携带有DML操作的指令需等待步骤10结束之后,获取读锁并开始执行。
11、客户端向数据节点1发送携带有DML操作的指令D;所述DML操作是针对于所述待迁移表中的数据。
12、数据节点1获取读锁后,对所述待迁移表中的数据和所述目标数据表执行DML操作。
13、在执行完成后,所述数据节点1向客户端返回携带有执行结果的响应D并释放读锁。
14、数据节点1从数据库1获取位点信息;所述位点信息在确定所述待迁移表和所述目标数据表的迁移状态均为第一状态之后记录的。
15、数据节点1获取写锁后,确定所述待迁移表的迁移状态为第二状态。
16、数据节点1将指示所述第二状态的状态信息同步给数据节点2,以使数据节点2将所述目标数据表的迁移状态确定为所述第二状态。
17、数据节点2向数据节点1返回携带有同步结果的响应E,响应E用于向数据节点1表示已确定目标数据表的迁移状态为第二状态;数据节点1基于所述响应E释放写锁。
其中,在步骤15~步骤17期间,客户端向数据节点1发送的携带有DML操作的指令需等待步骤17执行完成之后,获取读锁并开始执行。
18、数据节点1根据所述位点信息确定所述待迁移表中的存量数据,将所述存量数据写入所述目标数据表中。
19、在所述存量数据写入完成之后,数据节点1获取写锁,然后向数据节点2发送切换请求,所述切换请求用于将对所述待迁移表的读操作切换至所述目标数据表。
20、在切换完成后,数据节点2针对于所述切换请求向数据节点1返回携带有操作结果的响应F;数据节点1基于响应F释放写锁。
其中,在步骤19~步骤20期间,客户端向数据节点1发送的携带有DML操作的指令需等待步骤20执行完成之后,获取读锁并开始执行。
21、数据节点1停止对所述待迁移表的写操作。
与前述数据迁移方法的实施例相对应,本说明书实施例还提供了数据迁移装置及其所应用的电子设备的实施例。
本说明书数据迁移装置的实施例可以应用在计算机设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在计算机设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本说明书数据迁移装置所在计算机设备的一种硬件结构图,除了图6所示的处理器510、内存530、网络接口520、以及非易失性存储器540之外,实施例中装置531所在的计算机设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。
如图7所示,是本说明书根据一示例性实施例示出的一种数据迁移装置的框图,应用于包括多个数据节点的分布式***中的每个数据节点上,所述装置包括:
迁移信息确定模块601,用于确定本次数据迁移任务中本节点的待迁移表以及目标数据节点。
存量数据迁移模块602,用于将所述待迁移表中的存量数据写入所述目标数据节点的目标数据表,所述存量数据为在所述数据迁移任务启动之前所述待迁移表中的数据。
增量数据迁移模块603,用于将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据表中,所述增量数据为在所述数据迁移任务启动之后对所述待迁移表中的数据进行更改操作得到的数据。
在一实施例中,在所述待迁移表和所述目标数据表的迁移状态均为第一状态的情况下,执行将所述增量数据写入所述待迁移表以及所述目标数据表的操作。
则在所述增量数据迁移模块603之前,还包括:第一状态确定模块,用于将所述待迁移表的迁移状态确定为第一状态;将指示所述第一状态的状态信息同步给所述目标数据节点,以使所述目标数据节点将所述目标数据表的迁移状态确定为所述第一状态。
在一实施例中,所述增量数据为在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之后,对所述待迁移表中的数据进行更改操作得到的数据;所述存量数据为在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之前所述待迁移表中的数据。
在一实施例中,在所述待迁移表和所述目标数据表的迁移状态均为第二状态的情况下,执行将所述存量数据写入所述目标数据表的操作。
则在所述存量数据迁移模块602之前,还包括:第二状态确定模块,用于将所述待迁移表的迁移状态确定为第二状态;将指示所述第二状态的状态信息同步给所述目标数据节点,以使所述目标数据节点将所述目标数据表的迁移状态确定为所述第二状态。
在一实施例中,对所述迁移表中的数据进行的更改操作、以及确定所述待迁移表和所述目标数据表的迁移状态的操作为互斥操作。
在一实施例中,所述对所述待迁移表中的数据进行的更改操作是在获取针对于所述待迁移表的读锁之后进行的;所述确定所述待迁移表和所述目标数据表的迁移状态的操作是在获取针对于所述待迁移表的写锁之后进行的;所述读锁和所述写锁为互斥锁。
在一实施例中,还包括:切换模块,用于在所述存量数据写入完成之后,向所述目标数据节点发送切换请求,所述切换请求用于将对所述待迁移表的读操作切换至所述目标数据表;写操作停止模块,用于在切换完成后停止对所述待迁移表的写操作。
在一实施例中,对所述迁移表中的数据进行的更改操作和所述将对所述待迁移表的读操作切换至所述目标数据表的操作为互斥操作。
在一实施例中,所述对所述待迁移表中的数据进行的更改操作是在获取针对于所述待迁移表的读锁之后进行的;所述将对所述待迁移表的读操作切换至所述目标数据表的操作是在获取针对于所述待迁移表的写锁之后进行的;所述读锁和所述写锁为互斥锁。
在一实施例中,在所述迁移信息确定模块601之后,还包括:目标数据表建立模块,用于从本节点的数据库中获取所述待迁移表的元数据;根据所述元数据在所述目标数据节点的数据库中建立所述目标数据表。
在一实施例中,在所述存量数据迁移模块602之前,还包括:位点信息获取模块,用于获取所述待迁移表的位点信息,所述位点信息指示在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之前所述待迁移表中的主键的取值范围。
所述存量数据迁移模块602包括:根据所述位点信息指示的所述待迁移表中的主键的取值范围确定所述待迁移表中的存量数据;读取所述待迁移表中的存量数据并写入所述目标数据表。
在一实施例中,所述切换模块还包括:在校验所述待迁移表中的数据与所述目标数据表中的数据一致后,向所述目标数据节点发送切换请求。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本说明书的实施例还提供了一种计算机设备,包括:处理器;用于存储处理器可执行指令的存储器。
其中,所述处理器被配置为:
确定本次数据迁移任务中本节点的待迁移表以及目标数据节点;
将所述待迁移表中的存量数据写入所述目标数据节点的目标数据表,所述存量数据为在所述数据迁移任务启动之前所述待迁移表中的数据;以及,
将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据表中,所述增量数据为在所述数据迁移任务启动之后对所述待迁移表中的数据进行更改操作得到的数据。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书的实施例还提供了一种分布式***,包括多个数据节点,所述数据节点包括但不限于服务器、终端等计算机设备,任一所述数据节点被配置为:
确定本次数据迁移任务中本节点的待迁移表以及目标数据节点;
将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据节点的目标数据表中,所述增量数据为在所述数据迁移任务启动之后对所述待迁移表中的数据进行更改操作得到的数据。
可选地,在所述确定本次数据迁移任务中本节点的待迁移表以及目标数据节点之后,所述数据节点还被配置为:从本节点的数据库中获取所述待迁移表的元数据;根据所述元数据在所述目标数据节点的数据库中建立所述目标数据表。
可选地,所述数据节点还被配置为:将所述待迁移表中的存量数据写入所述目标数据节点的目标数据表,所述存量数据为在所述数据迁移任务启动之前所述待迁移表中的数据。
可选地,在将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据节点的目标数据表中之前,所述数据节点还被配置为:记录位点信息,所述位点信息指示在将增量数据写入所述待迁移表以及所述目标数据表之前,所述待迁移表中的主键的取值范围。
在将所述待迁移表中的存量数据写入所述目标数据节点的目标数据表时,所述数据节点具体被配置为:获取所述待迁移表的所述位点信息; 根据所述位点信息指示的所述待迁移表中的主键的取值范围,确定所述待迁移表中的存量数据;读取所述待迁移表中的存量数据并写入所述目标数据表。
可选地,在所述待迁移表和所述目标数据表的迁移状态均为第一状态的情况下,执行将所述增量数据写入所述待迁移表以及所述目标数据表的操作。
则在所述将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据表中之前,所述数据节点还被配置为将所述待迁移表的迁移状态确定为第一状态;将指示所述第一状态的状态信息同步给所述目标数据节点,以使所述目标数据节点将所述目标数据表的迁移状态确定为所述第一状态。
可选地,所述增量数据为在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之后,对所述待迁移表中的数据进行更改操作得到的数据。
所述存量数据为在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之前所述待迁移表中的数据。
可选地,在所述待迁移表和所述目标数据表的迁移状态均为第二状态的情况下,执行将所述存量数据写入所述目标数据表的操作。
则在所述将所述待迁移表中的存量数据写入所述目标数据节点的目标数据表之前,所述数据节点还被配置为:将所述待迁移表的迁移状态确定为第二状态;将指示所述第二状态的状态信息同步给所述目标数据节点,以使所述目标数据节点将所述目标数据表的迁移状态确定为所述第二状态。
可选地,对所述迁移表中的数据进行的更改操作、以及确定所述待迁移表和所述目标数据表的迁移状态的操作为互斥操作。
可选地,所述对所述待迁移表中的数据进行的更改操作是在获取针对于所述待迁移表的读锁之后进行的。
所述确定所述待迁移表和所述目标数据表的迁移状态的操作是在获取针对于所述待迁移表的写锁之后进行的;所述读锁和所述写锁为互斥锁。
可选地,在将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据节点的目标数据表中之前,所述数据节点还被配置为:记录位点信息,所述位点信息指示在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之前所述待迁移表中的主键的取值范围;所述位点信息被配置为确定所述待迁移表的存量数据。
可选地,所述数据节点还被配置为:在所述存量数据写入完成之后,向所述目标数据节点发送切换请求,所述切换请求被配置为将对所述待迁移表的读操作切换至所述目标数据表;以及,在切换完成后停止对所述待迁移表的写操作。
可选地,对所述迁移表中的数据进行的更改操作和所述将对所述待迁移表的读操作切换至所述目标数据表的操作为互斥操作。
可选地,所述对所述待迁移表中的数据进行的更改操作是在获取针对于所述待迁移表的读锁之后进行的。
所述将对所述待迁移表的读操作切换至所述目标数据表的操作是在获取针对于所述待迁移表的写锁之后进行的;所述读锁和所述写锁为互斥锁。
可选地,在向所述目标数据节点发送切换请求时,所述数据节点具体被配置为:在校验所述待迁移表中的数据与所述目标数据表中的数据一致后,向所述目标数据节点发送切换请求。
本说明书的实施例还提供了一种计算机存储介质,所述存储介质中存储有程序指令,当由处理器执行所述程序指令时实现上述任意一项所述的方法。
本说明书实施例可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机可用存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
Claims (18)
1.一种数据迁移方法,应用于包括多个数据节点的分布式***中的每个数据节点上,所述方法包括:
确定本次数据迁移任务中本节点的待迁移表以及目标数据节点;
将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据节点的目标数据表中,所述增量数据为在所述数据迁移任务启动之后对所述待迁移表中的数据进行更改操作得到的数据。
2.根据权利要求1所述的方法,在所述确定本次数据迁移任务中本节点的待迁移表以及目标数据节点之后,还包括:
从本节点的数据库中获取所述待迁移表的元数据;
根据所述元数据在所述目标数据节点的数据库中建立所述目标数据表。
3.根据权利要求1所述的方法,还包括:
将所述待迁移表中的存量数据写入所述目标数据节点的目标数据表,所述存量数据为在所述数据迁移任务启动之前所述待迁移表中的数据。
4.根据权利要求3所述的方法,在将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据节点的目标数据表中之前,还包括:
记录位点信息,所述位点信息指示在将增量数据写入所述待迁移表以及所述目标数据表之前,所述待迁移表中的主键的取值范围;
所述将所述待迁移表中的存量数据写入所述目标数据节点的目标数据表,包括:
获取所述待迁移表的所述位点信息;
根据所述位点信息指示的所述待迁移表中的主键的取值范围,确定所述待迁移表中的存量数据;
读取所述待迁移表中的存量数据并写入所述目标数据表。
5.根据权利要求3所述的方法,在所述待迁移表和所述目标数据表的迁移状态均为第一状态的情况下,执行将所述增量数据写入所述待迁移表以及所述目标数据表的操作;
则在所述将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据表中之前,还包括:
将所述待迁移表的迁移状态确定为第一状态;
将指示所述第一状态的状态信息同步给所述目标数据节点,以使所述目标数据节点将所述目标数据表的迁移状态确定为所述第一状态。
6.根据权利要求5所述的方法,所述增量数据为在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之后,对所述待迁移表中的数据进行更改操作得到的数据;
所述存量数据为在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之前所述待迁移表中的数据。
7.根据权利要求3所述的方法,在所述待迁移表和所述目标数据表的迁移状态均为第二状态的情况下,执行将所述存量数据写入所述目标数据表的操作;
则在所述将所述待迁移表中的存量数据写入所述目标数据节点的目标数据表之前,还包括:
将所述待迁移表的迁移状态确定为第二状态;
将指示所述第二状态的状态信息同步给所述目标数据节点,以使所述目标数据节点将所述目标数据表的迁移状态确定为所述第二状态。
8.根据权利要求5或7所述的方法,对所述迁移表中的数据进行的更改操作、以及确定所述待迁移表和所述目标数据表的迁移状态的操作为互斥操作。
9.根据权利要求8所述的方法,所述对所述待迁移表中的数据进行的更改操作是在获取针对于所述待迁移表的读锁之后进行的;
所述确定所述待迁移表和所述目标数据表的迁移状态的操作是在获取针对于所述待迁移表的写锁之后进行的;所述读锁和所述写锁为互斥锁。
10.根据权利要求5所述的方法,在将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据节点的目标数据表中之前,还包括:
记录位点信息,所述位点信息指示在确定所述待迁移表和所述目标数据表的迁移状态均为所述第一状态之前所述待迁移表中的主键的取值范围;所述位点信息用于确定所述待迁移表的存量数据。
11.根据权利要求1所述的方法,还包括:
在所述存量数据写入完成之后,向所述目标数据节点发送切换请求,所述切换请求用于将对所述待迁移表的读操作切换至所述目标数据表;以及,
在切换完成后停止对所述待迁移表的写操作。
12.根据权利要求11所述的方法,对所述迁移表中的数据进行的更改操作和所述将对所述待迁移表的读操作切换至所述目标数据表的操作为互斥操作。
13.根据权利要求12所述的方法,所述对所述待迁移表中的数据进行的更改操作是在获取针对于所述待迁移表的读锁之后进行的;
所述将对所述待迁移表的读操作切换至所述目标数据表的操作是在获取针对于所述待迁移表的写锁之后进行的;所述读锁和所述写锁为互斥锁。
14.根据权利要求11所述的方法,所述向所述目标数据节点发送切换请求,还包括:
在校验所述待迁移表中的数据与所述目标数据表中的数据一致后,向所述目标数据节点发送切换请求。
15.一种数据迁移装置,应用于包括多个数据节点的分布式***中的每个数据节点上,所述装置包括:
迁移信息确定模块,用于确定本次数据迁移任务中本节点的待迁移表以及目标数据节点;
增量数据迁移模块,用于将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据节点的目标数据表中,所述增量数据为在所述数据迁移任务启动之后对所述待迁移表中的数据进行更改操作得到的数据。
16.一种分布式***,包括多个数据节点,任一所述数据节点被配置为:
确定本次数据迁移任务中本节点的待迁移表以及目标数据节点;
将所述待迁移表中的增量数据写入所述待迁移表以及所述目标数据节点的目标数据表中,所述增量数据为在所述数据迁移任务启动之后对所述待迁移表中的数据进行更改操作得到的数据。
17.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求1至14任一所述的方法。
18.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至14任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010923655.1A CN111797172B (zh) | 2020-09-04 | 2020-09-04 | 数据迁移方法、装置、设备、分布式***及存储介质 |
US18/043,892 US20240028568A1 (en) | 2020-09-04 | 2021-09-03 | Data migration method and apparatus, device, distributed system and storage medium |
PCT/CN2021/116371 WO2022048622A1 (zh) | 2020-09-04 | 2021-09-03 | 数据迁移方法、装置、设备、分布式***及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010923655.1A CN111797172B (zh) | 2020-09-04 | 2020-09-04 | 数据迁移方法、装置、设备、分布式***及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111797172A true CN111797172A (zh) | 2020-10-20 |
CN111797172B CN111797172B (zh) | 2021-03-23 |
Family
ID=72834193
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010923655.1A Active CN111797172B (zh) | 2020-09-04 | 2020-09-04 | 数据迁移方法、装置、设备、分布式***及存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240028568A1 (zh) |
CN (1) | CN111797172B (zh) |
WO (1) | WO2022048622A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925743A (zh) * | 2021-02-07 | 2021-06-08 | 中国工商银行股份有限公司 | 一种文件生成方法、装置及存储介质 |
CN113568886A (zh) * | 2021-07-21 | 2021-10-29 | 上海淇玥信息技术有限公司 | 一种数据迁移方法、装置和电子设备 |
CN114003585A (zh) * | 2021-11-04 | 2022-02-01 | 北京房江湖科技有限公司 | 一种数据处理的方法、装置和存储介质 |
WO2022048622A1 (zh) * | 2020-09-04 | 2022-03-10 | 阿里云计算有限公司 | 数据迁移方法、装置、设备、分布式***及存储介质 |
CN114579059A (zh) * | 2022-03-14 | 2022-06-03 | 上海爱数信息技术股份有限公司 | 一种文件数据迁移方法、装置、设备及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115905300B (zh) * | 2023-03-14 | 2023-05-30 | 云账户技术(天津)有限公司 | 一种TiDB数据库的存量和增量数据融合捕获的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104486373A (zh) * | 2014-11-21 | 2015-04-01 | 华为技术有限公司 | 一种锁资源迁移方法、节点及分布式*** |
CN105824846A (zh) * | 2015-01-09 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 数据迁移方法及装置 |
CN107016029A (zh) * | 2016-12-13 | 2017-08-04 | 阿里巴巴集团控股有限公司 | 一种业务数据的处理方法、装置及*** |
CN108132949A (zh) * | 2016-12-01 | 2018-06-08 | 腾讯科技(深圳)有限公司 | 数据库集群中数据迁移的方法及装置 |
CN111104392A (zh) * | 2019-12-12 | 2020-05-05 | 京东数字科技控股有限公司 | 一种数据库迁移方法、装置、电子设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019140B (zh) * | 2017-12-29 | 2021-07-16 | 华为技术有限公司 | 数据迁移方法、装置、设备以及计算机可读存储介质 |
CN110399356B (zh) * | 2019-06-14 | 2023-02-24 | 阿里巴巴集团控股有限公司 | 一种在线数据迁移方法、装置、计算设备及存储介质 |
CN111797172B (zh) * | 2020-09-04 | 2021-03-23 | 阿里云计算有限公司 | 数据迁移方法、装置、设备、分布式***及存储介质 |
-
2020
- 2020-09-04 CN CN202010923655.1A patent/CN111797172B/zh active Active
-
2021
- 2021-09-03 US US18/043,892 patent/US20240028568A1/en active Pending
- 2021-09-03 WO PCT/CN2021/116371 patent/WO2022048622A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104486373A (zh) * | 2014-11-21 | 2015-04-01 | 华为技术有限公司 | 一种锁资源迁移方法、节点及分布式*** |
CN105824846A (zh) * | 2015-01-09 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 数据迁移方法及装置 |
CN108132949A (zh) * | 2016-12-01 | 2018-06-08 | 腾讯科技(深圳)有限公司 | 数据库集群中数据迁移的方法及装置 |
CN107016029A (zh) * | 2016-12-13 | 2017-08-04 | 阿里巴巴集团控股有限公司 | 一种业务数据的处理方法、装置及*** |
CN111104392A (zh) * | 2019-12-12 | 2020-05-05 | 京东数字科技控股有限公司 | 一种数据库迁移方法、装置、电子设备及存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022048622A1 (zh) * | 2020-09-04 | 2022-03-10 | 阿里云计算有限公司 | 数据迁移方法、装置、设备、分布式***及存储介质 |
CN112925743A (zh) * | 2021-02-07 | 2021-06-08 | 中国工商银行股份有限公司 | 一种文件生成方法、装置及存储介质 |
CN113568886A (zh) * | 2021-07-21 | 2021-10-29 | 上海淇玥信息技术有限公司 | 一种数据迁移方法、装置和电子设备 |
CN114003585A (zh) * | 2021-11-04 | 2022-02-01 | 北京房江湖科技有限公司 | 一种数据处理的方法、装置和存储介质 |
CN114579059A (zh) * | 2022-03-14 | 2022-06-03 | 上海爱数信息技术股份有限公司 | 一种文件数据迁移方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022048622A1 (zh) | 2022-03-10 |
CN111797172B (zh) | 2021-03-23 |
US20240028568A1 (en) | 2024-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111797172B (zh) | 数据迁移方法、装置、设备、分布式***及存储介质 | |
KR101915826B1 (ko) | 분산 저장 환경에서의 동기 복제 기법 | |
CN109189608B (zh) | 一种保证复制事务一致性的方法以及相应的复制装置 | |
US8572022B2 (en) | Automatic synchronization conflict resolution | |
WO2018040589A1 (zh) | 一种基于分布式存储***的数据处理方法及存储设备 | |
US8572037B2 (en) | Database server, replication server and method for replicating data of a database server by at least one replication server | |
US20150213100A1 (en) | Data synchronization method and system | |
CN107426265A (zh) | 数据一致性同步的方法及设备 | |
CN105824846B (zh) | 数据迁移方法及装置 | |
CN109582686B (zh) | 分布式元数据管理一致性保证方法、装置、***及应用 | |
JP2022013854A (ja) | 2フェーズコミット分散トランザクションを使用することによってデータベースを更新するための方法および装置 | |
CN113204530B (zh) | 分布式文件***的数据写入方法、装置、设备以及介质 | |
CN106357703B (zh) | 集群切换方法与设备 | |
CN111880956A (zh) | 一种数据同步方法和装置 | |
CN114741449A (zh) | 一种基于分布式数据库的对象存储方法及装置 | |
CN113672255B (zh) | 一种分布式存储软件升级方法及装置 | |
WO2022048416A1 (zh) | 操作请求的处理方法、装置、设备、可读存储介质及*** | |
CN113467719B (zh) | 数据写入方法及装置 | |
CN110019527B (zh) | 从库读取方法、相关装置和设备 | |
CN110941511B (zh) | 一种快照合并方法、装置、设备及存储介质 | |
CN111737331A (zh) | 一种数据库与对象存储的事务一致性处理方法及*** | |
CN115658245A (zh) | 一种基于分布式数据库***的事务提交***、方法及装置 | |
CN113656496A (zh) | 数据处理方法及*** | |
CN110688057B (zh) | 一种分布式存储方法及装置 | |
CN114584572B (zh) | 一种分布式对象存储中数据同步方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |