容量测试方法、装置、终端及存储介质与流程

文档序号:33400751发布日期:2023-03-08 16:40阅读:52来源:国知局
容量测试方法、装置、终端及存储介质与流程

1.本技术涉及数据库集群技术领域,具体而言,涉及一种容量测试方法、装置、终端及存储介质。


背景技术:

2.在互联网飞速发展的今天,越来越多的人接触到互联网,从而每天都会产生大量的数据,而这些数据被存储到各种各样的存储软件中,如mysql。mysql是一种关系型数据库管理系统,其主要是将数据保存在不同的表中。
3.目前,常用的压测工具,即测试数据库集群容量的工具主要采用sysbench,sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行cpu、内存、磁盘i/o、线程、数据库的性能测试,支持的数据库有mysql、oracle和postgresql。
4.但是,sysbench只能作为一个基准压测工具,用来压测mysql性能是否正常,但无法压测不同的数据库集群的容量。


技术实现要素:

5.本技术的主要目的在于提供一种容量测试方法、装置、终端及存储介质,以解决相关技术中缺少测试数据库集群容量方法的问题。
6.为了实现上述目的,第一方面,本技术提供了一种容量测试方法,包括:
7.建立目标数据库集群;
8.基于目标数据库集群,生成sql日志列表;
9.基于sql日志列表,确定目标水位,其中,目标水位用于表征目标数据库集群的最大容量。
10.在一种可能的实现方式中,建立目标数据库集群,包括:
11.获取目标集群信息;
12.判断目标集群信息中是否存在容器实例,得到第一判断结果;
13.基于第一判断结果,建立目标数据库集群。
14.在一种可能的实现方式中,基于第一判断结果,建立目标数据库集群,包括:
15.若第一判断结果为否,构建集群配置;
16.向drm接口请求集群数据,并基于集群数据和集群配置请求搭建目标数据库集群;
17.待接收到drm接口基于定时轮询任务反馈的成功信息后,确定目标数据库集群。
18.在一种可能的实现方式中,基于第一判断结果,建立目标数据库集群,包括:
19.若第一判断结果为是,向drm接口请求获取集群数据,并构建集群配置;
20.基于集群数据和集群配置请求搭建目标数据库集群;
21.待接收到drm接口基于定时轮询任务反馈的成功信息后,确定目标数据库集群。
22.在一种可能的实现方式中,方法还包括:
23.待接收到drm接口基于定时轮询任务反馈的失败信息后,若定时轮询任务的任务
数量未超过预设任务数量,请求drm接口在失败信息对应的节点重新执行定时轮询任务;
24.待接收到drm接口基于定时轮询任务反馈的成功信息后,确定目标数据库集群。
25.在一种可能的实现方式中,基于目标数据库集群,生成sql日志列表,包括:
26.获取预设时间范围内的日志列表和机器列表;
27.采用多协程方式获取机器列表中的流量日志;
28.判断流量日志的数量是否满足预设日志数量,得到第二判断结果;
29.基于第二判断结果和流量日志,生成sql日志列表。
30.在一种可能的实现方式中,基于第二判断结果和流量日志,生成sql日志列表,包括:
31.若第二判断结果为是,采用多协程方式对所流量日志进行解析,生成sql日志列表。
32.在一种可能的实现方式中,基于sql日志列表,确定目标水位,包括:
33.采用初始压力回放sql日志列表;
34.若sql日志列表中存在异常指标的位点,采用第二压力回放位点之前的sql日志列表,直至不再出现异常指标,并将位点作为目标水位。
35.在一种可能的实现方式中,采用初始压力回放sql日志列表之前,还包括:
36.读取并缓存预设数量的sql日志到内存;
37.按照预设频率检查sql日志的数量,若数量小于预设数量,继续缓存sql日志。
38.在一种可能的实现方式中,方法还包括:
39.获取目标数据库集群对应的目标任务;
40.若目标任务中的任务信息未发生变化,基于目标数据库集群,判断是否触发报警。
41.在一种可能的实现方式中,基于目标数据库集群,判断是否触发报警,包括:
42.获取目标数据库集群在当前探测周期内的读流量峰值和写流量峰值;
43.若读流量峰值、写流量峰值均超过目标水位,触发报警。
44.在一种可能的实现方式中,基于目标数据库集群,判断是否触发报警,包括:
45.基于自定义检测项对目标数据库集群进行检测,若存在目标检测项满足预警阈值,触发报警。
46.第二方面,本发明实施例提供了一种容量测试装置,包括:
47.集群建立模块,用于建立目标数据库集群;
48.列表生成模块,用于基于目标数据库集群,生成sql日志列表;
49.容量测试模块,用于基于sql日志列表,确定目标水位,其中,目标水位用于表征目标数据库集群的最大容量。
50.第三方面,本发明实施例提供了一种终端,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上任一种容量测试方法的步骤。
51.第四方面,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上任一种容量测试方法的步骤。
52.本发明实施例提供了一种容量测试方法、装置、终端及存储介质,包括:先建立目标数据库集群,然后基于目标数据库集群,生成sql日志列表,再基于sql日志列表,确定目
标水位,其中,目标水位用于表征目标数据库集群的最大容量。本发明通过线上真实流量进行回放sql日志,并通过不同的回放策略对目标数据库集群进行压测,从而得到准确的数据库的容量值。此外,通过平台化自动化压测释放压测带来的人力消耗问题,从而提高数据库集群的稳定性以及增加容量的可观测能力。
附图说明
53.构成本技术的一部分的附图用来提供对本技术的进一步理解,使得本技术的其它特征、目的和优点变得更明显。本技术的示意性实施例附图及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
54.图1是本发明实施例提供的一种容量测试方法的实现流程图;
55.图2是本发明实施例提供的一种目标数据库集群建立方法的实现流程图;
56.图3是本发明实施例提供的一种sql日志列表的生成方法的实现流程图;
57.图4是本发明实施例提供的一种容量压测方法的实现流程图;
58.图5是本发明实施例提供的一种容量测试装置的结构示意图;
59.图6是本发明实施例提供的终端的示意图。
具体实施方式
60.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
61.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
62.应当理解,在本发明的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
63.应当理解,在本发明中,“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
64.应当理解,在本发明中,“多个”是指两个或两个以上。“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。“包含a、b和c”、“包含a、b、c”是指a、b、c三者都包含,“包含a、b或c”是指包含a、b、c三者之一,“包含a、b和/或c”是指包含a、b、c三者中任1个或任2个或3个。
65.应当理解,在本发明中,“与a对应的b”、“与a相对应的b”、“a与b相对应”或者“b与a相对应”,表示b与a相关联,根据a可以确定b。根据a确定b并不意味着仅仅根据a确定b,还可
以根据a和/或其他信息确定b。a与b的匹配,是a与b的相似度大于或等于预设的阈值。
66.取决于语境,如在此所使用的“若”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。
67.下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
68.首先,为使本发明方案清楚易懂,对专业词汇进行解释说明,具体如下:
69.mysql:是一个开源的关系型数据库管理系统,由瑞典mysql ab公司1995年开发,迅速成为最流行的开源关系型数据库管理系统。
70.关系型数据库:是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。
71.qps:每秒查询率(qps,queries-per-second)是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
72.sysbench:是一个基于luajit的可编写多线程基准测试工具。它最常用于数据库基准测试,但也可用于创建不涉及数据库服务器的任意复杂工作负载。
73.drm:自建的数据库扩缩容平台。
74.mdc:数据库备份恢复平台;支持对数据库集群的天界别自动化备份,支持数据恢复功能。
75.进一步地,为使本发明的目的、技术方案和优点更加清楚,下面将结合附图通过具体实施例来进行说明。
76.在一个实施例中,如图1所示,提供了一种容量测试方法,包括以下步骤:
77.步骤s101:建立目标数据库集群。
78.由于在同等架构配置的情况下,不足以支持进行数据库的容量压测,还需要有数据的支撑,因此,本技术通过查询管理端数据,获取到线上数据库集群架构,再调用drm(digital rights management,数字版权管理)平台自动化扩容出指定配置的数据库集群。
79.在压测时创建出一套和线上同样配置、同架构以及数据相同的数据库集群,以在变量尽量少的情况下,得到精准的数据库集群的容量上限。
80.下面结合图2阐述建立目标数据库集群的过程,具体如下:
81.在测压开始后,首先需要获取目标集群信息,即要压测水位的集群信息,然后判断目标集群信息中是否存在容器实例,得到第一判断结果,再基于第一判断结果,建立目标数据库集群。
82.若第一判断结果为否,构建集群配置,即压测所需的集群配置,然后向drm接口请求集群数据,并基于集群数据和集群配置请求搭建目标数据库集群,待接收到drm接口基于定时轮询任务反馈的成功信息后,确定目标数据库集群。
83.当待接收到drm接口基于定时轮询任务反馈的失败信息后,此时失败计数器+1,若定时轮询任务的任务数量未超过预设任务数量,即重试次数,请求drm接口在失败信息对应的节点(失败的节点)重新执行定时轮询任务,待接收到drm接口基于定时轮询任务反馈的
成功信息后,确定目标数据库集群;若定时轮询任务的任务数量超过预设任务数量,全量回滚已搭建目标数据库集群的步骤,然后结束,即返回失败。
84.若第一判断结果为是,向drm接口请求获取集群数据,并构建集群配置,基于集群数据和集群配置请求搭建目标数据库集群。待接收到drm接口基于定时轮询任务反馈的成功信息后,确定目标数据库集群。
85.步骤s102:基于目标数据库集群,生成sql日志列表。
86.结合图3,目标数据库集群搭建完成后,接下来只需要从代理层获取预设时间范围内的日志列表和机器列表,其中,预设时间范围是用户指定的时间范围,机器列表可以是通过指定的proxy bns所获取的proxy机器列表。
87.获取到日志列表和机器列表后,可在本地创建日志存储目录,然后采用多协程方式获取机器列表中的流量日志,拉取完成后,判断流量日志的数量是否满足预设日志数量,得到第二判断结果,然后基于第二判断结果和流量日志,生成sql日志列表。其中,开启多协程(和代理层机器数相同,每个协程负责一个代理层机器)拉取代理机器上的流量日志到本地,本技术采用多协程同时解析多个日志文件,并对解析的结果进行merge操作,可提升解析速度。
88.具体的,若第二判断结果为是,采用多协程方式对所流量日志进行解析,生成sql日志列表;若第二判断结果为否,则会报错,即流量日志的数量不满足预设日志数量。
89.生成sql日志列表后,可通过以下方式将sql日志列表(即图3中的sql)存储于集群中备用,即读取sql日志列表中的文件,如果读取完成,判断读取行的结尾是否为结束标志。如果读取行的结尾是结束标志,将数据库中缓存的日志进行切割以清空缓存,然后将sql日志列表存储至数据库中,再将数据库插入数据库集群中。其中,结束标志可以为“]\”等。
90.步骤s103:基于sql日志列表,确定目标水位,其中,目标水位用于表征目标数据库集群的最大容量。
91.结合图4,先采用初始压力回放sql日志列表,初始压力是用户发起任务时配置的。假设初始压力为1000qps压力,开始发压,每过五分钟,都检查一次指标,如果发现指标正常,则加压;如果指标异常,则进行减压。其中,加压策略:每次加压一倍,即每次加压1000qps(加压qps,可配置)。减压策略:如果触发平响异常,每次减压初始qps/5(例如初始qps为1000qps,则减压200qps)。
92.若sql日志列表中存在异常指标的位点,也就是说,发现指标异常,进行减压,则减压后的压力(即第二压力)为800qps。然后采用第二压力回放位点之前的sql日志列表,直至不再出现异常指标(即指标正常),并将位点作为目标水位。其中,如果采用第二压力回放位点之前的sql日志列表仍然出现异常指标,则继续减压,直到指标正常。
93.此外,如果回放所需要的sql日志列表都存储在本地磁盘中,则每次回放都需要去读取本地磁盘,就可能会因为读取sql日志列表这一步的消耗而导致回放结果不符合我们的预期。
94.本技术为了解决上述问题,采取了预取数据策略,即读取并缓存预设数量的sql日志到内存,并按照预设频率检查sql日志的数量,若数量小于预设数量,继续缓存sql日志。从而保证内存中有着后续回放需要使用的sql日志,以及减少读取带来的影响。
95.此外,在确定目标数据库集群的容量后,探测模块可结合目标水位,实现分钟(小
时、天级别,可配置)周期级别的探测,检查目标数据库集群的目标水位是否正常。除去qps水位探测外,还可支持自定义探测项配置,例如检查cpu_idle是否小于10%、max_disk_io是否大于80%等,从而补全探测的范围,提供更加准备的集群健康检查能力。其中,探测模块支持如下功能:新增流量检测任务(集群级别,一个集群只能有一个流量检测任务),删除指定集群的流量检测任务,修改当前流量检测任务的配置,以及报警功能(支持告警屏蔽),如当探测到集群水位异常时,则发生告警邮件到指定的收件人。
96.探测模块针对目标数据库集群的探测步骤主要为:获取目标数据库集群对应的目标任务,若目标任务中的任务信息未发生变化,基于目标数据库集群,判断是否触发报警。其中,基于目标数据库集群,判断是否触发报警的第一种方式为,获取目标数据库集群在当前探测周期内的读流量峰值和写流量峰值,若读流量峰值、写流量峰值均超过目标水位,触发报警。第二种方式为,基于自定义检测项对目标数据库集群进行检测,若存在目标检测项满足预警阈值,触发报警。
97.对上述探测步骤进行展开,具体地:
98.步骤1:开始事务,锁住元数据库中对应的任务条目,即目标任务。
99.步骤2:判断目标任务中的任务信息中server是否发生变化。
100.发生变化:则说明目标任务已经被其他wlp server继承(具体继承逻辑可以看下方的任务继承功能介绍),则销毁该目标任务,退出此次运行;没有变化,目标任务的运行server信息仍为当前server,修改目标任务状态为执行中,提交事务,进入步骤3。
101.步骤3:请求noah接口,获取该目标任务对应的目标数据库集群在当前这个探测周期内的读流量峰值和写流量峰值,检查目标数据库集群的读流量峰值和写流量峰值是否超过水位探测阈值(即目标水位)。
102.超过:进入报警逻辑(步骤88);未超过:进入步骤4。
103.步骤4:判断目标数据库集群中的单个实例的读流量峰值是否超过指定阈值。
104.超过:进入报警逻辑(步骤88);未超过:进入步骤5。
105.步骤5:对用户配置的自定义检测项逐一检查,判断是否触发预警阈值。
106.存在:进入报警逻辑(步骤88);否:进入步骤99。
107.步骤88:检查任务的预警功能是否开启。
108.开启:给指定的收件人、报警组发送预警邮件,告知存在水位风险;未开启:更新探测结果,将此次探测的qps信息落库存储。
109.步骤99:修改目标任务状态,此次探测任务运行结束。
110.本发明实施例提供了一种容量测试方法、装置、终端及存储介质,包括:先建立目标数据库集群,然后基于目标数据库集群,生成sql日志列表,再基于sql日志列表,确定目标水位,其中,目标水位用于表征目标数据库集群的最大容量。本发明通过线上真实流量进行回放sql日志,并通过不同的回放策略对目标数据库集群进行压测,从而得到准确的数据库的容量值。此外,通过平台化自动化压测释放压测带来的人力消耗问题,从而提高数据库集群的稳定性以及增加容量的可观测能力。
111.应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
112.以下为本发明的装置实施例,对于其中未详尽描述的细节,可以参考上述对应的方法实施例。
113.图5示出了本发明实施例提供的一种容量测试装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分,一种容量测试装置包括集群建立模块51、列表生成模块52和容量测试模块53,具体如下:
114.集群建立模块51,用于建立目标数据库集群;
115.列表生成模块52,用于基于目标数据库集群,生成sql日志列表;
116.容量测试模块53,用于基于sql日志列表,确定目标水位,其中,目标水位用于表征目标数据库集群的最大容量。
117.在一种可能的实现方式中,集群建立模块51还用于获取目标集群信息;判断目标集群信息中是否存在容器实例,得到第一判断结果;基于第一判断结果,建立目标数据库集群。
118.在一种可能的实现方式中,集群建立模块51还用于若第一判断结果为否,构建集群配置;向drm接口请求集群数据,并基于集群数据和集群配置请求搭建目标数据库集群;待接收到drm接口基于定时轮询任务反馈的成功信息后,确定目标数据库集群。
119.在一种可能的实现方式中,集群建立模块51还用于若第一判断结果为是,向drm接口请求获取集群数据,并构建集群配置;基于集群数据和集群配置请求搭建目标数据库集群;待接收到drm接口基于定时轮询任务反馈的成功信息后,确定目标数据库集群。
120.在一种可能的实现方式中,集群建立模块51还用于待接收到drm接口基于定时轮询任务反馈的失败信息后,若定时轮询任务的任务数量未超过预设任务数量,请求drm接口在失败信息对应的节点重新执行定时轮询任务;待接收到drm接口基于定时轮询任务反馈的成功信息后,确定目标数据库集群。
121.在一种可能的实现方式中,列表生成模块52还用于获取预设时间范围内的日志列表和机器列表;采用多协程方式获取机器列表中的流量日志;判断流量日志的数量是否满足预设日志数量,得到第二判断结果;基于第二判断结果和流量日志,生成sql日志列表。
122.在一种可能的实现方式中,列表生成模块52还用于若第二判断结果为是,采用多协程方式对所流量日志进行解析,生成sql日志列表。
123.在一种可能的实现方式中,容量测试模块53还用于采用初始压力回放sql日志列表;若sql日志列表中存在异常指标的位点,采用第二压力回放位点之前的sql日志列表,直至不再出现异常指标,并将位点作为目标水位。
124.在一种可能的实现方式中,容量测试模块53之前,还包括日志缓存模块,日志缓存模块用于读取并缓存预设数量的sql日志到内存;按照预设频率检查sql日志的数量,若数量小于预设数量,继续缓存sql日志。
125.在一种可能的实现方式中,装置还包括探测模块,探测模块用于获取目标数据库集群对应的目标任务;若目标任务中的任务信息未发生变化,基于目标数据库集群,判断是否触发报警。
126.在一种可能的实现方式中,探测模块还用于获取目标数据库集群在当前探测周期内的读流量峰值和写流量峰值;若读流量峰值、写流量峰值均超过目标水位,触发报警。
127.在一种可能的实现方式中,探测模块还用于基于自定义检测项对目标数据库集群
进行检测,若存在目标检测项满足预警阈值,触发报警。
128.图6是本发明实施例提供的终端的示意图。如图6所示,该实施例的终端6包括:处理器61、存储器62以及存储在存储器62中并可在处理器61上运行的计算机程序63。处理器61执行计算机程序63时实现上述各个容量测试方法实施例中的步骤,例如图1所示的步骤101至步骤103。或者,处理器61执行计算机程序63时实现上述各个容量测试装置实施例中各模块/单元的功能,例如图5所示模块/单元51至53的功能。
129.本发明还提供一种可读存储介质,可读存储介质中存储有计算机程序,计算机程序被处理器执行时用于实现上述的各种实施方式提供的容量测试方法。
130.其中,可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(application specific integrated circuits,简称:asic)中。另外,该asic可以位于用户设备中。当然,处理器和可读存储介质也可以作为分立组件存在于通信设备中。可读存储介质可以是只读存储器(rom)、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
131.本发明还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得设备实施上述的各种实施方式提供的容量测试方法。
132.在上述设备的实施例中,应理解,处理器可以是中央处理单元(英文:central processing unit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digital signal processor,简称:dsp)、专用集成电路(英文:application specific integrated circuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
133.以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1