Archery是一个开源的数据库审核平台,在日常数据库操作中,可以对操作进行审核。

官网:

https://archerydms.com/

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

使用docker-compose搭建数Archery据库审核平台并简单测试_python

访问http://ip:9123

使用docker-compose搭建数Archery据库审核平台并简单测试_sql_02

系统管理配置

参考官网 https://archerydms.com/configuration/

sql上线审核

此配置主要实现sql上线审核

使用docker-compose搭建数Archery据库审核平台并简单测试_python_03

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保持一致

配置资源组

将用户和数据实例通过资源组绑定

使用docker-compose搭建数Archery据库审核平台并简单测试_sql_04

添加Devops资源组,作为测试


配置用户

增加一个yangchao的用户,作为审核员

使用docker-compose搭建数Archery据库审核平台并简单测试_python_05

此时会进入django后台

使用docker-compose搭建数Archery据库审核平台并简单测试_python_06

配置DBA组,作为测试用户,添加全部权限

使用docker-compose搭建数Archery据库审核平台并简单测试_docker_07

配置资源组,加到devops中

使用docker-compose搭建数Archery据库审核平台并简单测试_python_08

添加数据库

添加需要管理的数据库,并分配权限

使用docker-compose搭建数Archery据库审核平台并简单测试_python_09

配置数据库实例信息

使用docker-compose搭建数Archery据库审核平台并简单测试_sql_10

配置到资源组中,并配置上线和查询

使用docker-compose搭建数Archery据库审核平台并简单测试_sql_11

配置工单审核

配置查询,上线,归档申请都由DBA组成员审批

使用docker-compose搭建数Archery据库审核平台并简单测试_sql_12

sql安查询权限

使用docker-compose搭建数Archery据库审核平台并简单测试_sql_13

SQL审核

现在模拟一般用户sql上线,提交sql审核通过过会上线

使用docker-compose搭建数Archery据库审核平台并简单测试_python_14

执行一条插入语句

insert into
  person(username, sex, email)
values(
    " stu001 ",
    " man ",
    " stu01 @qq.com")

使用docker-compose搭建数Archery据库审核平台并简单测试_sql_15

点击sql检测,没有问题的话,提交sql

使用dba的用户登录后,可以看到审核记录

使用docker-compose搭建数Archery据库审核平台并简单测试_docker_16

使用docker-compose搭建数Archery据库审核平台并简单测试_sql_17

点击审核通过,再点击立即执行 则sql语句上线

使用docker-compose搭建数Archery据库审核平台并简单测试_sql_18

上线完成后,如有问题,则可以查看回滚sql,并回滚

使用docker-compose搭建数Archery据库审核平台并简单测试_docker_19

sql查询

编写查询语句,只支持查询的语句

使用docker-compose搭建数Archery据库审核平台并简单测试_sql_20

点击表,可以看到表结构

使用docker-compose搭建数Archery据库审核平台并简单测试_docker_21

执行查询语句,显示查询结果

select
  *
from
  person;

使用docker-compose搭建数Archery据库审核平台并简单测试_docker_22

SQL优化

优化工具

能够按照一定的sql分析工作,对sql语句进行优化

使用docker-compose搭建数Archery据库审核平台并简单测试_docker_23

关于优化的说明可以参考文档

使用docker-compose搭建数Archery据库审核平台并简单测试_docker_24

慢日志统计

测试数据库,没数据链看不到慢日志

使用docker-compose搭建数Archery据库审核平台并简单测试_sql_25

系统审计

在sql上线审计中,就能看到审核日志,工单等信息

使用docker-compose搭建数Archery据库审核平台并简单测试_docker_26

总结

该平台十分强大,虽然很多云厂商都有云DBA功能,但是费用不低,这个数据库审核平台可以满足一般小公司的数据库审核,优化需要