Archery是一个开源的数据库审核平台,在日常数据库操作中,可以对操作进行审核。
官网:
https://gitee.com/rtttte/Archery
目前有业务使用需求,先用docker-compose部署,后期考虑配置到k8s上。目前最新版本是v1.11.3
参考文档 https://archerydms.com/installation/docker/ 进行部署
docker-compose部署
首先下载代码
https://github.com/hhyo/Archery/tree/master/src/docker-compose
下载完成后,进入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
# 退出容器
exit
# 日志查看和问题排查
docker logs archery -f --tail=50
访问http://ip:9123
系统管理配置
参考官网 https://archerydms.com/configuration/
sql上线审核
此配置主要实现sql上线审核
goInception配置¶ GO_INCEPTION_HOST¶ goInception的连接地址,用于MySQL审核执行,docker-compose启动的请配置为容器名,比如goinception,参考文档:https://github.com/hanchuanchuan/goInception
GO_INCEPTION_PORT¶ goInception的连接端口,默认4000
BACKUP_HOST¶ goInception的备份库链接HOST,用于页面展示回滚语句,和goInception配置文件config.toml内的backup_host保持一致
BACKUP_PORT¶ goInception的备份库链接端口,和goInception和配置文件config.toml内的backup_port保持一致
BACKUP_USER¶ goInception/Inception的备份库链接用户,和goInception和配置文件config.toml内的backup_user保持一致
BACKUP_PASSWORD
goInception的备份库链接用户,和goInception和配置文件config.toml内的backup_password保持一致
配置资源组
将用户和数据实例通过资源组绑定
添加Devops资源组,作为测试
配置用户
增加一个yangchao的用户,作为审核员
此时会进入django后台
配置DBA组,作为测试用户,添加全部权限
配置资源组,加到devops中
添加数据库
添加需要管理的数据库,并分配权限
配置数据库实例信息
配置到资源组中,并配置上线和查询
配置工单审核
配置查询,上线,归档申请都由DBA组成员审批
sql安查询权限
SQL审核
现在模拟一般用户sql上线,提交sql审核通过过会上线
执行一条插入语句
insert into
person(username, sex, email)
values(
" stu001 ",
" man ",
" stu01 @qq.com")
点击sql检测,没有问题的话,提交sql
使用dba的用户登录后,可以看到审核记录
点击审核通过,再点击立即执行 则sql语句上线
上线完成后,如有问题,则可以查看回滚sql,并回滚
sql查询
编写查询语句,只支持查询的语句
点击表,可以看到表结构
执行查询语句,显示查询结果
select
*
from
person;
SQL优化
优化工具
能够按照一定的sql分析工作,对sql语句进行优化
,
关于优化的说明可以参考文档
慢日志统计
测试数据库,没数据链看不到慢日志
系统审计
在sql上线审计中,就能看到审核日志,工单等信息
总结
该平台十分强大,虽然很多云厂商都有云DBA功能,但是费用不低,这个数据库审核平台可以满足一般小公司的数据库审核,优化需要