基于DevOps提升数据库运维效率的系统及其方法

阅读: 评论:0

著录项
  • CN201710901776.4
  • 20170928
  • CN110019118A
  • 20190716
  • 广东亿迅科技有限公司
  • 刘海忠;何广柏;张伟;刘亚光;曾培植;杨超
  • G06F16/21
  • G06F16/21 G06F16/23 G06F16/242 G06F16/248

  • 广东省广州市天河区中山大道109号1号楼13层
  • 广东(44)
  • 深圳市精英专利事务所
  • 冯筠
摘要
本发明涉及基于DevOps提升数据库运维效率的系统及其方法,该系统包括供租户申请节点实例的节点申请单元;节点监控单元,用于采集所述节点申请单元内被监控节点的监控数据,写入到MySQL,采用jqPlot图表从MySQL读取监控数据并图形化展示;DDL审核单元,用于根据节点申请单元内选中需要变更的节点及输入的DDL和DML语句,进行语法和语义的分析,根据分析结果进行反馈,对所有操作生成flashback语句。本发明提高数据库管理员生产力,数据库服务更加高效、稳定可靠,也有利于批量操作和升级,更高效的跨部门合作,提升团队协作效率,实现降低开发难度以及运维难度,保障数据库持续、高效、稳定输出服务。
权利要求

1.基于DevOps提升数据库运维效率的系统,其特征在于,所述系统包括:

节点申请单元,用于供租户申请节点实例;

节点监控单元,用于采集所述节点申请单元内的被监控节点的监控数据,写入到MySQL,采用jqPlot图表从MySQL读取监控数据并图形化展示;

DDL审核单元,用于根据节点申请单元内选中需要变更的节点以及输入的DDL和DML语句,进行语法和语义的分析,根据分析结果进行反馈,且对所有操作生成flashback语句。

2.根据权利要求1所述的基于DevOps提升数据库运维效率的系统,其特征在于,所述节点申请单元包括节点详情输入模块、实例生成模块以及安装模块;

所述节点详情输入模块,用于供租户输入所申请的所有节点实例信息;

所述实例生成模块,用于根据所述节点详情输入模块输入的信息从MySQL的资源池表中读取符合条件的实例,更改实例状态为部署状态;

所述安装模块,用于对租户申请的实例进行安装,并加入至所述节点监控单元内,更改实例状态为已使用状态。

3.根据权利要求1或2所述的基于DevOps提升数据库运维效率的系统,其特征在于,所述系统还包括慢日志汇总单元,用于分析慢SQL语句,并进行反序展现。

4.根据权利要求3所述的基于DevOps提升数据库运维效率的系统,其特征在于,所述系统还包括账号管理单元,用于管理租户所创建的连接MySQL的应用账号。

5.根据权利要求4所述的基于DevOps提升数据库运维效率的系统,其特征在于,所述系统还包括SQL索引优化单元,用于优化供租户所用的SQL索引。

6.基于DevOps提升数据库运维效率的方法,其特征在于,所述方法包括:

在MySQL的资源池表内规划好可安装的节点;

输入节点申请条件;

根据申请条件从MySQL的资源池表调取节点,形成符合条件的实例,将所述实例状态设置为在部署状态;

对所述实例进行安装;

对所述实例加入节点监控内,并将实例状态设置为已使用状态;

对实例进行节点监控;

根据节点申请条件内的需要变更的节点以及输入的DDL和DML语句,进行语法和语义进行分析,根据分析结果进行反馈;

对所有操作生成flashback语句。

7.根据权利要求6所述的基于DevOps提升数据库运维效率的方法,其特征在于,对实例进行节点监控的步骤,包括以下具体步骤:

获取实例内被监控节点的监控数据;

将所述监控数据写入MySQL内;

采用jqPlot图表从MySQL读取监控数据并进行图形化展示。

8.根据权利要求7所述的基于DevOps提升数据库运维效率的方法,其特征在于,根据节点申请条件内的需要变更的节点以及输入的DDL和DML语句,进行语法和语义进行分析,根据分析结果进行反馈的步骤,包括以下具体步骤:

获取实例内需要变更的节点、DDL和DML语句;

获取自定义配置规则,采用内带语法分析器可对DDL和DML语句进行语法分析以及语义分析;

判断分析结果是否为符合审核标准;

若是,则选择对应节点,执行对应变更,并进入对所有操作生成flashback语句的步骤;

若不是,则返回报错信息。

说明书
技术领域

本发明涉及企业数据库运维平台,更具体地说是指基于DevOps提升数据库运维效率的系统及其方法。

在项目运行过程中,数据库性能底下、故障频发常来自于操作系统和数据库配置项缺失、表结构、SQL设计不规范;也因为权限混乱、语句编写失误等原因导致数据库误操作不断。因此,为保障数据库稳定性,性能最大化,减少故障概率,数据库管理员需要在研发过程中统一把控,支撑完成如下事项:数据库服务部署、DDL人工审核发布、DML误操作订正、慢查询优化、索引优化、权限管理、故障处理……当各项目的数据库变动任务并行而至,一方面数据库管理员环节会成为整个流程的瓶颈;另一方面由于数据库从部署到审核都需要遵循规范化,介于语句和环境的复杂性,人工审核和操作难以确保高准确率。

目前对于企业数据内的变更工作一般有人工变更以及半自动变更方式,其中,如图1所示,对于人工变更法而言,所有的变更工作都是由人工走流程来完成,这种方法的交流方式一般是邮件,需要执行变更时,DEV/QA写邮件向数据库管理员发起变更,在数据库管理员收到之后大概完成如下流程:业务申请数据库资源,数据库管理员申请硬件资源后,手动部署并逐个接入各种监控、高可用系统、备份系统;研发人员申请访问资源、人员变动,数据库管理员人员频繁登录服务器变更权限;开发人员提交数据库变更要求,数据库管理员审核后提出建议,不符合规范的重走流程重新编写;对于符合要求的,数据库管理员直接线上执行,但是人工审核容易出错,上线实践后才发现错误,又必须reply给开发。对于半自动变更而言,如图2所示,采用开源工具或脚本来协助个别人工繁冗事务,交流方式依然是邮件或流程系统,大概有如下流程:业务申请数据库资源,数据库管理员申请硬件资源后,登录服务器运行自动化脚本部署;有一个强大的审核程序druid解析器,流程依然和人工审核一样;数据库管理员依然需要登录服务器变更权限;服务器部署计划任务工作,每天自动收集线上慢SQL,分析汇总后发邮件至各开发人员优化,开发人员要登录测试环境查看索引和执行计划。

但是,对人工变更方式而言,存在以下问题:数据库管理员日常重复工作,尤其是在DDL审核、执行且环节,循环且易出错,对于语法错误、语义错误肉眼无法保证100%识别,要正在线上实践才发现;对于已经定义的规则,各位数据库管理员存在宽松不均的问题,最终导致规则不成规则,很难推行下去;执行前,数据库管理员要对线上环境做检查,考虑语句对线上的稳定性有影响,权衡执行时间;执行后,还需要通知DEV、QA部门验证,数据库管理员才能完成该变更,浪费不少时间成本。对于半自动变更方式而言,存在以下问题:每次变更,数据库管理员依然要登录服务器远程批量操作;druid解析器依然存在可能存在没有审核到的漏洞,给线上数据库带来了很大的风险;审核程序首先要在测试环境中执行一次,如果发现没问题后,才会去线上执行,那么这个测试就需要时刻与线上环境保持同步,数据需要一样,数据库及表的元数据必须要保证相同,这样在Beta执行才具有参照性。一个频繁变更的节点,测试环境需要不断同步线上环境,代价非常高;由于备份导出数据和执行不是同一个事务里边,无法保证备份数据的准确性,加上变更后线上数据的覆盖,无法回滚,这样的备份意义不大。综上所述,无论是人工变更还是半自动变更,存在开发难度高以及运维复杂度高的问题。

因此,有必要设计一种基于DevOps提升数据库运维效率的系统,实现降低开发难度以及运维难度,保障数据库持续、高效、稳定输出服务。

本发明的目的在于克服现有技术的缺陷,提供基于DevOps提升数据库运维效率的系统及其方法。

为实现上述目的,本发明采用以下技术方案:基于DevOps提升数据库运维效率的系统,所述系统包括:

节点申请单元,用于供租户申请节点实例;

节点监控单元,用于采集所述节点申请单元内的被监控节点的监控数据,写入到MySQL,采用jqPlot图表从MySQL读取监控数据并图形化展示;

DDL审核单元,用于根据节点申请单元内选中需要变更的节点以及输入的DDL和DML语句,进行语法和语义的分析,根据分析结果进行反馈,且对所有操作生成flashback语句。

其进一步技术方案为:所述节点申请单元包括节点详情输入模块、实例生成模块以及安装模块;

所述节点详情输入模块,用于供租户输入所申请的所有节点实例信息;

所述实例生成模块,用于根据所述节点详情输入模块输入的信息从MySQL的资源池表中读取符合条件的实例,更改实例状态为部署状态;

所述安装模块,用于对租户申请的实例进行安装,并加入至所述节点监控单元内,更改实例状态为已使用状态。

其进一步技术方案为:所述系统还包括慢日志汇总单元,用于分析慢SQL语句,并进行反序展现。

其进一步技术方案为:所述系统还包括账号管理单元,用于管理租户所创建的连接MySQL的应用账号。

其进一步技术方案为:所述系统还包括SQL索引优化单元,用于优化供租户所用的SQL索引。

本发明还提供了基于DevOps提升数据库运维效率的方法,所述方法包括:

在MySQL的资源池表内规划好可安装的节点;

输入节点申请条件;

根据申请条件从MySQL的资源池表调取节点,形成符合条件的实例,将所述实例状态设置为在部署状态;

对所述实例进行安装;

对所述实例加入节点监控内,并将实例状态设置为已使用状态;

对实例进行节点监控;

根据节点申请条件内的需要变更的节点以及输入的DDL和DML语句,进行语法和语义进行分析,根据分析结果进行反馈;

对所有操作生成flashback语句。

其进一步技术方案为:对实例进行节点监控的步骤,包括以下具体步骤:

获取实例内被监控节点的监控数据;

将所述监控数据写入MySQL内;

采用jqPlot图表从MySQL读取监控数据并进行图形化展示。

其进一步技术方案为:根据节点申请条件内的需要变更的节点以及输入的DDL和DML语句,进行语法和语义进行分析,根据分析结果进行反馈的步骤,包括以下具体步骤:

获取实例内需要变更的节点、DDL和DML语句;

获取自定义配置规则,采用内带语法分析器可对DDL和DML语句进行语法分析以及语义分析;

判断分析结果是否为符合审核标准;

若是,则选择对应节点,执行对应变更,并进入对所有操作生成flashback语句的步骤;

若不是,则返回报错信息。

本发明与现有技术相比的有益效果是:本发明的基于DevOps提升数据库运维效率的系统,通过设置节点申请单元、节点监控单元以及DDL审核单元,对节点实例的自动申请、节点监控以及变更节点的审核从数据库管理员解放出来,形成糅合多个开源工具的自动化系统,提高数据库管理员生产力,数据库服务更加高效、稳定可靠,也有利于批量操作和升级,更高效的跨部门合作,提升团队协作效率,无需浪费精力在流程系统或者邮件交流上,轻松完成Ops与Dev、QA部门的交汇处的工作,实现降低开发难度以及运维难度,保障数据库持续、高效、稳定输出服务。

下面结合附图和具体实施例对本发明作进一步描述。

图1为现有技术的人工变更方式的流程图;

图2为现有技术的半自动变更方式的流程图;

图3为本发明具体实施例提供的基于DevOps提升数据库运维效率的系统的结构框图;

图4为本发明具体实施例提供的节点申请单元的结构框图;

图5为本发明具体实施例提供的基于DevOps提升数据库运维效率的系统的功能框架图;

图6为本发明具体实施例提供的基于DevOps提升数据库运维效率的方法的流程图;

图7为本发明具体实施例提供的对实例进行节点监控的流程图;

图8为本发明具体实施例提供的根据节点申请条件内的需要变更的节点以及输入的DDL和DML语句进行语法和语义进行分析的流程图。

