一种数据库sql脚本的自动审批执行方法技术

技术编号:24035089 阅读:14 留言:0更新日期:2020-05-07 01:40
本发明专利技术公开了一种数据库sql脚本的自动审批执行方法,涉及前后端编程和数据库技术领域,其采用目前流行的前后端分离的架构设计,前端采用基于vue的前端框架iview‑admin,后端采用golang语言的gin框架,通过jwt做的token认证。本发明专利技术降低DBA人工参与次数,提升效率,降低成本;提高数据库发布的实时性和高效性;实时掌握所有sql的进度,前后端高效通讯;系统部署方便,整个系统没有第三方依赖,可以直接拷贝部署。

An automatic approval execution method of database SQL script

【技术实现步骤摘要】
一种数据库sql脚本的自动审批执行方法
本专利技术涉及前后端编程
,尤其涉及一种数据库sql脚本的自动审批执行方法。
技术介绍
目前一种典型的前后端分离的分布式应用环境的部署是这样的,将全部的服务和中间件以及数据库部署在服务器上,分布式服务之间通过注册到同一个服务注册中心相连,使用共同的消息队列集群,redis集群等中间件,然后通过nginx来做一个负载均衡。如图1所示,基于这种方式部署的环境,由于每个服务只能提供一个版本的服务,所以具有几个显著的特性:用作测试环境时,稳定性低。主要是由几个因素导致,1.代码变更频繁,难免有低质量代码会被合并和发布到测试环境中,导致服务不稳定2.不同需求之间存在冲突,api变更频繁,可能会导致冲突用作线上环境时,不够灵活。不能够灵活的支撑业务需要的A/B版本测试,或者是针对特定用户的beta测试等在业务需要重新部署一套环境的情况下,代价很大,服务和中间件还有环境的配置等都需要重新弄。浪费了大量的人力和计算资源,提高了成本基于上述原因,我们迫切的需要一种能够保障测试环境稳定运行,线上环境能很好的服务用户,同时能够快速部署新环境的解决方案,于是一种用于分布式系统的流量标签路由方法出现了,通过对分布式服务打标签,控制流量按照标签路由来解决我们遇到的分布式服务环境中的问题。
技术实现思路
本专利技术所要解决的技术问题是针对
技术介绍
的问题提供一种数据库sql脚本的自动审批执行方法,其采用目前流行的前后端分离的架构设计,前端采用基于vue的前端框架iview-admin,后端采用golang语言的gin框架,通过jwt做的token认证。本专利技术为解决上述技术问题采用以下技术方案:一种数据库sql脚本的自动审批执行方法,采用前后端分离的架构,前端采用基于vue的前端框架iview-admin,后端采用golang语言的gin框架,通过jwt做的token认证,具体包含如下步骤:步骤1,通过前端提供的页面,将要发布的sql语句信息录入到页面的编辑器中,并调用后端的go提供的接口,做goInceptioin的sql语句检查,保存到数据库中,并得到一个jobid;步骤2,发布的时候,前端通过websocket和后端的go程序通讯,并将要发布的jobid一并传入到go程序的后端程序;步骤3,后端go程序接收到jobid后,从数据库中取出发布单中的sql语句;步骤4,对于gh-ost程序的执行,用go程序的exec包中的cmd对象去执行,然后开启2个go的协程去实时读取out日志和error日志,并通过websocket将日志发送到前端页面;步骤5,对于dml语句,做sql条数的判断:若sql语句的条数在1000条以内,直接调用goInception去执行sql;若sql语句的条数超过1000条,则用go程序去执行sql语句,以1000为单位,每执行1000条以后就commit一次,同时将已经执行的sql语句的条数的条数,通过websocket发送到前端页面中。作为本专利技术一种数据库sql脚本的自动审批执行方法的进一步优选方案,在步骤2中,websocket用于前后端实时通讯的技术,可实时发送执行的信息到前端页面,让执行发布的开发了解工单的执行情况。作为本专利技术一种数据库sql脚本的自动审批执行方法的进一步优选方案,在步骤3中,若发布单中的sql语句是ddl语句,则判断发布单中的sql语句是否为createtable语句,若是createtable语句,则直接调用goInception去执行create语句;若判断sql语句为alter修改表结构,则先检查alter操作的表的数据量,若alter操作的表的数据量在50万以内,则同样用goInception直接去执行该ddl语句;若alter操作的表的数据量大于50万数据,则采用gh-ost工具,去执行ddl语句,并提供从库的延时的判断,确保从库执行没有延时。本专利技术采用以上技术方案与现有技术相比,具有以下技术效果:1、降低DBA人工参与次数,提升效率,降低成本;2、提高数据库发布的实时性和高效性;3、实时掌握所有sql的进度,前后端高效通讯;4、系统部署方便,整个系统没有第三方依赖,可以直接拷贝部署。附图说明图1是本专利技术的软件架构图;图2是本专利技术的流程图。具体实施方式下面结合附图对本专利技术的技术方案做进一步的详细说明:下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。一种数据库sql脚本的自动审批执行方法,采用前后端分离的架构,前端采用基于vue的前端框架iview-admin,后端采用golang语言的gin框架,通过jwt做的token权限认证,具体包含如下步骤:步骤1,通过前端提供的页面,将要发布的sql语句信息录入到页面的编辑器中,并调用后端的go提供的接口,做goInceptioin的sql语句检查,保存到数据库中,并得到一个jobid;步骤2,发布的时候,前端通过websocket和后端的go程序通讯,并将要发布的jobid一并传入到go程序的后端程序;其中,websocket用于前后端实时通讯的技术,可实时发送执行的信息到前端页面,让执行发布的开发了解工单的执行情况步骤3,后端go程序接收到jobid后,从数据库中取出发布单中的sql语句:若发布单中的sql语句是ddl语句,则判断发布单中的sql语句是否为createtable语句,若是createtable语句,则直接调用goInception去执行create语句;若判断sql语句为alter修改表结构,则先检查alter修改表的数据量,若alter操作的表的数据量在50万以内,则同样用goInception直接去执行该ddl语句;若alter操作的表的数据量大于50万数据,则采用gh-ost工具,去执行ddl语句,并提供从库的延时的判断,确保从库执行没有延时;步骤4,对于gh-ost程序的执行,用go程序的exec包中的cmd对象去执行,然后开启2个go的协程去实时读取out日志和error日志,并通过websocket将日志发送到前端页面,让执行sql的开发人员,可以了解大表修改的进度。步骤5,对于dml语句,做sql条数的判断:若sql语句的条数在1000条以内,直接调用goInception去执行sql;若sql语句的条数超过1000条,则用go程序去执行sql语句,以1000为单位,每执行1000条以后就commit一次,同时将已经执行的sql语句的条数的条数,通过websocket发送到前端页面中。本
技本文档来自技高网
...

