数据复制方法、装置、计算机设备和存储介质与流程

文档序号:26645668发布日期:2021-09-15 03:03阅读:88来源:国知局
数据复制方法、装置、计算机设备和存储介质与流程

1.本技术涉及计算机技术领域,特别是涉及一种数据复制方法、装置、计算机设备和存储介质。


背景技术:

2.随着计算机技术的发展,5g时代的来临,互联网的出现给现代生活带来了极大的便利,越来越多的企业可以通过使用系统业务平台在线对多种业务进行处理,为用户带来便捷。
3.然而,目前的数据复制方式中,通常使用线程依次从源数据库中读取数据复制到目标数据库,例如,在目前的交易系统中,需要对生成的交易数据进行存储时,通常使用线程将数据库中存储的数据复制到另一个数据库中存储,按照线程的容量依次从源数据库中读取交易数据并进行复制,即通过单线程或多线程依次从源数据库中读取交易数据复制到目标数据库,这种数据复制方式容易导致数据复制效率较低。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种能够提高数据复制效率的数据复制方法、装置、计算机设备和存储介质。
5.一种数据复制方法,所述方法包括:
6.响应于复制任务,获取所述复制任务中目标复制任务对应的数据表的行数,并将所述行数与预设阈值进行比较;
7.若所述行数大于预设阈值,则查询所述数据表的主键信息,并获取所述主键信息中的主键第一阈值和主键第二阈值;其中,主键第一阈值大于主键第二阈值;
8.根据所述主键第一阈值和主键第二阈值,对所述主键信息的值域进行分片,得到对应的分片数据;
9.将所述分片数据并行复制到目标数据库中。
10.在其中一个实施例中,所述响应于复制任务之后,所述方法还包括:
11.查询各所述复制任务对应的数据表的行数,并将所述复制任务按照所述行数从大到小的顺序进行排序处理;
12.所述获取所述复制任务中目标复制任务对应的数据表的行数,并将所述行数与预设阈值进行比较包括:
13.获取已排序的所述复制任务中行数最大的目标复制任务所对应的数据表的行数,并将所述行数与预设阈值进行比较。
14.在其中一个实施例中,所述主键信息包括自增主键;
15.所述若所述行数大于预设阈值,则查询所述数据表的主键信息,并获取所述主键信息中的主键第一阈值和主键第二阈值包括:
16.查询所述数据表的主键信息中是否存在自增主键;
17.若所述数据表的主键信息中不存在自增主键,则获取所述数据表的主键信息中的主键第一阈值和主键第二阈值;
18.若所述数据表的主键信息中存在自增主键,则获取所述数据表的自增主键中的主键第一阈值和主键第二阈值。
19.在其中一个实施例中,所述根据所述主键第一阈值和主键第二阈值,对所述主键信息的值域进行分片,得到对应的分片数据包括:
20.根据所述自增主键中的主键第一阈值和主键第二阈值,对所述主键信息的值域进行分片,得到对应的分片数据。
21.在其中一个实施例中,所述根据所述主键第一阈值和主键第二阈值,对所述主键信息的值域进行分片,得到对应的分片数据包括:
22.根据所述主键信息中的主键第一阈值和主键第二阈值,利用sql语句对所述主键信息的值域进行分页,得到分页后的数值;
23.所述将所述分片数据并行复制到目标数据库中,包括:
24.利用所述分页后的数值查询对应的行数据,并将查询到的所述行数据并行复制到目标数据库中。
25.在其中一个实施例中,所述响应于复制任务之前,所述方法还包括:
26.将预设时间段内的交易数据导入到历史数据库中,并根据所述历史数据库中的每个数据表生成对应的复制任务。
27.在其中一个实施例中,所述将所述行数与预设阈值进行比较包括:
28.若所述行数不大于预设阈值,则扫描所述数据表,将所述数据表复制到目标数据库中。
29.一种数据复制装置,所述装置包括:
30.比较模块,用于响应于复制任务,获取所述复制任务中目标复制任务对应的数据表的行数,并将所述行数与预设阈值进行比较;
31.获取模块,用于若所述行数大于预设阈值,则查询所述数据表的主键信息,并获取所述主键信息中的主键第一阈值和主键第二阈值;其中,主键第一阈值大于主键第二阈值;
32.分片模块,用于根据所述主键第一阈值和主键第二阈值,对所述主键信息的值域进行分片,得到对应的分片数据;
33.复制模块,用于将所述分片数据并行复制到目标数据库中。
34.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
35.响应于复制任务,获取所述复制任务中目标复制任务对应的数据表的行数,并将所述行数与预设阈值进行比较;
36.若所述行数大于预设阈值,则查询所述数据表的主键信息,并获取所述主键信息中的主键第一阈值和主键第二阈值;其中,主键第一阈值大于主键第二阈值;
37.根据所述主键第一阈值和主键第二阈值,对所述主键信息的值域进行分片,得到对应的分片数据;
38.将所述分片数据并行复制到目标数据库中。
39.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执
行时实现以下步骤:
40.响应于复制任务,获取所述复制任务中目标复制任务对应的数据表的行数,并将所述行数与预设阈值进行比较;
41.若所述行数大于预设阈值,则查询所述数据表的主键信息,并获取所述主键信息中的主键第一阈值和主键第二阈值;其中,主键第一阈值大于主键第二阈值;
42.根据所述主键第一阈值和主键第二阈值,对所述主键信息的值域进行分片,得到对应的分片数据;
43.将所述分片数据并行复制到目标数据库中。
44.上述数据复制方法、装置、计算机设备和存储介质,通过响应于复制任务,获取复制任务中目标复制任务对应的数据表的行数,并将行数与预设阈值进行比较。若行数大于预设阈值,则查询数据表的主键信息,并获取主键信息中的主键第一阈值和主键第二阈值,其中,主键第一阈值大于主键第二阈值。根据主键第一阈值和主键第二阈值,对主键信息的值域进行分片,得到对应的分片数据,将分片数据并行复制到目标数据库中。由此,将每个表的复制作为一个任务,多个复制任务并发执行,同时根据表的特征自动选择适配的分片算法,对单表分片后并行复制到目标数据库,即通过分片并行复制的方式有效提高了数据复制的效率。
附图说明
45.图1为一个实施例中数据复制方法的应用环境图;
46.图2为一个实施例中数据复制方法的流程示意图;
47.图3为一个实施例中查询各复制任务对应的数据表的行数步骤的流程示意图;
48.图4为一个实施例中若行数大于预设阈值,则查询数据表的主键信息,并获取主键信息中的主键第一阈值和主键第二阈值步骤的流程示意图;
49.图5为某个券商系统执行复制过程的流程示意图;
50.图6为一个实施例中数据复制装置的结构框图;
51.图7为一个实施例中计算机设备的内部结构图。
具体实施方式
52.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
53.本技术提供的数据复制方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104通过网络进行通信。服务器104响应于终端102触发的复制任务,服务器104获取复制任务中目标复制任务对应的数据表的行数,并将行数与预设阈值进行比较;若行数大于预设阈值,则服务器104查询数据表的主键信息,并获取主键信息中的主键第一阈值和主键第二阈值;其中,主键第一阈值大于主键第二阈值。服务器104根据主键第一阈值和主键第二阈值,对主键信息的值域进行分片,得到对应的分片数据,服务器104将分片数据并行复制到目标数据库中。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个
服务器组成的服务器集群来实现。
54.在一个实施例中,如图2所示,提供了一种数据复制方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
55.步骤202,响应于复制任务,获取复制任务中目标复制任务对应的数据表的行数,并将行数与预设阈值进行比较。
56.在目前的软件开发过程中,开发人员可以采用微服务架构,围绕着业务组件来创建不同业务功能的应用,这些应用可独立地进行开发、管理和更新,在分散的组件中使用微服务云架构和平台,能够使部署、管理和服务功能交付变得更加简单。微服务是一个新兴的软件架构,能够把一个大型的单个应用程序和服务拆分为数十个的支持微服务。微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。
57.具体的,以券商系统为例进行说明。券商系统可以对生成的交易数据进行存储,例如,券商系统可以通过线程将数据库中存储的数据复制到另一个数据库中存储。该券商系统中包括具有不同功能的组件,可以用于对交易订单进行处理,也可以用独立的服务器或者是多个服务器组成的服务器集群来实现。用户可以通过在手机应用程序中或浏览器网页中输入用户名和密码的方式,登录特定场景的业务系统中,即用户可以通过app(application,应用程序)客户端或web客户端即web浏览器的方式登录某个券商系统,并进入与该券商系统对应的显示界面中。进一步的,用户可以通过触发操作触发对应的复制任务,例如,当该券商系统中的一个交易周期结束时,用户可以通过点击操作触发复制任务,则券商系统即服务器响应于复制任务,服务器可以获取复制任务中目标复制任务对应的数据表的行数,并将行数与预设阈值进行比较。
58.其中,复制任务是指在复制过程中,将每个数据表的复制作为一个独立的任务,即将不同的交易数据表的复制过程作为一个一个的复制任务,每个复制任务对应一个数据表。目标复制任务是指从多个复制任务中选取的目标复制任务。行数是指数据表所包含的总行数。例如,在券商系统中,假设预设阈值为10万,服务器响应于复制任务,服务器可以获取多个复制任务中目标复制任务对应的数据表的行数为12万,并将该行数12万与预设阈值10万进行比较。可以理解的是,触发复制任务的方式包括但不限于触发操作,还可以为预设时间段内的自动触发等其他方式触发,只要能够实现触发复制任务,对其触发方式不做限定。
59.步骤204,若行数大于预设阈值,则查询数据表的主键信息,并获取主键信息中的主键第一阈值和主键第二阈值;其中,主键第一阈值大于主键第二阈值。
60.服务器响应于复制任务,获取复制任务中目标复制任务对应的数据表的行数,并将行数与预设阈值进行比较。若行数大于预设阈值,则服务器查询数据表的主键信息,并获取主键信息中的主键第一阈值和主键第二阈值。其中,主键第一阈值大于主键第二阈值。主键信息是指主关键字(primary key),是表中的一个或多个字段,它的值用于唯一的标识表中的某一条记录。数据库主键,指的是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性。即数据库的表设计是一般都要求有主键,主键一般会使用业务的唯一属性,例如:用户账号等,由于每个用户的账号都是不同的,因此是唯一属性,可以作为主键,该主键也可以称为唯一主键。可以理解的是,主键包括但不限于唯一主键,
还可以包括其他类型的主键,例如设置自增主键。
61.例如,在券商系统中,假设预设阈值为10万,服务器响应于复制任务,服务器可以获取多个复制任务中目标复制任务对应的数据表的行数为12万,并将该行数12万与预设阈值10万进行比较,由于该目标复制任务对应的数据表的行数12万大于预设阈值10万,则服务器查询该目标复制任务对应的数据表的主键信息,并获取主键信息中的主键第一阈值和主键第二阈值。其中,主键第一阈值可以为最大值,主键第二阈值可以为最小值。此外,若行数不大于预设阈值,则服务器可以直接使用全表扫描进行流式查询。
62.步骤206,根据主键第一阈值和主键第二阈值,对主键信息的值域进行分片,得到对应的分片数据。
63.服务器查询数据表的主键信息,并获取主键信息中的主键第一阈值和主键第二阈值之后,服务器可以根据主键第一阈值和主键第二阈值,对主键信息的值域进行分片,得到对应的分片数据。其中,分片数据是指根据表的特征自动选择合适的分片算法,对单表进行分片后得到的数据。具体的,服务器获取到主键第一阈值(即最大值)和主键第二阈值(即最小值)后,服务器可以根据主键的最大值和最小值,将主键的值划分为多个区段,按区段的值进行查询。例如,如果目标复制任务对应的数据表没有自增主键,则使用唯一主键进行分片:即服务器根据唯一主键进行排序,使用数据库的limit offset功能进行分片。比如:要查询1

