Archery部署与使用
archery为开源的SQL审核查询平台
部署
下面例子演示的是1.8.5的部署方法
1、下载archary,地址如下:
https://github.com/hhyo/archery/releases/
2、进入解压后目录下,执行如下命令:
cd Archery-1.8.5/src/docker-compose/
docker-compose -f docker-compose.yml up -d #注意:需要提前安装docker-compose
#docker-compose下载地址:https://github.com/docker/compose
如果报如下错误,说明docker-compose的版本可能过低,需要升级,如下:
ERROR: The Compose file './docker-compose.yml' is invalid because:
services.archery.depends_on contains an invalid type, it should be an array
3、表结构初始化,进入容器archery中,执行如下命令:
docker exec -ti archery /bin/bash
cd /opt/archery
source /opt/venv4archery/bin/activate
python3 manage.py makemigrations sql
python3 manage.py migrate
注:如果使用单独安装的MySQL和redis,就需要修改/opt/archery/archery/settings.py中的数据库配置
4、执行数据初始化:
python3 manage.py dbshell < sql/fixtures/auth_group.sql
python3 manage.py dbshell < src/init_sql/mysql_slow_query_review.sql
5、创建管理用户:
python3 manage.py createsuperuser #输入用户名、邮件、密码即可
6、重启服务:
docker restart archery
7、通过web端访问页面:
http://10.9.2.247:9123/

操作命令:
启动:docker-compose up -d
停止: docker-compose stop
重启:docker-compose restart
部署问题排查:
1、通过docker ps 可以看到mysql一直处于restarting状态,查看日志docker logs mysql 看到如下内容:

解决办法:修改Archery-1.8.5/src/docker-compose/mysql/my.cnf中的log_bing日志文件位置为:/var/lib/mysql/mysql-bin.index即可(容器将此配置文件映射进内部)
重启MySQL:docker restart mysql
继续从第3步开始进行初始化即可
下面例子演示1.10.0的部署方法,使用容器,但是使用外部的mysql 和 redis
1、下载安装包,如下:
wget https://github.com/hhyo/Archery/archive/refs/tags/v1.10.0.tar.gz
2、编辑.env环境变量文件,修改MySQL和redis的地址和用户密码,如下:
vim Archery-1.10.0/src/docker-compose/.env

- Abcd1234:MySQL和Redis的root用户密码,MySQL也可自定义别的用户和密码
- archery:mysql中的库名,后期初始化需要用
3、修改docker-compose.yml,删除mysql和redis模块,并修改下面archery的版本为v1.10.0,如图:

4、修改Archery-1.10.0/src/docker-compose/inception/config.toml文件,指定备份用户,如图:

登录archery使用的数据库,赋予备份用户bakcup创建数据库权限:
grant create on . to 'backup'@"%"
赋予backup用户创建、插入、更新表等权限,如下:
grant create,insert,select,update,alter on . to "backup"@"%";
赋予root用户允许远程操作,并有全部数据库与表的权限,如下:
grant all privileges on *.* to 'root'@"%" with grant option;
最后按照1.8.5的安装教程的第2步开始操作即可,也就是docker-compose -f docker-compose.yml up -d
5、容器运行起来后,将.env文件copy到容器的/opt/archery目录,如下:
docker cp .env archery:/opt/archery
使用
1、登录archery后,点击系统管理-资源组管理-添加组,如图:

设置资源组名称,点击保存即可,如图:

注:这个资源组要与下方创建的实例关联
2、点击实例管理–实例列表–添加实例,如图:


选择下方的资源组、实例标签后,点击保存即可,在实例列表页面,可点击测试看是否连接成功,如图:

注:本例子演示的是archery部署用的数据库和添加的数据库实例是一个,实际使用中,最好分开,archery单独用一个数据库
3、配置goInception,此功能主要用于SQL审核、回滚等操作,点击系统管理–配置项管理–系统配置,如图:

- GO_INCEPTION_HOST:指定容器名即可
- BACKUP_USER:就是上面创建的backup


4、配置权限组,主要用于后续配置审批流程的时候指定权限,点击系统管理–>其他配置管理–>权限组管理,如图:

自定义组名称和选择此组具备的权限,如图:

5、配置工单审核流,点击系统管理–>配置项管理–>工单审核流配置,选择工单类型和组,如图:

选择审批流程,也就是之前创建的权限组,如图:

6、执行SQL上线操作,执行后查看审批流程,如图:

创建其他用户
1、点击系统管理–>其他配置管理–>用户管理,通过之前创建的权限组,即可给用户分配权限,如图:

再给用户分配资源组即可,如图:



