作者介绍
梁铭图, 新炬网络首席架构师,十多年数据库运维、数据库设计、数据治理以及系统规划建设经验,拥有Oracle OCM、Togaf企业架构师(鉴定级)、IBM CATE等认证,曾获dbaplus年度MVP以及华为云MVP等荣誉,并参与数据资产管理国家标准的编写工作。在数据库运维管理和架构设计、运维体系规划、数据资产管理方面有深入研究。
一、背景
我们客户现场的Oracle运维团队需要对开发团队提交上来的Oracle数据库 SQL 脚本进行评审。众所周知,这个活儿看起来高大上,实际上单靠人工检查的话,耗时费事、效率低下且机械重复,是很难长期实施的。
根据SRE以软件工程方法解决运维问题的逻辑,我们当然需要使用自动化的工具来解决这个问题。
二、自动化审查
首先,Oracle运维团队将SQL评审经验总结为上百个评审规则,例如:
-
所有新建对象的SQL都需要在对象名的前面加上用户名;
-
创建SEQUENCE的SQL语句,需要指定CACHE值不小于200;
-
delete和update等DML语句,必须带where条件;
-
……
用这些评审规则去 审核 一个个SQL,仍然是非常苦逼的活儿,我们需要一个自动化的工具来实现。为了不重复制造轮子,最好的方法当然是找一个开源的工具进行二次开发,经过团队讨论和反复验证后,最终采用了开源的SOAR进行二次开发实现。
SOAR工具原来是基于 MySQL 数据库进行开发的,可客户现场SQL检查是基于Oracle的SQL脚本。尽管Oracle和MySQL在语法上有明显的差别,但上述的分析框架和逻辑是可以重用的,我们主要是通过屏蔽SOAR自带的SQL检查规则,通过添加自定义规则实现。
1、SOAR组成
SOAR,即SQL Optimizer And Rewriter,是一款SQL智能优化与改写工具,由小米运维DBA团队出品。SOAR主要由语法解析器、集成环境、优化建议、重写逻辑、工具集五大模块组成。
2、与其他工具对比
3、功能特性
-
跨平台支持(支持 Linux 、Mac环境,Windows环境理论上也支持,不过未全面测试);
-
支持基于启发式算法的语句优化;
-
支持复杂查询的多列索引优化(UPDATE, INSERT, DELETE, SELECT);
-
支持EXPLAIN信息丰富解读;
-
支持SQL指纹、压缩和美化;
-
支持同一张表多条ALTER请求合并;
-
支持自定义规则的SQL改写。
三、工具框架安装
操作系统版本:CentOS 7.2。
1、安装 Go 环境
这里使用二进制包来安装,下载二进制安装包:
$ wget https://dl.google.com/go/go1.10.2.linux-amd64.tar.gz
$ tar zxvf go1.10.2.linux-amd64.tar.gz
配置环境变量:
#go的安装目录
export GOROOT=解压的go的目录
export GOPATH=解压的go的目录
export PATH=$PATH:$GOROOT/bin
查看Go版本:
2、安装Git客户端
使用具有安装权限的用户执行以下命令:
$ yum -y install git
查看Git客户端版本:
3、下载SOAR源码并编译
新建workspace目录:
$ mkdir workspace
$ cd workspace
下载SOAR源码并编译:
$ go get -d github.com/XiaoMi/soar
$ cd ${GOPATH}/src/github.com/XiaoMi/soar && make
安装验证:
$ cd ${GOPATH}/bin
$ echo 'select * from film' | ./soar
四、规则开发
1、下载goland IDE
https://www.jetbrains.com/go/
2、打开下载的soar源代码工程
$ git clone https://github.com/XiaoMi/soar.git
3、基于SOAR的启发式检查规则进行二次开发,主要增加规则代码:
并在配置文件中屏蔽SOAR自带默认检查规则:
将SOAR可执行文件以及soar.yaml放到需要执行的目录soar_path:
$ cd $soar_path
$./soar -config ./soar.yaml -query 待评审和检查的文件绝对路径
五、图形化界面
我们还针对SOAR提供的web图形化界面的小工具,进行了定制改造。让这款小工具可以进一步开放给开发团队的同事使用。大致步骤如下:
1、安装Python
$ yum install python36 python 36-pip
$ pip install Flask
$ pip install pymysql
$ pip install pycryptodome
若Crypto模块找不到, 则需要在Python的依赖库目录Lib\site-packages中将crypto重命名为Crypto。
2、下载soar-web并启动
$ wget https://codeload.github.com/xiyangxixian/soar-web/zip/master -O soar-web-master.zip
$ unzip soar-web.zip
$ cd soar-web-matster
将上述二次开发的SOAR执行文件以及soar.yaml文件上传到指定目录下:
并修改core/common.py文件:
最终开放给开发团队效果如下图:
六、小结
至此,这个Oracle SQL审核的小工具就开发完成了。通过一些简易的配置和开发实现90% Oracle SQL的自动化审核,极大简化了现场DBA的工作量。当然,还可以实现更多种类数据库的支持,留待更多DBA同仁去探索一番。
随着数字化转型与云化从互联网行业渗透到了各个传统行业 ,运维迎来了新的契机,想破解运维转型困局,让 Gdevops全球敏捷运维峰会北京站 给你新思路:
-
《建设敏捷型消费金融中台及云原生下的DevOps实践》 中邮消费金融总经理助理 李远鑫
-
《浙江移动AIOps实践》 浙江移动云计算中心NOC及AIOps负责人 潘宇虹
-
《云时代下,传统行业的运维转型,如何破局?》 新炬网络运维产品部总经理 宋辉
-
《数据智能时代: 构建能力开放的运营商大数据DataOps体系》 中国联通大数据基础平台负责人/资深架构师 尹正军
-
《银行日志监控系统优化手记》 中国银行DevOps负责人 付大亮 & 中国银行高级软件工程师 李晓宁
-
《民生银行智能运维平台实践之路》 民生银行智能运维平台负责人/应用运维专家 张舒伟
-
《腾讯新闻DevOps实践》 腾讯客户端高级开发工程师 褚佳义
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Yearning v1.1.2 更新,SQL 审核自动化平台
- Yearning 1.0.0 正式版更新,SQL 审核自动化平台
- 【本人秃顶程序员】使用Azure Function + Cognitive Services 实现图片自动化审核
- sf提问的审核机制漏洞
- 利用SACL审核文件操作思路分享
- iOS使用fastlane一键打包审核
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。