1000行,则使用limit 0,1000命令来从表中分割出对应的分片,进而作为一个复制任务将数据复制到另一个数据库中。
64.步骤208,将分片数据并行复制到目标数据库中。
65.服务器根据主键第一阈值和主键第二阈值,对主键信息的值域进行分片,得到对应的分片数据之后,服务器可以将分片数据并行复制到目标数据库中。其中,源数据库可以是存储空间较小的数据库,目标数据库可以是存储空间更大的数据库。例如,源数据库可以是券商系统中各个业务组件对应的数据库,可以按照数据类型、格式等将数据存放在不同的表中。在一个交易周期结束时,各个业务组件从各自对应的数据库中读取数据,并通过集中通信总线将所读取的数据复制到券商系统对应的目标数据库中。该目标数据库用于对各个源数据库中的数据进行存储,以达到备份的效果。
66.传统的数据复制方式中,通常是按照线程的容量依次从源数据库中读取交易数据复制到目标数据库,由于每个表的表结构或数据具有不同的特点:比如有些表的主键可能是自增的数字类型或字符串,有些表的数据很多,而有些表的数据比较少。即由于每个表的特征和表的数据量不同,若均按照线程的容量依次从源数据库中读取数据进行复制的方式,容易导致数据复制效率较低。
67.而本实施例中,通过响应于复制任务,获取复制任务中目标复制任务对应的数据表的行数,并将行数与预设阈值进行比较。若行数大于预设阈值,则查询数据表的主键信息,并获取主键信息中的主键第一阈值和主键第二阈值,其中,主键第一阈值大于主键第二阈值。根据主键第一阈值和主键第二阈值,对主键信息的值域进行分片,得到对应的分片数据,将分片数据并行复制到目标数据库中。由此,实现数据复制程序自动根据表的特征和表的数据量采用不同的数据复制方法,使得不同特点的表采用不同的方式进行复制,通过分片并行复制的方式有效提升了数据复制效率,进而实现快速备份或者归档到数据库中。
68.在一个实施例中,如图3所示,响应于复制任务之后,该方法还包括查询各复制任
务对应的数据表的行数的步骤,具体包括:
69.步骤302,查询各复制任务对应的数据表的行数,并将复制任务按照行数从大到小的顺序进行排序处理。
70.步骤304,获取已排序的复制任务中行数最大的目标复制任务所对应的数据表的行数,并将行数与预设阈值进行比较。
71.服务器响应于复制任务,在复制过程中,服务器将每个表的复制作为一个任务,多个复制任务并发执行。由于并发执行的任务数量是有限的,为使得整体执行时间最短,在执行复制任务前可以先对任务进行排序,让数据量大的先执行。如果不排序,有可能一个数据量很大的大表最后开始执行,那么完成复制过程的整体时间就会变长,影响数据复制效率。因此,本实施例中,执行复制任务前会先查询每个表的总行数,然后按表的行数进行排序,每个表对应一个复制任务。即服务器先查询各复制任务对应的数据表的总行数,并将复制任务按照总行数从大到小的顺序进行排序处理。进一步的,服务器可以获取已排序的复制任务中总行数最大的目标复制任务所对应的数据表的行数,并将行数与预设阈值进行比较,即优先执行数据量大的复制任务,一个数据库同时处理的任务数是有限的,为了让数据库保持好的性能,不会同时开启所有的线程,如果数据量大的复制任务后开启,那总复制时间就会比较长。由此,在执行任务前先对复制任务进行排序,让数据量大的任务先执行,使得整体执行复制数据的时间最短,从而能够有效提高数据复制的效率。
72.在一个实施例中,如图4所示,主键信息包括自增主键,若行数大于预设阈值,则查询数据表的主键信息,并获取主键信息中的主键第一阈值和主键第二阈值的步骤,包括:
73.步骤402,查询数据表的主键信息中是否存在自增主键。
74.步骤404,若数据表的主键信息中不存在自增主键,则获取数据表的主键信息中的主键第一阈值和主键第二阈值。
75.步骤406,若数据表的主键信息中存在自增主键,则获取数据表的自增主键中的主键第一阈值和主键第二阈值。
76.服务器响应于复制任务,获取复制任务中目标复制任务对应的数据表的行数,并将行数与预设阈值进行比较。若行数大于预设阈值,则服务器查询数据表的主键信息,并获取主键信息中的主键第一阈值和主键第二阈值。其中,主键信息包括自增主键。具体的,服务器可以查询数据表的主键信息中是否存在自增主键。若数据表的主键信息中不存在自增主键,则服务器获取数据表的主键信息中的主键第一阈值和主键第二阈值。若数据表的主键信息中存在自增主键,则服务器获取数据表的自增主键中的主键第一阈值和主键第二阈值。对于表中有自增主键的情况,服务器优先根据自增主键在表中的值范围进行分片,即若数据表的主键信息中存在自增主键,则服务器可以优先获取数据表的自增主键中的最大值和最小值,并根据自增主键的最大值和最小值将主键的值划分为多个区段,按区段的值进行查询。若数据表的主键信息中不存在自增主键,则服务器获取数据表的主键信息中的主键第一阈值和主键第二阈值,即服务器使用唯一主键进行分片,根据唯一主键进行排序,然后使用数据库的limit offset功能进行分片。由此使得,相较于传统方式中直接使用limit语句分页的方式,本实施例中使用唯一键进行过滤,减少数据库要读取的数据行数,可以有效提升数据复制效率。
77.在其中一个实施例中,根据主键第一阈值和主键第二阈值,对主键信息的值域进
行分片,得到对应的分片数据的步骤,包括:
78.根据自增主键中的主键第一阈值和主键第二阈值,对主键信息的值域进行分片,得到对应的分片数据。
79.服务器查询数据表的主键信息,并获取主键信息中的主键第一阈值和主键第二阈值之后,服务器可以根据主键第一阈值和主键第二阈值,对主键信息的值域进行分片,得到对应的分片数据。具体的,若数据表的主键信息中存在自增主键,则服务器获取数据表的自增主键中的主键第一阈值和主键第二阈值对主键信息的值域进行分片,得到对应的分片数据。
80.例如,可以在数据库中给表配置一个自增主键,自增主键是有数据库管理的主键,是递增的数字,比如将交易订单数据的生成时间作为自增主键,从交易周期(可以是一个交易日)开始到交易周期结束,时间是不断增加的。对于表中有自增主键的情况,服务器优先根据自增主键在表中的值范围进行分片,即若数据表的主键信息中存在自增主键,则服务器可以优先获取数据表的自增主键中的最大值和最小值,并根据自增主键的最大值和最小值将主键的值划分为多个区段,按区段的值进行查询。由此使得,通过使用唯一键进行过滤,减少数据库要读取的数据行数,实现数据复制程序自动根据表的特征和表的数据量采用不同的数据复制方法,使得不同特点的表采用不同的方式进行复制,从而能够有效提升数据复制效率。
81.在一个实施例中,服务器查询数据表的主键信息,并获取主键信息中的主键第一阈值和主键第二阈值之后,服务器可以根据主键第一阈值和主键第二阈值,对主键信息的值域进行分片,得到对应的分片数据。具体的,若数据表的主键信息中不存在自增主键,则服务器获取数据表的主键信息中的主键第一阈值和主键第二阈值,利用sql语句对主键信息的值域进行分页,得到分页后的数值。即服务器使用唯一主键进行分片,根据唯一主键进行排序,然后使用数据库的limit offset功能进行分片。如果需要分页就需要以某一列进行排序,在数据库中使用唯一键排序是比较高效的。具体排序实现就是在查询sql语句中增加order by“唯一键”。limit offset是数据库提供的查询分页功能,例如:limit10,10即从10行开始,返回10行记录。服务器可以利用分页后的数值查询对应的行数据,并将查询到的行数据并行复制到目标数据库中。由此使得,相较于传统方式中直接使用limit语句分页的方式,本实施例中使用唯一键进行过滤,减少数据库要读取的数据行数,可以有效提升数据复制效率。
82.在一个实施例中,响应于复制任务之前,该方法还包括根据历史数据库中的每个数据表生成对应的复制任务的步骤,包括:
83.将预设时间段内的交易数据导入到历史数据库中,并根据历史数据库中的每个数据表生成对应的复制任务。
84.用户通过触发操作触发复制任务或者系统在一个交易周期结束后自动触发复制任务之前,服务器可以将预设时间段内的交易数据导入到历史数据库中,并根据历史数据库中的每个数据表生成对应的复制任务。例如,服务器可以将每天的交易数据导入到历史数据库中,后续在复制过程中根据数据库中的表的主键的特点自动选择最优的数据查询分片算法,提升数据复制的性能,以快速地进行数据备份或者数据归档。由于交易的明细数据需要进行保存用于历史查询,为提升交易系统数据库的系统性能,不会将历史交易数据一
直保存在交易系统使用的数据库中,因此可以按照预设频率或者时间段将交易数据导入到历史数据库中,以便后续快速地进行数据备份或者数据归档。
85.在一个实施例中,将行数与预设阈值进行比较的步骤,包括:
86.若行数不大于预设阈值,则扫描数据表,将数据表复制到目标数据库中。
87.服务器响应于复制任务,获取复制任务中目标复制任务对应的数据表的行数,并将行数与预设阈值进行比较。若行数不大于预设阈值,则服务器扫描数据表,将数据表复制到目标数据库中。例如,预设阈值为10万,则当表的记录数小于10万,不进行分片,服务器可以直接全表扫描,然后全表复制。由此,实现数据复制程序自动根据表的特征和表的数据量采用不同的数据复制方法,使得不同特点的表采用不同的方式进行复制,有效提升了数据复制效率,进而实现快速备份或者归档到数据库中。
88.在一个实施例中,如图5所示,为某个券商系统执行复制过程的流程示意图。具体的,以该券商系统为例进行说明。本实施例可以应用于由交易网关(gw,gateway,负责与客户端进行消息交互)、te(交易引擎,负责对交易请求进行处理)和ors(order routing service,系统报盘服务组件)这些组件构成的券商系统。这些组件对交易订单数据进行处理的流程如下:交易网关gw接收订单管理系统通过api报送的交易委托请求,根据交易委托请求向交易引擎te发送交易指令;交易引擎te向ors发送报盘请求,以完成报盘过程;ors在完成报盘后向te返回交易结果;te将交易结果通过gw返回给订单管理系统。在上述处理过程中,gw、te和ors将生成的交易订单数据存储在各自的数据库中。当交易周期结束时,gw、te和ors按照分片算法对数据库中的数据进行分片,在排序后进行并行发送以将交易订单数据复制到目标数据库中,以通过目标数据库对gw、te和ors生成的历史交易订单数据进行集中管理和备份。而当下一个交易日开始时,gw、te和ors又可以执行对应的业务流程并将生成的交易订单数据覆盖掉已经存储在数据库中的前一交易周期的交易订单数据。通过这样的方式,能够对业务组件的数据库进行循环利用,还能保证对这些数据的可靠备份。
89.这些交易组件可以通过集中通信总线进行通信。每个交易组件配置有对应的数据库,各个交易组件与对应的数据库也可以通过该集中通信总线进行通信,例如:交易组件在运行过程中生成交易数据,将交易数据发送至集中通信总线中,并在交易数据中携带数据库标识,各个数据库实时监测各个交易组件发送到集中通信总线的交易数据,当某个数据库确定交易数据中的数据库标识与自身匹配时,将对应的交易数据读取下来并进行存储。此外,还配置有一个目标数据库,用于对各个数据库中的数据进行备份。各个交易组件的数据库与目标数据库也可以通过集中通信总线进行通信。例如:gw的数据库将交易数据发送至集中通信总线中,并在交易数据中携带目标数据库标识。目标数据库实时监测各个交易组件发送到集中通信总线的交易数据,当确定交易数据中的目标数据库标识与自身匹配时,将对应的交易数据读取下来并进行存储。此外,在需要对某个业务组件中的数据进行使用而该业务组件出现故障时,可以在目标数据库中定位到源数据库的数据存储位置。按照上述方式从数据存储位置中将数据复制回对应的源数据库中。也可以直接从目标数据库中将数据复制到需要进行数据处理的计算机设备中。通过目标数据库的备份,能在源数据库出现故障时及时获取到对应的交易订单数据,保证数据的安全性。
90.具体的,如图5所示,以该券商系统为例进行说明,当交易周期结束时,该券商系统即服务器执行复制任务前会先查询每个表的总行数,然后按表的行数进行排序,每个表对
应一个复制任务。即服务器先查询各复制任务对应的数据表的总行数,并将复制任务按照总行数从大到小的顺序进行排序处理。进一步的,服务器可以获取已排序的复制任务中总行数最大的目标复制任务所对应的数据表的行数,并将行数与预设阈值进行比较,即优先执行数据量大的复制任务。假设预设阈值为1万行,若行数不大于预设阈值(1万行),则扫描数据表即全表复制,将数据表复制到目标数据库中。若行数大于预设阈值(1万行),则查询数据表的主键信息,即服务器可以查询数据表的主键信息中是否存在自增主键。若数据表的主键信息中不存在自增主键,则服务器获取数据表的主键信息中的主键第一阈值和主键第二阈值,即服务器使用唯一主键进行分片,根据唯一主键进行排序,然后使用数据库的limit offset功能进行分片。具体的,服务器可以使用limit offset功能对主键进行分页,并使用主键分页后的值进行关联查询对应的行数据,将查询到的行数据并行复制到目标数据库中,即多个分页数据可以并行复制。
91.若数据表的主键信息中存在自增主键,则服务器获取数据表的自增主键中的主键第一阈值(最大值)和主键第二阈值(最小值),服务器可以根据主键第一阈值和主键第二阈值,对主键信息的值域进行分片,得到对应的分片数据,并将分片数据并行复制到目标数据库中,多个分片数据可以并行进行复制。由此,通过分片并行复制的方式能有效提高数据复制的效率,进而快速备份或者归档到数据库中,即能够根据表的特征自动选择合适的分片算法,对单表分片后进行并行复制。相较于传统方式中对单个表的数据不能进行并发复制,而本实施例中可以对单个表的数据进行并发处理,有效提升大表的复制效率。
92.应该理解的是,虽然图1

