本发明属于数据库迁移,尤其涉及一种数据库迁移方法、装置、电子设备和存储介质。
背景技术:
1、在当今所处的互联网时代,数据作为一种重要的生产资料,数据的可用性、可靠性和安全性越来越受到企业的重视。对于重要的应用数据,企业一般会进行备份,甚至建立多数据中心进行数据的实时同步,从而提高数据的安全性和可用性。其中必备的一项技术是数据迁移(将存量数据从一个数据库迁移到另一个数据库中)。传统的数据迁移方法一般是迁移程序将数据批量从源库读取到内存中,经过转换处理后写入到目标库。这种方法迁移数据的效率取决于迁移程序占用的机器内存和批量处理的大小等参数。传统方法在开始迁移任务之前就需确定好程序占用的内存和批处理大小等参数。这种方法存在以下问题:1、当同时迁移多个任务,且待迁移数据中的单条数据较大时,可能会导致程序所需内存超出分配的内存,存在程序崩溃的风险;2、当单条数据量较小时,程序所需内存可能远小于分配的内存,存在资源浪费;3、多个迁移任务同时运行时,所有任务分配的资源相同,对于优先级较高的任务,无法获取更多的资源。
技术实现思路
1、鉴于以上现有技术的不足,发明的目的在于提供一种数据库迁移方法、装置、电子设备和存储介质,能够解决传统数据迁移方法参数设置灵活性不足,迁移过程可能出现程序崩溃或资源利用率不高的问题。
2、本发明的第一方面,提出了一种数据库迁移方法,应用于包括:管理节点和工作节点的架构中,包括:
3、获取待迁移数据库的表;
4、根据待迁移数据库的表在管理节点配置待迁移任务;
5、根据待迁移数据库的表的重要程度设置迁移任务的优先级,一个迁移任务是一个队列,优先级最高的表位于队首,优先级最低的位于队尾;
6、初始化待迁移任务的配置参数,启动待迁移任务;
7、执行待迁移任务,工作节点负责待迁移任务的迁移;
8、判断待迁移任务的迁移是否完成,若未完成,获取程序资源占用情况,根据所述程序资源占用情况判断是否需要参数调整;
9、若需要参数调整,获取需要调整的待迁移任务,调整待迁移任务的参数,重新执行待迁移任务。
10、进一步地,上述一种数据库迁移方法中,根据待迁移数据库的表在管理节点配置待迁移任务,包括如下两种方式:
11、方式一:若在配置任务时指定了工作节点部署的机器信息,则将工作节点部署在指定的机器上,若所选机器剩余资源小于工作节点所需的资源,则采用方式二选择部署的机器;
12、方式二:若在配置任务时未指定工作节点部署的机器信息,或指定的机器资源不足时,将已添加的机器根据剩余资源排序,选择剩余资源最多的机器部署节点,若剩余资源最大的机器仍不够工作节点启动所需资源,则反馈机器资源不足,请求添加新机器或降低工作节点规格。
13、进一步地,上述一种数据库迁移方法中,执行待迁移任务,包括:
14、reader读取源库的数据,将读到的记录转换成中间格式,按照一定数量行数组装成一个batch,然后将batch投入到队列中,若队列已满,reader将阻塞,停止工作;
15、队列缓存reader读取到的batch数据;
16、writer从队列中读取batch数据,然后将数据转换成目标库可识别的格式,并发写入目标库,并发数为p。
17、进一步地,上述一种数据库迁移方法中,获取程序资源占用情况,根据程序资源占用情况判断是否需要参数调整,包括:
18、获取当前程序实际占用内存curr_mem_size,若mem_low_threshold
19、<curr_mem_size<mem_up_threshold,则不对参数进行调整;
20、若curr_mem_size<mem_low_threshold则进行正调整;
21、若curr_mem_size>mem_up_threshold则进行负调整;
22、其中,若需要进行负调整,挑选当前实际占用内存最大的任务进行调整;若需要进行正调整,根据任务的优先级将任务进行排序,r1<r2…<rm,其中r1对应的优先级最低,rm对应的优先级最高;挑选rm对应的任务进行调整,若连续发生正调整,后续选择优先级相对更低的任务进行调整。
23、进一步地,上述一种数据库迁移方法中,参数调整通过如下公式调整:
24、max_num_i(t+1)=max_num_i(t)*(1+kf1)
25、max_size_i(t+1)=max_size_i(t)*(1+kf2)
26、p_i(t+1)=p_i(t)+2k
27、当正调整时,k=1,负调整时,k=-1,f1、f2为调整因子常数,根据不同情况进行调整,t表示上一次调整的时刻,i表示被选中需要调整的任务序号,
28、其中,max_size_i,p_i需满足以下约束:
29、max_size_i>0.1*max_size_init且sum(max_size_i)<max_mem_total
30、p_i>1且sum(p_i)<max_conn
31、i=1…m,
32、mem_up_threshold=max_mem_total-avg_data_size_max*batch_size*10,
33、mem_low_threshold=max_mem_total*0.5;
34、max_conn表示目标库最大连接数,avg_data_size表示待迁移数据大小,max_size表示队列可容纳的数据所占物理内存的总大小,max_num表示可容纳的batch数量,avg_data_size_max表示所有子任务单条数据最大值,max_mem_total表示单个工作节点可占用的最大内存,batch_size
35、表示一个batch中存在的记录数。
36、进一步地,上述一种数据库迁移方法中,
37、正调整的方式至少包括:增大可容纳的batch数量max_num_i,增大队列可容纳的数据所占物理内存的总大小max_size_i,增大writer的并发参数p_i的参数配置值;
38、负调整的方式至少包括:减小可容纳的batch数量max_num_i,减小队列可容纳的数据所占物理内存的总大小max_size_i,减小writer的并发参数p_i的参数配置值。
39、进一步地,上述一种数据库迁移方法中,获取程序资源占用情况,包括:在程序运行过程中,以一个单独的线程监控程序所占用的实际内存。
40、本发明的第二方面,还提出了一种数据库迁移装置,应用于包括:管理节点和工作节点的架构中,包括:
41、获取模块:用于获取待迁移数据库的表;
42、配置模块:用于根据待迁移数据库的表在管理节点配置待迁移任务;
43、设置模块:用于根据待迁移数据库的表的重要程度设置迁移任务的优先级,一个迁移任务是一个队列,优先级最高的表位于队首,优先级最低的位于队尾;
44、初始化模块:用于初始化待迁移任务的配置参数,启动待迁移任务;
45、执行模块:用于执行待迁移任务,工作节点负责待迁移任务的迁移;
46、判断模块:用于判断待迁移任务的迁移是否完成,若未完成,获取程序资源占用情况,根据程序资源占用情况判断是否需要参数调整;
47、调整参数模块:用于若需要参数调整,获取需要调整的待迁移任务,调整待迁移任务的参数,重新执行待迁移任务。
48、本发明的第三方面,还提出了一种电子设备,包括:处理器和存储器;
49、所述处理器通过调用所述存储器存储的程序或指令,用于执行如上所述任一项所述一种数据库迁移方法。
50、本发明的第四方面,还提出了一种计算机可读存储介质,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如上所述任一项所述一种数据库迁移方法。
51、本发明的有益效果如下:本发明通过获取待迁移数据库的表;根据待迁移数据库的表在管理节点配置待迁移任务;根据待迁移数据库的表的重要程度设置迁移任务的优先级,一个迁移任务是一个队列,优先级最高的表位于队首,优先级最低的位于队尾;初始化待迁移任务的配置参数,启动待迁移任务;执行待迁移任务,工作节点负责待迁移任务的迁移;判断待迁移任务的迁移是否完成,若未完成,获取程序资源占用情况,根据所述程序资源占用情况判断是否需要参数调整;若需要参数调整,获取需要调整的待迁移任务,调整待迁移任务的参数,重新执行待迁移任务。本发明不仅能够根据待迁移数据的情况自适应调整迁移参数,保证迁移程序所占机器资源的合理利用和分配,而且能够根据待迁移数据的优先级,更合理分配资源。