为什么我们需要一个 SQL 数据库审核平台
点击蓝色“有关SQL”关注我哟
加个“星标”,天天与10000人一起快乐成长
图 | Lenis
2018年6月4日,链家 40岁程序员删库,公司斥资 18万恢复系统;
2020年2月24日,微盟程序员删库跑路,次日股价下跌 21.5亿人民币;
这些安全事故,暴露出大部分公司的隐患,缺少一个完善的数据库审核平台。数据库所有的操作,都应该有其审核规则,来确保不会造成灾难性的事情发生。
比如删库,一旦审核平台接到 Drop Database 的命令,就立马出发邮件到主管,申请批复,并暂时性停止执行,直到收到回复批准。
本文探索数据库审核平台的功能和实现。参考书目还是《数据库高效优化:架构、规范与SQL优化》
再举个例子,来说明下审核平台提供的功能。
比如,有 CRM 用户反映,平时 1,2秒就能打开的客户利润报表,现在需要 20 秒了。经过前端组的排查,确定是数据库的 SQL 返回结果慢了,请求 DBA 调优。
DBA 于是在审核平台,建了这么条规则:抓取运行时间超过 20 秒的所有 SQL 和存储过程,包括详细的 SQL 文本,索引使用和执行计划。
等待一段时间,平台就会把这些超长的 SQL 抓取出来,DBA 筛选下,就能定位到问题。
数据库审核平台的功能,到此就很清晰了,提出问题,设定规则,抓取问题SQL.
有同学会疑惑,这不就是问题排查嘛,造一个平台来解决,是不是大材小用?用短小精悍的脚本,不香嘛?
当然不是!我用 3 个节拍说服你
SQL开发的苦恼
SQL 开发小哥哥和小姐姐,平时被业务开发掏空。考勤,OA,HR,生产制造系统,ERP,进销存,仓储等 MIS 系统,通常三四条线,同时开工,占据绝大部分时间与精力。
忙起来,上午写的SQL,下午都能忘记逻辑。好不容易闲下来,除了开黑,看剧,社交,解解乏,根本没有时间再投入系统学数据库。
长期以往,遇到某张大表,SQL性能直线下降时,他们将束手无策。当靠经验,加索引,改写SQL均无效时,他们只能求助于DBA。
DBA的无奈
业务越丰富,头疼的当然不止开发,还有DBA. 成熟的企业,往往使用四,五种不同架构的数据库,十多套不同厂商的商业数据库。比如Oracle, SQL Server, DB2,MongoDB, ElasticSearch 等等。
安装,调试,建库建表建索引,建高可用集群,这些琐事,已经让 DBA 应接不暇。据我所知,传统行业还不配备专职 DBA,他们往往兼顾一些报表开发,ETL设计和建模。
于是,他们的命运,也就剩下疲于奔命,现场救火。此时与开发并无不同,没有紧急的工单,有问题的SQL调优,就被安排到了猴年马月。
上帝欲让人疯狂,先使人疯忙。
数据增值小分队
近十年,云计算不断介入后端。越来越多的机械性管理工作,被云统一筹划和部署。使得更多的精力与时间可以投入数据资产的管理,比如数据治理,数据质量和数据安全。
云之前,DBA 团队面临的情况:出了系统性能故障, DBA 的锅;出了数据库连接超时,DBA的锅;甚至数据质量问题,都是DBA的锅。但是一旦业务猛增的时候呢,嗯,各种领奖,嘉奖,都是前端业务系统的。
当 DBA 团队不能成为资产时,就会沦为成本。成本,是要被剔除的。因此,数据增值分队应运而生!
让上帝的归上帝,凯撒的归凯撒
SQL 开发会渐渐与前端框架融合,探索和保障业务系统顺利展开。DBA 分队,提供信息架构的基础建设,保障存储的安全,计算的稳定。在企业上云或数据库自治后,让大量基础 DBA 人员转型到数据增值团队来,负责数据治理,数据分析和数据安全等领域。
以上三点,就是我们需要数据库审核平台的理由了, 它帮数据团队,把服务做到量化,可视化、规模化和利润化。
数据库审核平台实践
那么,我们怎么做一个数据库审核平台呢?
购买软件,还是自研?购买的软件能帮我们解决所有的问题吗,这些数据带来的问题,有通用的模式,可以用统一模型来解决吗?
回答这个问题前,让我们先取个经,看下别人的成果。
一梯队,BAT等互联网一线大厂。它们的方案,完全自研SQL引擎。实现 SQL 执行成本分析,自动审核,访问分流等。
与大厂提前自动审核不同,大多数没有自研SQL引擎能力的中厂,选择半自动方式,做到事后审核。方法是收集数据库各项指标数据,引入人工判断,做好审核。
针对完全没有研发能力的小厂,那么只能依靠购买商用的软件产品,再辅以人工处理。缺点就太明显,价格高,而且扩展性不高。
普通的团队怎么办呢,保二争一。自研适合大部分团队。
用 2 张图来表达,第一张是架构图,第二张是操作流程图:
平时开发中,经常遇到这些异常:
上一秒运行正常的SQL,这一秒抛出了日志文件空间不足,执行失败
平常运行秒出的SQL,今天偶然特别慢,就像人睡觉睡的好好的,突然抽了一两下,原因未知
平静的出奇的某天下午,突然有同事大叫一声,谁XX把我的报表进程给杀了
一天中的某段时间,数据库就像僵住了一样,无论运行什么都很慢
系统中总有几张表,涉及到他们的查询,就非常慢
每天都要手工清理一些表、索引或视图等数据库对象,没有时间和精力投入数据建模,数据治理
这些常见问题,归纳为两类:
数据库对象
SQL 审核
也就是图中的 SQL 管理和 DB Object 管理。数据库审核平台主要做这两类。
回顾开头的原理图,数据团队要做的事情,无非就是:
定义问题
规则设计
编码实现
如果大家有兴趣,可以参考宜信团队开源的 CreditEaseDBA Themis 数据库审核平台,在此基础上,加入自研的功能。他们的产品地址是:
https://github.com/CreditEaseDBA/Themis
再次申明,本文灵感来自《数据库高效优化:架构、规范与SQL优化》,摘录部分观点和示意图*。
--完--
往期精彩:
本号精华合集(三)
如何写好 5000 行的 SQL 代码
如何提高阅读 SQL 源代码的快感
我在面试数据库工程师候选人时,常问的一些题
零基础 SQL 数据库小白,从入门到精通的学习路线与书单
为什么我们需要一个 SQL 数据库审核平台相关推荐
- 摆脱“人肉”审核,从0搭建可视化SQL自动审核平台
作为DBA,你们还在人工审核SQL语句吗?程序员人工审核吃力,审核标准越多,有效落实越来越困难,效率不高.随着业务量的上升,人肉式的SQL审核一直是广大DBA的烦恼.今天就同大家分享一个SQL自动审核 ...
- sql删除语句_推荐强大开源的数据库SQL语句审核平台,再也不用担心删除跑路了!...
删除数据库跑路,本来是一个调侃的话语,但是前段时间在互联网圈子真的发生过,震动整个圈子,为了避免此类悲剧再次发生,现推荐一个强大的开源SQL语句管理平台,具体的功能如下: 用户模块 1.Dashboa ...
- docker安装Yearning MYSQL SQL语句审核平台
主要功能 SQL查询 查询导出 查询自动补全 SQL审核 流程化工单 SQL语句检测 SQL语句执行 SQL回滚 SQL自动审核执行 历史审核记录 查询审计 推送 E-mail工单推送 自定义webh ...
- Archery 系统配置 SQL优化审核平台配置【详解】
官方文档 https://archerydms.com/configuration/ 系统配置 1.goinception配置 对MySQL进行审核和执行 GO_INCEPTION_HOST:连接地址 ...
- 开源mysql web平台_Yearning Mysql–Web端SQL审核平台
介绍 Yearning MYSQL 是一个SQL语句审核平台.提供查询审计,SQL审核等多种功能,支持Mysql,可以在一定程度上解决运维与开发之间的那一环,功能丰富,代码开源,安装部署容易! 开源地 ...
- mysql inception web_基于Inception搭建MySQL SQL审核平台Yearing
Inception 1. Inceptionj简介 Inception是一款针对MySQL的SQL语句审核自动化运维工具.使用Inception,将会给DBA带来更大的便利性,将DBA从繁冗的工作中解 ...
- 使用Yearning部署一个工单化SQL语句检测平台
* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 1. 引入 2. 环境准备 2.1 通过yum安装Docker 2.2 安装数据源 2.3 安装部署Yearning ...
- Yearning 开源SQL审核平台安装使用
一.Yearning简介 Yearning 是MYSQL SQL语句审核平台.提供查询审计,SQL审核等多种功能. Yearning 1.x版本需inception提供SQL审核及回滚功能. Ye ...
- apexsql使用方法_使用ApexSQL审核执行SQL Server审核
apexsql使用方法 This is the last article, but not least, in the SQL Server Audit series. In this series ...
最新文章
- 借助阿里云数加,小小的美甲行业被美甲帮玩出了天价。
- 使用Epoll 能监听普通文件吗?
- 报名 | 2019清华大数据系统软件峰会
- python列表切片图解_Python列表切片操作实例总结
- gitlab重置root密码
- 技术实践丨手把手教你使用MQTT方式对接华为IoT平台
- 在 vCenter Server 中触发了 vSphere Distributed Switch 绑定警报 (2057667)
- 在VMware中的Ubuntu虚拟机安装open-vm-tools调整屏幕可以复制粘贴
- android按任意建关闭对话框,Android: 创建一个AlertDialog对话框,必须按确定或取消按钮才能关闭对话框,禁止按[返回键]或[搜索键]关闭...
- OAuth1.0a的使用例(RFC5849 1.2节的中文翻译)
- 我写的这些opensource项目
- Redis下载安装-Windows版本
- iPhone 屏幕适配尺寸整理
- 单位根检验urdf_怎样分析单位根检验结果
- survival cutoff值
- 在探索中感悟,在摸索中前进--ET之快递法
- python中线条颜色_python – 在pandas中指定线条颜色
- 星期几—YYYY-MM-DD,表示一个日期,你知道是星期几吗?
- 冒泡排序和纯指针的冒泡排序
- 共享汽车充电桩方案开发详解
热门文章
- 《学习记录》“Python”输入月份,输出天数
- 全景效果实现(Photo Sphere,photo-sphere-viewer全景虚拟漫游)
- Hadoop下载安装(ubantu20.04)
- C51单片机-共阳极数码管循环显示数字0至9,共阴极数码管循环显示5201314(动态)
- php怎么弄钓鱼,如何使用PHP和JS实现模仿登录钓鱼
- 古溪镇为民工作室 ‖“让青春飞扬”成长小组之“校园欺凌和暴力预防”
- 怎么把apk文件安装到android模拟器上
- mybatis级联查询(主子查询)
- mysql实现文章上一篇下一篇的sql语句
- [爬虫]python爬取B站日榜100名up主及其视频信息