5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1

5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
93.在一个实施例中,如图6所示,提供了一种数据复制装置,包括:比较模块602、获取模块604、分片模块606和复制模块608,其中:
94.比较模块602,用于响应于复制任务,获取复制任务中目标复制任务对应的数据表的行数,并将行数与预设阈值进行比较。
95.获取模块604,用于若行数大于预设阈值,则查询数据表的主键信息,并获取主键信息中的主键第一阈值和主键第二阈值;其中,主键第一阈值大于主键第二阈值。
96.分片模块606,用于根据主键第一阈值和主键第二阈值,对主键信息的值域进行分片,得到对应的分片数据。
97.复制模块608,用于将分片数据并行复制到目标数据库中。
98.在一个实施例中,该装置还包括:排序处理模块。
99.排序处理模块用于查询各复制任务对应的数据表的行数,并将复制任务按照行数从大到小的顺序进行排序处理。比较模块还用于获取已排序的复制任务中行数最大的目标复制任务所对应的数据表的行数,并将行数与预设阈值进行比较。
100.在一个实施例中,该装置还包括:查询模块。
101.查询模块用于查询数据表的主键信息中是否存在自增主键。获取模块还用于若数
据表的主键信息中不存在自增主键,则获取数据表的主键信息中的主键第一阈值和主键第二阈值;若数据表的主键信息中存在自增主键,则获取数据表的自增主键中的主键第一阈值和主键第二阈值。
102.在一个实施例中,分片模块还用于根据自增主键中的主键第一阈值和主键第二阈值,对主键信息的值域进行分片,得到对应的分片数据。
103.在一个实施例中,该装置还包括:分页模块。
104.分页模块用于根据主键信息中的主键第一阈值和主键第二阈值,利用sql语句对主键信息的值域进行分页,得到分页后的数值。复制模块还用于利用分页后的数值查询对应的行数据,并将查询到的行数据并行复制到目标数据库中。
105.在一个实施例中,该装置还包括:生成模块。
106.生成模块用于将预设时间段内的交易数据导入到历史数据库中,并根据历史数据库中的每个数据表生成对应的复制任务。
107.在一个实施例中,复制模块还用于若行数不大于预设阈值,则扫描数据表,将数据表复制到目标数据库中。
108.关于数据复制装置的具体限定可以参见上文中对于数据复制方法的限定,在此不再赘述。上述数据复制装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
109.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储复制数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据复制方法。
110.本领域技术人员可以理解,图7中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
111.在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述各个方法实施例的步骤。
112.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read

only memory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存
储器(dynamic random access memory,dram)等。
113.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
114.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1