SQL
一站式的 SQL 审核查询平台 - 图1
Archery是一个SQL审核查询平台,其作用在于有效提升DBA的工作效率,并且可以支持多数据库的SQL上线和查询,同时支持丰富的MySQL运维功能,最后还有一点,就是它的所有功能都可以支持通过手机端进行操作。
开源地址:https://github.com/hhyo/Archery
Archery的主要功能包括SQL查询、SQL审核、SQL执行、备份、数据字典、优化、实例管理、日志、账号管理、会话管理、参数管理等等等
一站式的 SQL 审核查询平台 - 图2
并且主要功能对于主流的数据库支持的都还不错:
一站式的 SQL 审核查询平台 - 图3
想使用Archery的话,有以下几个步骤:

部署

下载 Releases文件,解压后进入docker-compose文件夹

  1. #启动
  2. docker-compose -f docker-compose.yml up -d
  3. #表结构初始化
  4. docker exec -ti archery /bin/bash
  5. cd /opt/archery
  6. source /opt/venv4archery/bin/activate
  7. python3 manage.py makemigrations sql
  8. python3 manage.py migrate
  9. #数据初始化
  10. python3 manage.py dbshell<sql/fixtures/auth_group.sql
  11. python3 manage.py dbshell<src/init_sql/mysql_slow_query_review.sql
  12. #创建管理用户
  13. python3 manage.py createsuperuser
  14. #重启服务
  15. docker restart archery
  16. #日志查看和问题排查
  17. docker logs archery -f --tail=10
  18. logs/archery.log

修改配置项

添加实例,实例类型分为主库/从库,实例都需要关联资源组,才能被关联资源组的用户访问,通过支持上线、支持查询的标签来控制实例是否在SQL上线/查询中显示,要使用上线和查询的实例需要关联标签
一站式的 SQL 审核查询平台 - 图4

添加资源组

资源组是一堆资源对象的集合,与用户关联后用来隔离资源访问权限,一般可以按照项目组划分
一站式的 SQL 审核查询平台 - 图5

资源组关联用户/实例

用户必须关联资源组才能访问资源组内的实例资源 - 关联对象管理可以批量关联实例和用户 - 在添加用户和实例的时候也可以批量关联资源组
一站式的 SQL 审核查询平台 - 图6

添加权限

权限组是一堆权限的集合,类似于角色的概念。
一站式的 SQL 审核查询平台 - 图7
对于具体的功能,TJ君稍稍介绍下有关SQL查询、SQL审核、SQL优化的内容。

SQL查询

Archery的在线查询模块适用于简单的SQL查询和日常问题排查,通过工作流控制查询权限的申请和审核,并强制对SQL语句进行改写以限制最大查询数量,同时记录所有的查询日志方便审计。

SQL审核

Archery的审核功能基于不同数据库的支持,目前MySQL支持比较完整的SQL审核功能,且依赖Inception/goInception工具,oracle、mongodb支持部分审核规则,其他数据库仅支持语句切分和执行,不做审核。

SQL优化

使用例如SlowQuery、SQLAdvisor、SQLTuning、SOAR等自动化优化工具。
使用界面清晰易懂:
一站式的 SQL 审核查询平台 - 图8
Archery,还支持各种API接口使用,对于SQL审核方面有需求的小伙伴可以来看看。