本发明涉及数据同步,特别是涉及一种数据同步方法、存储介质及设备。
背景技术:
1、数据实时同步一般可分为三个阶段,第一阶段进行存量数据的初始化装载,获得数据同步的基础点;第二阶段以初始化数据装载建立的同步基础点为基准进行增量数据同步;第三阶段定期对数据同步的源端数据和目标数据进行比对校验,以确认在数据同步过程中没有丢失数据。
2、现有技术中,在增量数据同步期间,源端同步软件会依次读取事务数据放入连接器的缓存中,当连接器缓存已满或者已经读取到最新的事务数据时,再将连接器缓存中的事务数据批量发送至目标端。
3、但是,当一段连续的事务中存在较多大事务数据时,连接器缓存中会消耗大量内存。特别是1对n分发的部署方式,假设每个目标端同步的进度相近,此时所有连接器缓存消耗内存会以n倍增加,很容易触发源端同步软件内存溢出,因此还有待改善。
技术实现思路
1、鉴于上述问题,本发明提出了一种能够克服上述问题或者部分地解决上述问题的数据同步方法、存储介质及设备。
2、本发明第一方面的一个目的是要动态管理同步过程中的内存使用,减少源端同步软件出现内存溢出的风险,提高数据同步的可靠性。
3、本发明第一方面的另一个目的是要使用线程锁以及线程等待唤醒机制保证线程同步,以免发生数据错乱。
4、本发明第一方面的又一个目的是要有效避免待同步的事务数据添加至当前连接器后出现内存限制失效的问题。
5、特别地,根据本发明的第一方面,本发明提供了一种数据同步方法,用于在源端数据库与多个目标端数据库之间进行数据同步,所述源端数据库连接有源端同步软件,所述源端同步软件具有多个连接器,每个所述目标端数据库分别连接有目标端同步软件,所述目标端同步软件与所述连接器一一对应连接,所述数据同步方法包括:
6、读取一个待同步的事务数据,计算所述待同步的事务数据所需的使用内存;
7、获取所述连接器的使用参数,所述连接器的使用参数包括所有所述连接器的全局缓存容量上限和全局缓存已使用内存;
8、根据所述待同步的事务数据所需的使用内存、所述全局缓存容量上限和所述全局缓存已使用内存判断当前连接器是否能够存放所述待同步的事务数据;
9、若不能,发送所述当前连接器的事务数据,并清空所述当前连接器。
10、可选地,在获取所述连接器的使用参数的步骤之前,还包括:对所述当前连接器对应的线程施加独占锁;并且
11、在清空所述当前连接器的步骤之后,还包括:唤醒其他连接器对应的线程。
12、可选地,在发送所述当前连接器的事务数据的步骤之前,还包括:
13、检查所述当前连接器中是否存在未发送的事务数据;
14、若存在,执行发送所述当前连接器的事务数据的步骤。
15、可选地,所述连接器的使用参数还包括每个所述连接器的缓存已使用内存,检查所述当前连接器中是否存在未发送的事务数据的步骤包括:
16、检查所述当前连接器的缓存已使用内存是否大于0;
17、若是,确定所述当前连接器中存在未发送的事务数据;
18、若否,确定所述当前连机器中不存在未发送的事务数据。
19、可选地,清空所述当前连接器的步骤包括:
20、从所述当前连接器的缓存中删除全部事务数据;
21、重置所述当前连接器的缓存已使用内存以及所述全局缓存已使用内存。
22、可选地,在清空所述当前连接器的步骤之后,还包括:
23、检查其他连接器中是否存在未发送的事务数据;
24、若是,控制所述当前连接器对应的线程等待预设时长。
25、可选地,检查其他连接器中是否存在未发送的事务数据的步骤包括:
26、检查清空所述当前连接器后的所述全局缓存使用内存是否大于0;
27、若是,确定所述其他连接器中存在未发送的事务数据;
28、若否,确定所述其他连接器中不存在未发送的事务数据。
29、可选地,在根据所述待同步的事务数据所需的使用内存、所述全局缓存容量上限和所述全局缓存已使用内存判断当前连接器是否能够存放所述待同步的事务数据的步骤之后,还包括:
30、若能够,将所述待同步的事务数据添加至所述当前连接器。
31、根据本发明的第二方面,本发明提供了一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现上述中任意一种数据同步方法。
32、根据本发明的第三方面,本发明提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现上述中任意一种数据同步方法。
33、本发明的数据同步方法,通过计算待同步的事务数据所需的使用内存,并获取所有连接器的全局缓存容量上限和全局缓存已使用内存,当根据待同步的事务数据所需的使用内存、全局缓存容量上限和全局缓存已使用内存提前判断出当前连接器不能存放待同步的事务数据时,可以发送并清空当前连接器的事务数据,释放当前连接器的缓存空间,这样可以动态管理同步过程中的内存使用,从而减少源端同步软件出现内存溢出的风险,提高数据同步的可靠性。
34、进一步地,本发明的数据同步方法,在获取连接器的使用参数之前,可以对当前连接器对应的线程施加独占锁,避免多线程并发访问导致的数据错乱或不一致,并且在清空当前连接器之后,唤醒其他连接器对应的线程,以使其他线程可以继续其同步任务,而不会因为长时间的等待导致性能下降或资源浪费。如此,可以提高整个同步过程的性能和效率。
35、进一步地,本发明的数据同步方法,在清空当前连接器之后,若检查到其他连接器中存在未发送的事务数据,可以控制当前连接器对应的线程等待预设时长,给予其他连接器一定的时间来发送其数据,防止待同步的事务数据直接添加至当前连接器后全局缓存已使用内存超出全局缓存容量上限,可有效避免出现内存限制失效的问题。
36、根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
1.一种数据同步方法,用于在源端数据库与多个目标端数据库之间进行数据同步,所述源端数据库连接有源端同步软件,所述源端同步软件具有多个连接器,每个所述目标端数据库分别连接有目标端同步软件,所述目标端同步软件与所述连接器一一对应连接,所述数据同步方法包括:
2.根据权利要求1所述的数据同步方法,其中,在获取所述连接器的使用参数的步骤之前,还包括:对所述当前连接器对应的线程施加独占锁;并且
3.根据权利要求1所述的数据同步方法,其中,在发送所述当前连接器的事务数据的步骤之前,还包括:
4.根据权利要求3所述的数据同步方法,其中,所述连接器的使用参数还包括每个所述连接器的缓存已使用内存,检查所述当前连接器中是否存在未发送的事务数据的步骤包括:
5.根据权利要求4述的数据同步方法,其中,清空所述当前连接器的步骤包括:
6.根据权利要求1所述的数据同步方法,其中,在清空所述当前连接器的步骤之后,还包括:
7.根据权利要求6所述的数据同步方法,其中,检查其他连接器中是否存在未发送的事务数据的步骤包括:
8.根据权利要求1所述的数据同步方法,其中,在根据所述待同步的事务数据所需的使用内存、所述全局缓存容量上限和所述全局缓存已使用内存判断当前连接器是否能够存放所述待同步的事务数据的步骤之后,还包括:
9.一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据权利要求1-8任一项所述的数据同步方法。
10.一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据权利要求1-8任一项所述的数据同步方法。
