如何应对数据库CPU打满?最优解在这里
阿里云数据库
2020-04-26 16:48·字数:4996·阅读:129
如何用好数据库,调校数据库使其发挥最优的性能?
如何快速诊断和应对各种原因导致的突发数据库性能问题?
如何以最低资源成本满足业务需求?
这些复杂的运维难题最优解到底是什么?
今天(4月22日)15:00数据库自治服务DAS重磅发布会
现场为你揭晓答案!
数据库自动驾驶时代一触即发点击这里
即可预约直播
今天提前为大家揭秘数据库自治服务DAS的一个创新功能 —— AutoScale,基于数据库实例的实时性能数据作为输入,由DAS完成流量异常发现、合理数据库规格建议和合理磁盘容量建议,使数据库服务具备自动扩展存储和计算资源的能力。
01背 景
为业务应用选择一个合适的数据库规格,是每个数据库运维同学都会经常面临的一个问题。若规格选的过大,会产生资源浪费;若规格选的过小,计算性能不足会影响业务。
通常情况下,运维同学会采用业务平稳运行状态下,CPU可处于合理水位(例如50%以下)的一个规格(如4核CPU配8G内存)并配一个相对富余的磁盘规格(如200G)。
然而在数据库应用运维同学的日常生活里,线上应用流量突增导致数据库资源打满的情况时有发生,而引发这类问题的场景可能多种多样:
1、新业务上线,对业务流量预估不足,导致资源打满,如新上线的应用接入了大量的引流,或基础流量比较大的平台上线了一个新特性功能。
2、不可预知的流量,如突发的舆论热点带来的临时流量,或某个网红引发的限时抢购、即兴话题等。
3、一些平时运行频次不高,但又偶发集中式访问,如每日一次的上班打卡场景,或每周执行几次的财务核算业务。这类业务场景平时业务压力不高,虽已知会存在访问高峰,但为节省资源而通常不会分配较高的规格。
当上述业务场景突发计算资源不足状况时,通常会让运维同学措手不及,严重影响业务,如何应对“数据库资源打满”是运维同学常常被挑战的问题之一。
在数据库场景下,资源打满可分为计算资源和存储资源两大类,其主要表现:
1、计算资源打满,主要表现为CPU资源利用率达到100%,当前规格下的计算能力不足以应对;
2、存储资源打满,主要表现为磁盘空间使用率达到100%,数据库写入的数据量达到当前规格下的磁盘空间限制,导致业务无法写入新数据;
针对上述两类问题,数据库自治服务 DAS 进行了服务创新,使数据库服务具备自动扩展存储和计算资源的技术能力,应对上述的问题。
DAS AutoScale基于数据库实例的实时性能数据作为输入,由DAS完成流量异常发现、合理数据库规格建议和合理磁盘容量建议,使数据库服务具备自动扩展存储和计算资源的能力。
接下来,本文将对DAS AutoScale服务的架构进行详细的介绍,包括技术挑战、解决方案和关键技术。
02技术挑战
计算节点规格调整是数据库优化的一种常用手段,尽管计算资源规格只涉及到CPU和内存,但在生产环境进行规格变配的影响还是不容忽视,将涉及数据迁移、HA切换、Proxy切换等 *** 作,对业务也会产生影响。
业务有突发流量时,计算资源通常会变得紧张甚至出现CPU达到100%的情况。通常情况下,这种情况会通过扩容数据库规格的方式来解决问题,同时DBA在准备扩容方案时会至少思考如下三个问题:
1扩容是否能解决资源不足的问题?
2何时应该进行扩容?
3如何扩容,规格该如何选择?
解决这三个问题,DAS同样面临如下三个方面挑战:
21 挑战一:如何判别扩容是否能够解决问题?
在数据库场景下,CPU打满只是一个计算资源不足的表征,导致这个现象的根因多样,解法也同样各异。例如业务流量激增,当前规格的资源确实不能够满足计算需求,在合适的时机点,d性扩容是一个好的选择,再如出现了大量的慢SQL,慢SQL堵塞任务队列,且占用了大量的计算资源等,此时资深的数据库管理员首先想到的是紧急SQL限流,而不是扩容。在感知到实例资源不足时,DAS同样需要从错综复杂的问题中抽丝剥茧定位根因,基于根因做出明智的决策,是限流,是扩容,还是其它。
22 挑战二:如何选择合适的扩容时机和扩容方式?
对于应急扩容时机,选择的好坏与紧急情况的判断准确与否密切相关。“紧急”告警发出过于频繁,会导致实例频繁的高规格扩容,产生不必要的费用支出;“紧急”告警发出稍晚,业务受到突发情况影响的时间就会相对较长,对业务会产生影响,甚至引发业务故障。在实时监控的场景下,当我们面临一个突发的异常点时,很难预判下一时刻是否还会异常。因此,是否需要应急告警变得比较难以决断。
对于扩容方式,通常有两种方式,分别是通过增加只读节点的水平扩容,以及通过改变实例自身规格的垂直扩容。
其中,水平扩容适用于读流量较多,而写流量较少的场景,但传统数据库需要搬迁数据来搭建只读节点,而搬迁过程中主节点新产生的数据还存在增量同步更新的问题,会导致创建新节点比较慢。
垂直扩容则是在现有规格基础上进行升级,其一般流程为先对备库做升级,然后主备切换,再对新备库做规格升级,通过这样的流程来降低对业务的影响,但是备库升级后切换主库时依然存在数据同步和数据延迟的问题。因此,在什么条件下选择哪种扩容方式也需要依据当前实例的具体流量来进行确定。
23 挑战三:如何选择合适的计算规格?
在数据库场景下,实例变更一次规格涉及多项管控运维 *** 作。以物理机部署的数据库变更规格为例,一次规格变更 *** 作通常会涉及数据文件搬迁、cgroup隔离重新分配、流量代理节点切换、主备节点切换等 *** 作步骤;而基于Docker部署的数据库规格变更则更为复杂,会额外增加Docker镜像生成、Ecs机器选择、规格库存等微服务相关的流程。因此,选择合适的规格可有效地避免规格变更的次数,为业务节省宝贵的时间。
当CPU已经是100%的时候,升配一个规格将会面临两种情况:第一种是升配之后,计算资源负载下降并且业务流量平稳;第二种是升配之后,CPU依然是100%,并且流量因为规格提升后计算能力增强而提升。
第一种情况,是比较理想的情况,也是预期扩容后应该出现的效果,但是第二种情况也是非常常见的情形,由于升配之后的规格依然不能承载当前的业务流量容量,而导致资源依然不足,并且仍在影响业务。如何利用数据库运行时的信息选择一个合适的高配规格是将直接影响升配的有效性。
03解决方案
针对上述提到的三项技术挑战,下面从DAS AutoScale服务的产品能力、解决方案、核心技术这三个方面进行解读,其中涉及RDS和PolarDB两种数据库服务,以及存储自动扩容和规格自动变更两个功能,最后以一个案例进一步具体说明。
31 能力介绍
在产品能力上,目前DAS AutoScale服务针对阿里云RDS数据库和PolarDB数据提供存储自动扩容服务和规格自动变配服务。
其中,针对即将达到用户已购买规格上限的实例,DAS存储自动扩容服务可以进行磁盘空间预扩容,避免出现因数据库磁盘满而影响用户业务的发生。在该服务中,用户可自主配置扩容的阈值比例,也可以采用DAS服务预先提供的90%规格上界的阈值配置,当触发磁盘空间自动扩容事件后,DAS会对该实例的磁盘进行扩容;
针对需要变更实例规格的数据库实例,DAS规格自动变配服务可进行计算资源的调整,用更符合用户业务负载的计算资源来处理应用请求,在该服务中,用户可自主配置业务负载流量的突发程度和持续时间,并可以指定规格变配的最大配置以及变配之后是否回缩到原始规格。
在用户交互层面,DAS AutoScale主要采用消息通知的方式展示具体的进度以及任务状态,其中主要包括异常触发事件、规格建议和管控任务状态三部分。异常触发事件用于通知用户触发变配任务,规格建议将针对存储扩容和规格变配的原始规格和目标值进行说明,而管控任务状态则将反馈AutoScale任务的具体进展和执行状态。
32 方案介绍
为了实现上面介绍的具体能力,DAS AutoScale实现了一套完整的数据闭环,如图1:
图1 DAS AutoScale数据闭环
在该闭环中,包含性能采集模块、决策中心、算法模型、规格建议模块、管控执行模块和任务跟踪模块,各模块的具体功能如下:
性能采集模块负责对实例进行实时性能数据采集,涉及数据库的多项性能指标信息、规格配置信息、实例运行会话信息等;
决策中心模块则会根据当前性能数据、实例会话列表数据等信息进行全局判断,以解决挑战一的问题。例如可通过SQL限流来解决当前计算资源不足的问题则会采取限流处理;若确实为突增的业务流量,则会继续进行AutoScale服务流程;
算法模型是整个DAS AutoScale服务的核心模块,负责对数据库实例的业务负载异常检测和容量规格模型推荐进行计算,进而解决挑战二和挑战三的具体问题;
规格建议校验模块将产出具体建议,并针对数据库实例的部署类型和实际运行环境进行适配,并与当前区域的可售卖规格进行二次校验,确保的建议能够顺利在管控侧进行执行;
管控模块负责按照产出的规格建议进行分发执行;
状态跟踪模块则用于衡量和跟踪规格变更前后数据库实例上的性能变化情况;
接下来,将分别针对DAS AutoScale支持的存储扩容和规格变配两个业务场景进行展开介绍。
!图2 存储扩容方案](>
不要把数据库和excel那种单纯的表格混为一谈,数据库的强大不是我们一下子就能想象的到的
(1)数据定义功能。DBMS提供相应数据语言来定义(DDL)数据库结构,它们是刻画数据库框架,并被保存在数据字典中。
(2)数据存取功能。DBMS提供数据 *** 纵语言(DML),实现对数据库数据的基本存取 *** 作:检索,插入,修改和删除。
(3)数据库运行管理功能。DBMS提供数据控制功能,即是数据的安全性、完整性和并发控制等对数据库运行进行有效地控制和管理,以确保数据正确有效。
(4)数据库的建立和维护功能。包括数据库初始数据的装入,数据库的转储、恢复、重组织,系统性能监视、分析等功能。
(5)数据库的传输。DBMS提供处理数据的传输,实现用户程序与DBMS之间的通信,通常与 *** 作系统协调完成。
方法步骤:
1、首先我们打开heidisql客户端,我们新建一个连接,如果连接的是sql server的数据库,要选择数据库的类型,端口号一般是1433如果是mysql的数据库,一般端口是3306,记住,别混了,输入用户名跟密码就能链接了。
2、打开数据库后,我们选择一个表来 *** 作,一般表都是在左侧的,我们依次展开,从数据库到表打开想要插入数据的表。
3、在这里选择数据打开,我这里用的是heidisql汉化版的,如果是英文版的应该是data才对。
4、在这个功能栏里,我们可以看见一个加号和一个减号,加号代表的是插入一条数据,二减号正好相反。
5、点击插入数据,卡你的鼠标在那个位置,它会在这个位置的下面一条记录插入一条记录。然后我们往里面输入数据,注意数据的类型,如果数据是time时间格式的,要按时间格式填写。
6、插入成功后会提示成功了,下面的记录也会跟着变色。
7、这里也可以用命令来插入,选择查询。
8、在这个命令的窗口,我们输入sql语句,然后点击上面的蓝色按钮,然后就会执行命令,执行成功会提示插入数据成功。
9、再返回表这边看,可以看到数据插入成功了。
新建表
双击打开MySQL软件,在左侧中找到表并且右击选择新建表,如下图所示:
添加数据选择新建表之后,在界面右侧可以添加数据,点击添加栏目就可以在下方再添加一行数据,如下图所示:
另存为点击另存为,会d出一个表名窗口,输入表名,比如Class,点击确定按钮,如下图所示:
显示结果在表的下方就会出现一个名为Class的表,如下图所示:
朋友,数据库这个问题太大了,我也不知道怎么说?
能帮到你,我虽然是学计算机的,我建议你还是先学一些简单的计算机知识,学习计算机的编程语言,然后再去研究数据库,每个软件的数据库都是比较容易找到的,首先,你得有 *** 作,这个数据库的权限,比如你手机上的电脑上的数据库。
朋友,数据库这个问题太大了,我也不知道怎么说?
能帮到你,我虽然是学计算机的,我建议你还是先学一些简单的计算机知识,学习计算机的编程语言,然后再去研究数据库,每个软件的数据库都是比较容易找到的,首先,你得有 *** 作,这个数据库的权限,比如你手机上的电脑上的数据库。
朋友,数据库这个问题太大了,我也不知道怎么说?
能帮到你,我虽然是学计算机的,我建议你还是先学一些简单的计算机知识,学习计算机的编程语言,然后再去研究数据库,每个软件的数据库都是比较容易找到的,首先,你得有 *** 作,这个数据库的权限,比如你手机上的电脑上的数据库。
1、首先,打开软件,打开你的数据库的几个表。点击上面的数据库工具,在关系选项组里选择关系。
2、这时,d出对话框,选择你要建立关系的那几个表,点击添加。
3、这时,进入关系界面,用鼠标左键按住表1里的姓名往右边移动到表2的姓名处松开左键。
4、这时,d出编辑关系对话框,点击创建。同样的把另一个编辑好。
5、这样就可以了,点击关闭,这时d出提示框,点击是就完成了。
什么是数据库呢当人们从不同的角度来描述这一概念时就有不同的定义(当然是描述性的)。例如,称数据库是一个“记录保存系统”(该定义强调了数据库是若干记录的集合)。又如称数据库是“人们为解决特定的任务,以一定的组织方式存储在一起的相关的数据的集合”(该定义侧重于数据的组织)。
用来管理数据的
以上就是关于数据库在资源充足的表现全部的内容,包括:数据库在资源充足的表现、数据库用在什么方面、什么是数据库,在客户关系管理中是如何使用数据库的,数据库在CRM中承担了什么功能,地位和作用如何等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)