为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。

如图3~8所示的具体实施例,本实施例提供的基于DevOps提升数据库运维效率的系统,可以运用在开通数据库服务并自动接入监控以及进行一切日常变更及后续运营操作的过程中,实现降低开发难度以及运维难度,保障数据库持续、高效、稳定输出服务。

DevOps(Development Operations)是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。在传统On-Premise方式下,各部门人员的工作状态常被打断来支撑交汇的工作,这不利于专注于自己的工作,如果将这些操作规范化并封装起来,对Dev、QA提供统一操作接口,完全可以实现自主解决问题。

如图3所示,本实施例提供了基于DevOps提升数据库运维效率的系统,该系统包括:

节点申请单元1,用于供租户申请节点实例;

节点监控单元2,用于采集所述节点申请单元1内的被监控节点的监控数据,写入到MySQL,采用jqPlot图表从MySQL读取监控数据并图形化展示;

DDL审核单元3,用于根据节点申请单元1内选中需要变更的节点以及输入的DDL和DML语句,进行语法和语义的分析,根据分析结果进行反馈,且对所有操作生成flashback语句。

具体的,上述的基于DevOps提升数据库运维效率的系统具体是在利用ansible+python+php,糅合inception、sqladvisor、percona toolkit、jqPlot等开源工具,做到基于MySQL资源池创建与监控的流程化处理,自助式运营,大量节省了流程开支。

根据节点申请单元1获取到的租户申请节点实例的条件,进行节点的调用形成实例,并加入节点监控单元2,倘若条件内囊括了变更节点,则经过DDL审核单元3进行分析,返回变更结果,且将操作生成flashback语句,用于回滚;而节点监控单元2则负责对节点进行获取监控数据,并呈现给租户,提升了研发、数据库管理员效率,保障数据库持续、高效、稳定输出服务。

在某些实施例中,上述的节点申请单元1包括节点详情输入模块11、实例生成模块12以及安装模块13。

节点详情输入模块11,用于供租户输入所申请的所有节点实例信息。

实例生成模块12,用于根据所述节点详情输入模块11输入的信息从MySQL的资源池表中读取符合条件的实例,更改实例状态为部署状态。

安装模块13,用于对租户申请的实例进行安装,并加入至所述节点监控单元2内,更改实例状态为已使用状态。

对于上述节点详情输入模块11,具体包括了基本信息、配置信息以及可用性信息,其中基本信息包括节点名称、所在地域、内外网ip地址端口以及创建时间;配置信息包括版本、CPU/内存/资源使用量等硬件信息;可用性信息包括复制方式以及部署方;可以通过节点详情输入模块11输入是否变更节点或者选择监控节点等,自主选择,系统根据租户的选择进行对应节点实例生成,并反馈相应的结果,实现将Dev、QA、Ops放到同一系统开发中,注重部门汇合处工作的自助完成,提供了一种快速、有效的方式,避免不必要的部门间流程,缩短业务上线时间,并保障了业务的市场竞争力,更适合互联网+时代。

对于上述的实例生成模块12以及安装模块13,主要用于自动申请节点实例的过程中,对租户输入的节点申请条件(即节点实例信息)进行对应节点实例的生成,前提是DB需要事先在MySQL资源池表里边规划好可安装的MySQL节点,以便于根据租户的申请条件随时调用节点并安装,形成节点实例,达到自助式运营,大量节省了流程开支的效果。

对于上述的节点监控单元2,具体是从健康监控、资源监控、键缓存监控、Innodb监控、复制监控以及表空间分析等多方面进行节点实例的监控,其中,健康监控主要是查看当前连接进程、并发数、网络流量、tps、qps;资源监控是监控连接资源、文件资源、表资源的使用率和最大允许值;键缓存监控具体查看当前缓存使用率和命中率;Innodb监控具体是查看innodb的buffer pool、io线程数大小以及增删改查量级;复制监控具体获取当前主从复制的监控状态;表空间分析具体是分析数据库表空间大小。

