System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据库,尤其涉及跨数据库数据迁移。
技术介绍
1、数据采集是数据迁移过程中的一个重要环节。为了保证所获数据的一致性和完整性,现有的数据采集方法往往会对数据源进行一定的加锁,禁止上层应用系统在数据采集过程中,对数据进行修改。这会对应用系统造成一定负面影响,因此,在数据采集过程中,需要尽量减少加锁时间和粒度。
2、为了减少数据迁移带来的损失,需要尽量减少迁移过程中数据库的不可用时间,同时还要获取到在迁移期间所产生的新的数据。上述利用加锁机制的数据采集方法,往往是为了对现有数据进行全量采集,其本质上是获取目标数据库当前存量数据的一个快照,而对于在快照点之后产生的数据则很难获取到。一种进行读取快照点之后的增量数据的方法是通过获取目标数据库的日志流,并对日志进行解析。这种方法具有很好的实时性,并且对目标数据库的影响小。但其缺点是,当存量数据比较庞大时,其获取数据的效率较差。并且某些数据库有一定的日志清理机制,可能会导致时间点较早的数据无法获取,其采集的数据的完整性也就无法保证。
技术实现思路
1、本专利技术的目的是提供一种低侵入性的数据库数据采集方法,应用于跨数据库迁移场景,降低数据迁移对数据库上层业务的影响,减少数据迁移带来的损失。
2、为实现本专利技术目的,本申请实施例提供一种跨数据库在线迁移中的数据采集方法,其特征在于,包括:
3、查询目标数据库的所有表,设置所有表的采集状态为“就绪”;
4、遍历目标数据库的所有表,当遍历到
5、持续监听并读取目标数据库的变更日志,当读取到变更记录,解析获取变更记录对应的表名和变更记录对应的位点;
6、根据变更记录对应的表名获取变更记录对应的表关联的位点;
7、当变更记录对应的表的采集状态为“就绪”,直接忽略变更记录对应的数据;否则,将变更记录对应的位点和变更记录对应的表关联的位点进行比较;
8、当变更记录对应的位点早于变更记录对应的表关联的位点,则舍弃变更记录对应的数据;否则将变更记录对应的数据输出到可持久化消息队列中。
9、为实现本专利技术目的,本申请实施例还提供一种跨数据库在线迁移中的数据采集装置,其特征在于,包括数据全量采集模块、数据增量采集模块、位点管理模块、会话管理模块、可持久化消息队列及采集任务执行模块;
10、所述数据全量采集模块用于:
11、查询目标数据库的所有表,设置所有表的采集状态为“就绪”;
12、遍历目标数据库的所有表,当遍历到某一张表时:设置该表为只读状态;与目标数据库建立会话,将该会话标记为该表关联的会话并保存到所述会话管理模块中;查询并记录目标数据库的当前位点,将该位点标记为该表关联的位点并保存到所述位点管理模块中;关联好表与会话、位点后,解除该表的只读状态,将该表的采集任务存入可执行队列中等待数据采集任务执行;
13、所述数据增量采集模块用于:
14、持续监听并读取目标数据库的变更日志,解析获取变更记录对应的表名和变更记录对应的位点;
15、根据变更记录对应的表名获取变更记录对应的表关联的位点;
16、当变更记录对应的表的采集状态为“就绪”,直接忽略变更记录对应的数据;否则,将变更记录对应的位点和变更记录对应的表关联的位点进行比较;
17、当变更记录对应的位点早于变更记录对应的表关联的位点,则舍弃变更记录对应的数据;否则将变更记录对应的数据输出到可持久化消息队列中;
18、所述采集任务执行模块用于:
19、持续从可执行队列中获取表的采集任务,获取表关联的会话,通过会话对表执行select语句进行数据查询,将查询到的数据输出到可持久化消息队列中;
20、当当前表的数据输出完毕后,从可执行队列中获取下一个表的采集任务,直至可执行队列为空,全量采集流程结束。
21、本申请实施例还提供一种电子设备,包括处理器和存储器,所述存储器存储有可在所述处理器上运行的程序,其特征在于,所述程序被所述处理器执行时实现上述的跨数据库在线迁移中的数据采集方法的步骤。
22、本申请实施例还提供一种计算机可读存储介质,存储有至少一个程序,其特征在于,所述至少一个程序可被至少一个处理器执行,以实现上述的跨数据库在线迁移中的数据采集方法的步骤。
23、本专利技术相较于现有技术有如下有益效果:
24、1、实时性高,数据采集过程中可以持续获取目标数据库新产生的数据。
25、2、适用性强,同一时间只有一张表处于只读状态,仅影响同时间对该表进行修改操作的会话,降低了数据迁移对数据库上层业务的影响,减少数据迁移带来的损失。
本文档来自技高网...【技术保护点】
1.一种跨数据库在线迁移中的数据采集方法,其特征在于,包括:
2.如权利要求1所述的跨数据库在线迁移中的数据采集方法,其特征在于,所述与目标数据库建立会话后,还包括:设置该会话的事务隔离级别为可重复读。
3.如权利要求1所述的跨数据库在线迁移中的数据采集方法,其特征在于,所述将该位点标记为该表关联的位点并保存后,还包括:设置该表的采集状态为“进行中”。
4.如权利要求1所述的跨数据库在线迁移中的数据采集方法,其特征在于,还包括:
5.一种跨数据库在线迁移中的数据采集装置,其特征在于,包括数据全量采集模块、数据增量采集模块、位点管理模块、会话管理模块、可持久化消息队列及采集任务执行模块;
6.一种电子设备,包括处理器和存储器,所述存储器存储有可在所述处理器上运行的程序,其特征在于,所述程序被所述处理器执行时实现权利要求1-4任一项所述的跨数据库在线迁移中的数据采集方法的步骤。
7.一种计算机可读存储介质,存储有至少一个程序,其特征在于,所述至少一个程序可被至少一个处理器执行,以实现权利要求1-4任一项所述的跨数
...【技术特征摘要】
1.一种跨数据库在线迁移中的数据采集方法,其特征在于,包括:
2.如权利要求1所述的跨数据库在线迁移中的数据采集方法,其特征在于,所述与目标数据库建立会话后,还包括:设置该会话的事务隔离级别为可重复读。
3.如权利要求1所述的跨数据库在线迁移中的数据采集方法,其特征在于,所述将该位点标记为该表关联的位点并保存后,还包括:设置该表的采集状态为“进行中”。
4.如权利要求1所述的跨数据库在线迁移中的数据采集方法,其特征在于,还包括:
5.一种跨数据库在线迁移中的数据采...
【专利技术属性】
技术研发人员:陈恩祥,王增臣,
申请(专利权)人:金篆信科有限责任公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。