【技术保护点】
1.一种数据库sql脚本的自动审批执行方法,其特征在于:采用前后端分离的架构,前端采用基于vue的前端框架iview-admin,后端采用golang语言的gin框架,通过jwt做的token认证,具体包含如下步骤:/n步骤1,通过前端提供的页面,将要发布的sql语句信息录入到页面的编辑器中,并调用后端的go提供的接口,做goInceptioin的sql语句检查,保存到数据库中,并得到一个jobid ;/n步骤2,发布的时候,前端通过websocket和后端的go程序通讯,并将要发布的job id一并传入到go程序的后端程序;/n步骤3,后端go程序接收到job id 后,从数据库中取出发布单中的sql语句;/n步骤4,对于gh-ost程序的执行,用go程序的exec包中的cmd对象去执行,然后开启2个go的协程去实时读取out日志和error日志,并通过websocket将日志发送到前端页面;/n步骤5,对于dml语句,做sql条数的判断:若sql语句的条数在1000条以内,直接调用goInception去执行sql;若sql语句的条数超过1000条,则用go程序去执行sql语句,以1000为单位,每执行1000条以后就commit一次,同时将已经执行的sql语句的条数的条数,通过websocket发送到前端页面中。/n...

【技术特征摘要】
1.一种数据库sql脚本的自动审批执行方法,其特征在于:采用前后端分离的架构,前端采用基于vue的前端框架iview-admin,后端采用golang语言的gin框架,通过jwt做的token认证,具体包含如下步骤:
步骤1,通过前端提供的页面,将要发布的sql语句信息录入到页面的编辑器中,并调用后端的go提供的接口,做goInceptioin的sql语句检查,保存到数据库中,并得到一个jobid;
步骤2,发布的时候,前端通过websocket和后端的go程序通讯,并将要发布的jobid一并传入到go程序的后端程序;
步骤3,后端go程序接收到jobid后,从数据库中取出发布单中的sql语句;
步骤4,对于gh-ost程序的执行,用go程序的exec包中的cmd对象去执行,然后开启2个go的协程去实时读取out日志和error日志,并通过websocket将日志发送到前端页面;
步骤5,对于dml语句,做sql条数的判断:若sql语句的条数在1000条以内,直接调用goInception去执行sql;若sql语句的条数超过1000条,则用go程序去执行sql...

【专利技术属性】
技术研发人员:陈旋王冲郝大松王强
申请(专利权)人:江苏艾佳家居用品有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1