SQL审核

Archey更全面,支持多种类数据库,但是使用过程中建表语句未能通过提交SQL审核,略有不足

Yearning只支持mysql数据库 功能相对比较全面,但不支持其它数据库.

Archery

Archery是archer的分支项目,定位于SQL审核查询平台,旨在提升DBA的工作效率,支持多数据库的SQL上线和查询,同时支持丰富的MySQL运维功能,所有功能都兼容手机端操作

相关文档可查看https://archerydms.com/

功能清单

查询 审核 执行 备份 数据字典 慢日志 会话管理 账号管理 参数管理 数据归档
MySQL
MsSQL × × × × × × × ×
Redis × × × × × × × ×
PgSQL × × × × × × × ×
Oracle × ✔️ × × × × × ×
MongoDB × × × × × × ×

下载文件

1
https://github.com/hhyo/archery/releases/

解压Archery-1.8.1.zip,进入src/docker-compose

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#启动
docker-compose -f docker-compose.yml up -d

#表结构初始化
docker exec -ti archery /bin/bash
cd /opt/archery
source /opt/venv4archery/bin/activate
python3 manage.py makemigrations sql
python3 manage.py migrate

#数据初始化
python3 manage.py dbshell<sql/fixtures/auth_group.sql
python3 manage.py dbshell<src/init_sql/mysql_slow_query_review.sql

#创建管理用户
python3 manage.py createsuperuser

#重启服务
docker restart archery

#日志查看和问题排查
docker logs archery -f --tail=10
logs/archery.log

访问

1
http://127.0.0.1:9123/

管理后台

SQL工单
实例标签
资源组

配置钉钉webhook地址

DBA持有所有权限,研发持有各菜单权限+提交查看工单等权限,不给予删除等权限

添加实例数据库

配置用对应数据库类型和账号密码

绑定对应的资源组和实例标签

工作流审批列表
工作流日志
SQL查询日志
用户管理

配置用户权限

SQL上线

提交要上线的脚本

支持10M内SQL文件导入,上线单名称(必填),选择对应的资源组,对应的数据库,对应的表,sql提交前需要进行一次SQL检测,检测通过后才能进行SQL提交

SQL检测不通过的情况,数据库中没有id为3的数据,直接进行更新name会进行报错,并提示

审核状态:error,warning,pass,当审核状态处于error时执行会有错误,当审核状态为warning时,适当时情况而定是否继续提交,审核状态为pass时,通过sql检测

提交后可看到工单状态,审核流程有谁审批,工单的审批日志和提交的完整SQL内容,也可改为定时执行和终止流程

工单执行完成后可看到工单状态是否执行完毕,影响行数,执行耗时,自动生成的回滚SQL

查看回滚SQL,也可直接提交回滚请求

提交人可直接在SQL上线中查看操作日志

可根据工单状态,数据库实例,资源组进行过滤提交的工单,也可进行导出当前页面中的表格数据

SQL查询

在线查询

查询历史,表结构,执行结果,返回行数,导出数据

数据字典

可查看导出数据库实例对应的数据字典(该功能仅支持mysql)

权限管理

开发可申请该账号看不到的表或库权限

SQL优化

SQL优化建议

可通过三种工具进行SQL语句分析进行提供优化建议(该功能仅支持mysql)

慢日志查询

实例管理

实例列表

测试:可进行对数据库进行测试连接

Binlog清理:可以对Mysql进行binlog清理

点击蓝色实例名称,可进行编辑

回话管理

可查看和终止连接的进程状态,TOP表空间和事务信息,锁信息

账号管理

创建,编辑,授权,改密,删除账号(该功能仅支持mysql)

系统管理

配置项管理

配置SQLAdvisor和钉钉机器人通知

配置工单审批流配置

资源组管理

配置对应环境的资源组,关联用户和实例数据库与资源组绑定

Yearning

官方文档:https://guide.yearning.io/install.html

首先安装myql5.7,可参考mysql文档进行安装

安装

创建Yearning数据库并指定字符集

1
create database Yearning default character set utf8mb4;

下载地址:https://github.com/cookieY/Yearning/releases/

下载

1
wget https://github.com/cookieY/Yearning/releases/download/v2.2.0/Yearning-2.2.0.linux-amd64.zip

解压

1
tar zxvf Yearning-2.2.0.linux-amd64.zip

修改配置文件

1
2
3
4
5
6
7
8
9
10
vi conf.toml
[Mysql]
Db = "Yearning"
Host = "127.0.0.1"
Port = "3306"
Password = "xxxx"
User = "root"

[General] #数据库加解密key,只可更改一次。
SecretKey = "dbcjqheupqjsuwsm"

初始化数据结构

1
./Yearning -m

默认启动

1
./Yearning -s

参数启动

1
./Yearning -s -b "172.27.80.35" -p "8000"

打开浏览器 http://127.0.0.1:8000

默认密码:admin/Yearning_admin

Yearning 执行成功后显示回滚语句 需要mysql开启binlog,请查看mysql文档开启binlog

Yearning管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
用户有三个权限:guest,admin,perform.
使用者:普通权限,可提交工单进行查询和修改,没有修改权限
管理员:审核人,可提交工单进行查询和修改,有审批权限但无修改权限
执行人:可提交工单进行查询和修改,有审批权限有修改权限
一般设置开发为使用者,组长为管理员,执行人为DBA或运维
数据库按规范填写即可

权限组
开发组权限组,允许DDL,DML,数据查询,上级审核人选择开发组长(对应管理员权限),关闭用户管理权限和数据库管理权限
开发组长权限组,允许DDL,DML,数据查询,上级审核人选择DBA或运维(对应执行人权限),关闭用户管理权限和数据库管理权限
执行人权限组,允许DDL,DML,数据查询,上级审核人选择admin(对应超级管理员权限),允许用户管理权限和数据库管理权限

用户权限,配置用户归属所在权限组即可

设置
Yearning支持webhook和邮件推送消息
可配置钉钉机器人的api或邮箱

进阶设置
自定义环境可更改默认的环境名,用来区分prod和dev
开启多级审核,开启注册 保存

审核规则
可定义sql语句的规范 按照实际情况而定