另外,对于上述的DDL审核单元3,具体是数据库变更统一入口,租户选中需要变更的节点,输入框中提交DDL和DML语句,系统会根据自定义配置规则,内带parser可对其语法和语义进行分析,不符合审核标准的节点实例,直接返回相应的报错信息;对于符合审核标准的节点实例,会直接在选中的线上系统执行,且该变更可审计可溯源;同时,对所有操作生成flashback语句,方便回滚,做到变更可控。在审核变更环节,由于是根据MySQL源码修改,可以对提交的所有语句的语法分析,如果语法有问题,都会将相应的错误信息返回给审核者,还提供语义分析,当一个表、库、列等信息不正确或者不符合审核标准的时候报错,或者使用了一个不存在的对象时报错等等。还提供了很多针对SQL规范性约束的功能,数据库管理员都是可以通过系统参数来配置的,提供只审核不执行功能,租户无需再做线上系统的镜像到测试环境,在执行DML时还根据Binlog得到flashback语句,提供生成回滚语句的功能,准确率得到保障,同时所有操作在线审批后自动调度全部操作可审计、可溯源。

在某些实施例中,上述的系统还包括慢日志汇总单元,用于分析慢SQL语句,并进行反序展现,对于慢SQL自动生成了优化索引建议,租户可直接参考该建议对SQL调试。将数据库管理员从登录数据库服务器权限变更、审核执行、数据变更、慢查询优化等被动局面解放了出来,有更多的时间研究学习、进一步向自动化运维平台更智能化的方向去发展,提高数据库管理员生产力。

在某些实施例中,上述的系统还包括账号管理单元,用于管理租户所创建的连接MySQL的应用账号。账号只允许增删改查,用于程序连接数据库,如有变更需求,则需要从DDL审核单元3进行变更。

在某些实施例中,上述的系统还包括备份管理单元,用于对租户所创建的所有内容进行备份,包括账号内所有信息,起到安全管理的作用。

另外,在某些实施例中,上述的系统还包括错误日志下载单元,用于节点错误日志下载链接,方便租户关注自己节点错误输出。

上述的基于DevOps提升数据库运维效率的系统基于规划好的MySQL资源池,提供低、中、高三种硬件等级配置,具备异步、半同步、强同步多种复制方式选择,为租户提供申请、审核处理,最后生成MySQL数据库节点的可视化操作,同时,租户可根据业务需求,选择单节点或者集分布式云数据库。当节点被创建后,数据库监控、慢日志汇总分析、备份策略自动纳入数据库管理员管理平台,后续99%的数据库操作租户都可通过该系统自助解决。

上述的基于DevOps提升数据库运维效率的系统,通过设置节点申请单元1、节点监控单元2以及DDL审核单元3,对节点实例的自动申请、节点监控以及变更节点的审核从数据库管理员解放出来,形成糅合多个开源工具的自动化系统,提高数据库管理员生产力,数据库服务更加高效、稳定可靠,也有利于批量操作和升级,更高效的跨部门合作,提升团队协作效率,无需浪费精力在流程系统或者邮件交流上,轻松完成Ops与Dev、QA部门的交汇处的工作,实现降低开发难度以及运维难度,保障数据库持续、高效、稳定输出服务。

如图6所示,本实施例还提供了基于DevOps提升数据库运维效率的方法,该方法包括:

S1、在MySQL的资源池表内规划好可安装的节点;

S2、输入节点申请条件;

S3、根据申请条件从MySQL的资源池表调取节点,形成符合条件的实例,将所述实例状态设置为在部署状态;

S4、对所述实例进行安装;

S5、对所述实例加入节点监控内,并将实例状态设置为已使用状态;

S6、对实例进行节点监控;

S7、根据节点申请条件内的需要变更的节点以及输入的DDL和DML语句,进行语法和语义进行分析,根据分析结果进行反馈;

S8、对所有操作生成flashback语句。

对于上述的S1步骤,具体是有数据库管理员先在MySQL数据库的资源池表内规划好可以安装的MySQL节点,以便于后续租户申请节点实例时随时调用。

