System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及it与软件开发,尤其是涉及一种全量增量并行的数据迁移方法。
技术介绍
1、当今数字化时代,云计算作为数字化基础设施的重要组成部分,正在以前所未有的速度发展。而云数据库作为云计算的核心服务之一,因其便捷实惠、弹性伸缩等优势,已成为企业数字化转型的必备之选。
2、迁移企业数据至云数据库是企业数字化转型落地的关键之一。因为数据是企业的重要资产,包含着企业的经验、知识、业务流程等重要信息,对企业未来的发展具有重要的意义。将数据迁移到云数据库,不仅可以实现数据的统一管理和共享,还可以提高数据的安全性和可靠性,为企业数字化转型提供强有力的支持。
3、传统的数据迁移方案,需全量数据迁移完成后才可以开始增量数据的迁移,而全量数据迁移根据其数据量大小可能需要数小时甚至数天,在一些客户迁移场景,他们不需要预先交付源数据库中的全部存量数据。相反,他们要求在不特定的时间点交付实时数据,那这样的需求传统的数据迁移方案是无法实现的。其次,当数据迁移进入到增量阶段后,此时如果需要对新添加的表进行全增量迁移,需要把原有的增量任务停止,待新增表的全量迁移完成后,再启动增量迁移,这对实时性要求高的场景也是不友好的。
技术实现思路
1、本专利技术的目的是提供一种全量增量并行的数据迁移方法,包括:
2、同时启动增量迁移线程和指定表的全量迁移线程;
3、所述增量迁移线程包括:在源库拉取增量数据后,判断当前是否有所述全量迁移线程正在拉取所述源库中的存量数据投递到缓
4、所述全量迁移线程包括:将所述指定表的数据进行分块获得若干数据块,记录若干所述数据块的存量数据;通过向所述增量迁移线程发起开窗通知或关窗通知,控制所述增量迁移线程将所述数据块的存量数据写入所述目标库的进程。
5、进一步的,在所述增量迁移线程中,判断当前是否有所述全量迁移线程正在拉取所述源库中的存量数据投递到缓存队列,根据判断结果对所述缓存队列的数据进行处理,然后将所述增量数据写入目标库,包括:
6、根据开窗标记判断当前是否有所述全量迁移线程正在拉取所述源库中的存量数据投递到缓存队列。
7、进一步的,在所述增量迁移线程中,判断当前是否有所述全量迁移线程正在拉取所述源库中的存量数据投递到缓存队列,根据判断结果对所述缓存队列的数据进行处理,然后将所述增量数据写入目标库,还包括:
8、当所述开窗标记为true时,判断所述增量数据是否存在于所述缓存队列中,若判断结果为存在,则将所述缓存队列中的所述增量数据剔除后,再将所述增量数据写入所述目标库。
9、进一步的,在所述增量迁移线程中,判断当前是否有所述全量迁移线程正在拉取所述源库中的存量数据投递到缓存队列,根据判断结果对所述缓存队列的数据进行处理,然后将所述增量数据写入目标库,还包括:
10、当所述开窗标记为false时,判断所述缓存队列是否为空,若判断结果为不为空,则将所述缓存队列的数据全部写入目标库,并清空所述缓存队列,再将所述增量数据写入到所述目标库。
11、进一步的,当所述开窗标记为false时,判断所述缓存队列是否为空,若判断结果为不为空,则将所述缓存队列的数据一次性全部写入目标库,并清空所述缓存队列,再将所述增量数据写入到所述目标库。
12、进一步的,通过识别主键来判断所述增量数据是否存在于所述缓存队列中。
13、进一步的,在所述全量迁移线程中,通过向所述增量迁移线程发起开窗通知或关窗通知,控制所述增量迁移线程将所述数据块的存量数据写入所述目标库的进程,包括:
14、所述全量迁移线程向所述增量迁移线程发起开窗通知,同时所述全量迁移线程读取所述数据块的存量数据,并将所述数据块的存量数据投递到所述缓存队列,投递完成后向所述增量迁移线程发起关窗通知,同时所述增量迁移线程将所述缓存队列中的全部数据写入所述目标库。
15、进一步的,当所述全量迁移线程向所述增量迁移线程发起开窗通知时,将所述开窗标记设置为true。
16、进一步的,在所述全量迁移线程中,将所述指定表的数据进行分块获得若干数据块,然后将若干所述数据块进行排序,并记录每一所述数据块的开始位置和结束位置。
17、进一步的,根据所述数据块的开始位置、结束位置和主键对全部所述数据块进行循环遍历读取。
18、进一步的,将若干所述数据块按主键进行排序。
19、进一步的,若干所述数据块大小一致。
20、进一步的,所述全量迁移线程向所述增量迁移线程发起开窗通知,同时所述全量迁移线程读取所述数据块的存量数据,并将所述数据块的存量数据投递到所述缓存队列,投递完成后向所述增量迁移线程发起关窗通知,同时所述增量迁移线程将所述缓存队列中的全部数据写入所述目标库,包括:
21、所述全量迁移线程单次读取一个所述数据块的存量数据,并将该所述数据块的存量数据投递到所述缓存队列,投递完成后向所述增量迁移线程发起关窗通知,同时所述增量迁移线程将所述缓存队列中的全部数据写入所述目标库,完成一次数据块读取-写入过程;
22、对剩余所述数据块重复所述数据块读取-写入过程,直至所有所述数据块的存量数据写入所述目标库,所述全量迁移线程结束。
23、进一步的,所述增量迁移线程将所述缓存队列中的全部数据写入所述目标库,并将所述缓存队列中的全部数据清空。
24、进一步的,所述全量迁移线程结束时,所述增量迁移线程持续运行。
25、进一步的,所述数据迁移方法还包括:
26、当所述增量迁移线程持续运行时,收到新的指定表的全量迁移请求,此时重复所述全量迁移线程,同时保持所述增量迁移线程持续运行。
27、本专利技术的有益效果主要有:
28、本专利技术公开一种全量增量并行的数据迁移方法,实现全增量迁移同时进行,满足客户对增量数据实时性的要求,避免因全量迁移执行太久而增量数据迟迟不能到达目标库的情况;当有新添加的表需要执行全增量数据迁移操作时,无需暂停原有表运行中的增量迁移。
29、下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。
本文档来自技高网...【技术保护点】
1.一种全量增量并行的数据迁移方法,其特征在于,包括:
2.根据权利要求1所述的全量增量并行的数据迁移方法,其特征在于,在所述增量迁移线程中,判断当前是否有所述全量迁移线程正在拉取所述源库中的存量数据投递到缓存队列,根据判断结果对所述缓存队列的数据进行处理,然后将所述增量数据写入目标库,包括:
3.根据权利要求2所述的全量增量并行的数据迁移方法,其特征在于,在所述增量迁移线程中,判断当前是否有所述全量迁移线程正在拉取所述源库中的存量数据投递到缓存队列,根据判断结果对所述缓存队列的数据进行处理,然后将所述增量数据写入目标库,还包括:
4.根据权利要求3所述的全量增量并行的数据迁移方法,其特征在于,在所述增量迁移线程中,判断当前是否有所述全量迁移线程正在拉取所述源库中的存量数据投递到缓存队列,根据判断结果对所述缓存队列的数据进行处理,然后将所述增量数据写入目标库,还包括:
5.根据权利要求4所述的全量增量并行的数据迁移方法,其特征在于,当所述开窗标记为false时,判断所述缓存队列是否为空,若判断结果为不为空,则将所述缓存队列的数据一次
6.根据权利要求5所述的全量增量并行的数据迁移方法,其特征在于,通过识别主键来判断所述增量数据是否存在于所述缓存队列中。
7.根据权利要求6所述的全量增量并行的数据迁移方法,其特征在于,在所述全量迁移线程中,通过向所述增量迁移线程发起开窗通知或关窗通知,控制所述增量迁移线程将所述数据块的存量数据写入所述目标库的进程,包括:
8.根据权利要求7所述的全量增量并行的数据迁移方法,其特征在于,在所述全量迁移线程中,将所述指定表的数据进行分块获得若干数据块,然后将若干所述数据块进行排序,并记录每一所述数据块的开始位置和结束位置。
9.根据权利要求8所述的全量增量并行的数据迁移方法,其特征在于,所述全量迁移线程向所述增量迁移线程发起开窗通知,同时所述全量迁移线程读取所述数据块的存量数据,并将所述数据块的存量数据投递到所述缓存队列,投递完成后向所述增量迁移线程发起关窗通知,同时所述增量迁移线程将所述缓存队列中的全部数据写入所述目标库,包括:
10.根据权利要求9所述的全量增量并行的数据迁移方法,其特征在于,所述增量迁移线程将所述缓存队列中的全部数据写入所述目标库,并将所述缓存队列中的全部数据清空;
...【技术特征摘要】
1.一种全量增量并行的数据迁移方法,其特征在于,包括:
2.根据权利要求1所述的全量增量并行的数据迁移方法,其特征在于,在所述增量迁移线程中,判断当前是否有所述全量迁移线程正在拉取所述源库中的存量数据投递到缓存队列,根据判断结果对所述缓存队列的数据进行处理,然后将所述增量数据写入目标库,包括:
3.根据权利要求2所述的全量增量并行的数据迁移方法,其特征在于,在所述增量迁移线程中,判断当前是否有所述全量迁移线程正在拉取所述源库中的存量数据投递到缓存队列,根据判断结果对所述缓存队列的数据进行处理,然后将所述增量数据写入目标库,还包括:
4.根据权利要求3所述的全量增量并行的数据迁移方法,其特征在于,在所述增量迁移线程中,判断当前是否有所述全量迁移线程正在拉取所述源库中的存量数据投递到缓存队列,根据判断结果对所述缓存队列的数据进行处理,然后将所述增量数据写入目标库,还包括:
5.根据权利要求4所述的全量增量并行的数据迁移方法,其特征在于,当所述开窗标记为false时,判断所述缓存队列是否为空,若判断结果为不为空,则将所述缓存队列的数据一次性全部写入目标库,并清空所述缓存队列,再将所述增量数据写入到所述目标库...
【专利技术属性】
技术研发人员:宋祥,李超亚,廖裕兴,章锐,
申请(专利权)人:天翼云科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。