Archery SQL审核平台调研
官网
常见问题FAQ
goinception官网 goinception负责sql审核校验,通常默认规范太强了,可以去官网查看根据实际需求调整
前言
价值
目前存在的问题
我司目前的现状对线上数据库管理较为分散,对数据库操作大部分情况都是研发人员直接连库操作,当出现SQL问题、误操作等难以定位及追溯问题。
如何解决问题
俗话说“无规矩不成方圆”。数据是我们公司的立足之本,成事之基。要想在竞争激烈的市场中占据一席之地,对重要数据查询的严格把关、SQL优化建议、完善的SQL操作审核能力不可或缺。
使用统一的数据库管理平台是再适合不过。针对当前管理的痛点,从成本和实用的角度出发,开源Archery SQL审核查询平台能够满足我们当前的需求,而针对特定的场景也可以进行二次开发。
平台能解决什么问题
ArcherySQL审核查询平台(以下简称"平台")
安全性:平台提供细粒度的权限控制,便于进行多视角的权限管理,增加数据库管理的安全性。
规范性:平台提供相对灵活和完善的SQL审计流程(如Developer→Manager→ DBA),便于规范整个SQL上线流程,使得所有重要操作有迹可循(DDL/DML/DQL)。
效率:通过平台提供的诸如在线查询、数据字典功能及三方工具,有助于提升研发人员和DBA的整体工作效率和便利性。
质量:通过平台提供的SQL优化建议可以预防质量较差的SQL执行,有助于研发人员交付高质量SQL。
管理员操作指引
管理员配置流程
添加实例
关联资源组
实例标签(页面展示)
上线
查询
添加资源组
(可选配置webhook通知,钉钉、企业微信、邮件、飞书)
关联用户到组/单独赋权/资源组
(可选配置webhook通知)目前可以在用户中选择资源组,无法通过组直接关联
系统管理
系统设置
工单审批流配置()
sql上线
查询
数据归档
审批流程这里需要注意下,如图,PM→DBA 这里PM是下一任审批人,假设QA需要提交流程,不需要把QA组的人写里面
SQL审核
SQL查询
SQL优化
慢日志管理
基于PT收集慢日志,需要单独部署
SQL语句优化
基于SQLAdvisor|SOAR|SQLTuning的全方位优化建议
实例管理
会话管理
支持查看和批量终止会话
支持查看事物、锁信息
数据库管理
管理实例数据库,支持添加
账号管理
管理实例账号,支持增加、授权、删除(不支持修改和减少,目前只能删除重建或者操作数据库修改权限)
参数配置
可修改实例动态参数并记录修改历史
工具插件
PTArchiver(数据归档,注意不是数据迁移 若归档到远程需要远程表结构相同)
支持使用pt-archiver归档MySQL数据,支持直接添加配置和由用户申请归档
若归档模式是file,则存储在服务器 /data/Archery/src/docker-compose/archery/downloads/archiver 目录下
Binlog2SQL(binlog转sql)
将Binlog2SQL模块可视化,从MySQL binlog解析出你要的SQL
若勾选 “是否保存到文件(异步操作)”,则存储在服务器 /data/Archery/src/docker-compose/archery/downloads/binlog2sql 目录下
SchemaSync(两个数据库Schema对比)
对比不同数据库的Schema信息,输出修改语句和回滚语句,SchemaSync不仅限于表结构,它可以处理的对象还有:视图、事件、存储过程、函数、触发器、外键
数据存储在服务器 /data/Archery/src/docker-compose/archery/downloads/schemasync 目录下
如:源库中表workflow_log与目标库中workflow_log表字段等信息相同,则对比结果不会列出此表,只会将差异的表在PATCHSQL(补丁sql)中列出来。同时生成REVERTSQL(恢复sql)。
选择MySQL实例后默认过滤以下数据库
information_schema
performance_schema
mysql
test
sys
用户操作指引
1、Archery目前可以通过ldap账号登陆,登陆后属于shared资源组的数据库支持自助SQL查询和SQL上线。
2、有DDL和DML操作需要提交请按照如下操作
选择对应信息,进行SQL检测(会先执行explain),再点击SQL提交按钮,进入审批流转阶段
3、SQL查询
在线查询可直接执行SQL查询功能
数据字典可以直观查看表的相关信息
4、SQL优化
可以在页面上进行DQL查询语句的优化,平台提供相应优化建议
5、工具插件–PTArchiver
提交申请进行数据归档暂时由DBA审核(数据归档,注意不是数据迁移 可选归档到文件或者远程实例,若归档到远程实例需要远程表结构相同,可通过数据字典查询建表语句)