在现代的软件工程开发中,数据库和 SQL 语言的重要性毋庸置疑。一条高质量的 SQL 语句能使整个服务加速好几倍,而一条有问题的 SQL 则可能会引发灾难,造成严重后果,因此,数据库管理人员的工作就十分重要了,他们掌握着千百万数据的命运。然而,要在技术团队内部进行有效的 SQL 管理并不容易,如何进行数据库的统一管理,和线上 SQL 操作的统一审核,变得尤为重要。Archery,这个开源的 SQL 审核查询平台,或许能为 SQL 审核工作带来不小的效率提升。




SQL management2012启用C2审核跟踪在哪里 开源sql审核_数据库

SQL审核平台



简介

Archery,是 hhyo 在 Github 上开源的 SQL 审核查询平台,项目位于 https://github.com/hhyo/Archery,同时也在 Gitee 上开源,位于 https://gitee.com/rtttte/Archery,目前版本为 v1.7.13。Archery 旨在提升 DBA 的工作效率,支持主流数据库的 SQL 上线和查询,同时支持丰富的 MySQL 运维功能。Archery 依托其他优秀的 SQL 审核开源项目,整合成为统一后台,提供了包括 SQL 审核、SQL 上线申请、在线 SQL 查询、SQL 优化建议、慢查询日志、数据库实例管理等,功能丰富而全面,是进行 SQL 审核和数据库管理的优秀工具。




SQL management2012启用C2审核跟踪在哪里 开源sql审核_查看前端对应的sql脚本_02

Archery Github项目



安装

Archery 后端使用 Python 框架 Django 开发,后台前端使用 Bootstrap + jQuery 实现。推荐使用 Docker 进行部署,下载项目源码后,进入到 docker-compose 文件夹,构建并启动容器:

docker-compose -f docker-compose.yml up -d

容器启动后,运行脚本,初始化数据库,创建表:

docker exec -ti archery /bin/bashcd /opt/archerysource /opt/venv4archery/bin/activatepython3 manage.py makemigrations sql  python3 manage.py migrate

然后进行数据的初始化:

python3 manage.py dbshell

并创建管理账号:

python3 manage.py createsuperuser

完成初始化配置后,重启服务:

docker restart archery

此时,Archery 后台已经运行在 http://127.0.0.1:9123/,可以进行后续网络配置,并使用浏览器访问。也可以选择进行手动安装,安装包括 Python、MySQL 和 Redis 等环境,并安装项目依赖,进行配置,然后启动服务,可以参考项目内的 Dockerfile。




SQL management2012启用C2审核跟踪在哪里 开源sql审核_数据库_03

Archery文档



示例

Archery 主要支持 MySQL,同时也对其他主流数据库提供了在线查询和执行的功能,功能清单如下:




SQL management2012启用C2审核跟踪在哪里 开源sql审核_数据库_04

功能清单



启动 Archery 服务后,登录后台,主页是平台仪表盘:




SQL management2012启用C2审核跟踪在哪里 开源sql审核_数据库_05

仪表盘



可以看到,仪表盘提供了 SQL 上线工单数量、SQL 查询工单数量的基本数据,并提供了 SQL 查询统计趋势图、SQL 上线数量柱状图、SQL 上线统计饼图等图表,方便 DBA 对于平台的使用情况有直观的了解。

Archery 提供了 SQL 审核功能,开发人员需要提交上线单,对于需要上线的 SQL,提供需求描述、所在人员组别、主机实例、数据库等,以及具体的 SQL 语句,然后提交审核。




SQL management2012启用C2审核跟踪在哪里 开源sql审核_查看前端对应的sql脚本_06

上线单提交



Archery 提供了对于上线单的管理,提供了工单的基本信息和当前状态,以及操作日志等:




SQL management2012启用C2审核跟踪在哪里 开源sql审核_SQL_07

上线管理



点击单个工单,可以查看详细信息,包括每句 SQL 的具体内容、审核和执行的状态、操作会影响的行数、执行耗时等,可以使用系统的自动审查功能,对提供的上线单进行自动审核,驳回有问题的工单,也可以是 DBA 进行人工审核,手动完成审批上线流程。




SQL management2012启用C2审核跟踪在哪里 开源sql审核_查看前端对应的sql脚本_08

上线单详细信息



Archery 提供了在线 SQL 查询,为放置在不同实例的不同数据库提供了统一的查询界面,可以通过权限配置限制可以访问到数据库,支持 SQL 美化和执行计划,并对每次查询都进行了记录,提供了包括返回行数和耗时等数据,方便复查。




SQL management2012启用C2审核跟踪在哪里 开源sql审核_数据库_09

在线SQL查询



Archery 还提供了在线的 SQL 优化工具,通过整合包括:SQLAdvisor、SOAR、MySQLTuning 和 SQL Tuning Advisor 等 SQL 优化和建议工具,实现自动化的 SQL 语句优化,使得开发人员可以获得修改建议,提高 SQL 语句质量,提升查询效率。




SQL management2012启用C2审核跟踪在哪里 开源sql审核_数据库_10

SQL优化



根据选择的数据库的类型的不同,可以选择对应的优化工具,并可以选择是否查看优化过程。点击 获取优化建议 后,就能得到 SQL 优化建议:




SQL management2012启用C2审核跟踪在哪里 开源sql审核_数据库_11

优化建议



Archery 还提供了慢查询日志功能,可以十分方便地列出数据库中执行时间较长的查询记录,方便数据库管理人员进行排查,并进行后续的进一步优化。




SQL management2012启用C2审核跟踪在哪里 开源sql审核_数据库管理_12

慢查询日志



同时,Archery 还是一个十分方便的数据库管理工具,可以对于数据库实例的统一管理,可以实时添加新的实例。还可对数据库账号、单个数据库和会话进行详尽的管理,方便维护。




SQL management2012启用C2审核跟踪在哪里 开源sql审核_数据库管理_13

数据库实例管理



另外,Archery 还提供了高级工具,包括 PTArchiver 归档、Binlog 解析、SchemaSync 同步复制等。




SQL management2012启用C2审核跟踪在哪里 开源sql审核_查看前端对应的sql脚本_14

Binlog2SQL工具



作为一个管理后台,Archery 也提供了包括资源组管理、用户管理、权限组管理等用户和权限系统,方便进行开发团队人员的管理。

总结

Archery 作为一个 SQL 审核查询平台,提供了包括 SQL 上线审核、在线查询、在线优化、实例管理等功能,涵盖了 DBA 日常工作的基本功能需求,提高了数据库管理的效率,增强了对于 SQL 操作的管理,提升了 SQL 语句质量,摆脱了命令行工具,整合了优秀的开源 SQL 工具,为多数据库实例提供了统一的管理平台,是数据库管理的优秀工具,值得使用和参考。




SQL management2012启用C2审核跟踪在哪里 开源sql审核_数据库管理_15

SQL审核平台