对于上述的S2步骤,节点申请条件包括基本信息、配置信息以及可用性信息,其中基本信息包括节点名称、所在地域、内外网ip地址端口以及创建时间;配置信息包括版本、CPU/内存/资源使用量等硬件信息;可用性信息包括复制方式以及部署方;可以通过节点详情输入模块11输入是否变更节点或者选择监控节点等,自主选择,系统根据租户的选择进行对应节点实例生成,并反馈相应的结果,实现将Dev、QA、Ops放到同一系统开发中,注重部门汇合处工作的自助完成,提供了一种快速、有效的方式,避免不必要的部门间流程,缩短业务上线时间,并保障了业务的市场竞争力,更适合互联网+时代。

对于上述的S6步骤,对实例进行节点监控的步骤,包括以下具体步骤:

S61、获取实例内被监控节点的监控数据;

S62、将所述监控数据写入MySQL内;

S63、采用jqPlot图表从MySQL读取监控数据并进行图形化展示。

上述的S61步骤至S63步骤,具体是由节点监控单元2进行节点监控;从健康监控、资源监控、键缓存监控、Innodb监控、复制监控以及表空间分析等多方面进行节点实例的监控,其中,健康监控主要是查看当前连接进程、并发数、网络流量、tps、qps;资源监控是监控连接资源、文件资源、表资源的使用率和最大允许值;键缓存监控具体查看当前缓存使用率和命中率;Innodb监控具体是查看innodb的buffer pool、io线程数大小以及增删改查量级;复制监控具体获取当前主从复制的监控状态;表空间分析具体是分析数据库表空间大小。

对于上述的S7步骤,根据节点申请条件内的需要变更的节点以及输入的DDL和DML语句,进行语法和语义进行分析,根据分析结果进行反馈的步骤,包括以下具体步骤:

S71、获取实例内需要变更的节点、DDL和DML语句;

S72、获取自定义配置规则,采用内带语法分析器可对DDL和DML语句进行语法分析以及语义分析;

S73、判断分析结果是否为符合审核标准;

若是,则S74、选择对应节点,执行对应变更,并进入S8步骤;

S75、若不是,则返回报错信息。

上述的S71步骤至S75步骤以及S8步骤,具体通过DDL审核单元3完成,租户选中需要变更的节点,输入框中提交DDL和DML语句,系统会根据自定义配置规则,内带parser可对其语法和语义进行分析,不符合审核标准的节点实例,直接返回相应的报错信息;对于符合审核标准的节点实例,会直接在选中的线上系统执行,且该变更可审计可溯源;同时,对所有操作生成flashback语句,方便回滚,做到变更可控。在审核变更环节,由于是根据MySQL源码修改,可以对提交的所有语句的语法分析,如果语法有问题,都会将相应的错误信息返回给审核者,还提供语义分析,当一个表、库、列等信息不正确或者不符合审核标准的时候报错,或者使用了一个不存在的对象时报错等等。还提供了很多针对SQL规范性约束的功能,数据库管理员都是可以通过系统参数来配置的,提供只审核不执行功能,租户无需再做线上系统的镜像到测试环境,在执行DML时还根据Binlog得到flashback语句,提供生成回滚语句的功能,准确率得到保障,同时所有操作在线审批后自动调度全部操作可审计、可溯源。

上述的基于DevOps提升数据库运维效率的方法,通过基于规划好的MySQL资源池,提供低、中、高三种硬件等级配置,具备异步、半同步、强同步多种复制方式选择,为租户提供申请、审核处理,最后生成MySQL数据库节点的可视化操作,同时,租户可根据业务需求,选择单节点或者集分布式云数据库。当节点被创建后,数据库监控、慢日志汇总分析、备份策略自动纳入数据库管理员管理平台,后续99%的数据库操作租户都可通过该系统自助解决。

上述的基于DevOps提升数据库运维效率的方法,提高数据库管理员生产力,数据库服务更加高效、稳定可靠,也有利于批量操作和升级,更高效的跨部门合作,提升团队协作效率,无需浪费精力在流程系统或者邮件交流上,轻松完成Ops与Dev、QA部门的交汇处的工作,实现降低开发难度以及运维难度,保障数据库持续、高效、稳定输出服务。

上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。

本文发布于:2023-04-13 21:30:26,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/86231.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图