SQL
Archery是一个SQL审核查询平台,其作用在于有效提升DBA的工作效率,并且可以支持多数据库的SQL上线和查询,同时支持丰富的MySQL运维功能,最后还有一点,就是它的所有功能都可以支持通过手机端进行操作。
开源地址:https://github.com/hhyo/Archery
Archery的主要功能包括SQL查询、SQL审核、SQL执行、备份、数据字典、优化、实例管理、日志、账号管理、会话管理、参数管理等等等
并且主要功能对于主流的数据库支持的都还不错:
想使用Archery的话,有以下几个步骤:
部署
下载 Releases文件,解压后进入docker-compose文件夹
#启动
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
修改配置项
添加实例,实例类型分为主库/从库,实例都需要关联资源组,才能被关联资源组的用户访问,通过支持上线、支持查询的标签来控制实例是否在SQL上线/查询中显示,要使用上线和查询的实例需要关联标签
添加资源组
资源组是一堆资源对象的集合,与用户关联后用来隔离资源访问权限,一般可以按照项目组划分
资源组关联用户/实例
用户必须关联资源组才能访问资源组内的实例资源 - 关联对象管理可以批量关联实例和用户 - 在添加用户和实例的时候也可以批量关联资源组
添加权限
权限组是一堆权限的集合,类似于角色的概念。
对于具体的功能,TJ君稍稍介绍下有关SQL查询、SQL审核、SQL优化的内容。
SQL查询
Archery的在线查询模块适用于简单的SQL查询和日常问题排查,通过工作流控制查询权限的申请和审核,并强制对SQL语句进行改写以限制最大查询数量,同时记录所有的查询日志方便审计。
SQL审核
Archery的审核功能基于不同数据库的支持,目前MySQL支持比较完整的SQL审核功能,且依赖Inception/goInception工具,oracle、mongodb支持部分审核规则,其他数据库仅支持语句切分和执行,不做审核。
SQL优化
使用例如SlowQuery、SQLAdvisor、SQLTuning、SOAR等自动化优化工具。
使用界面清晰易懂:
Archery,还支持各种API接口使用,对于SQL审核方面有需求的小伙伴可以来看看。