找回密码
 立即注册
搜索
热搜: Java Linux Docker
查看: 25|回复: 0

[Other] Archery的部署与使用

[复制链接]

27

主题

1

回帖

4万

积分

管理员

积分
40179
发表于 2026-6-5 11:34:00 | 显示全部楼层 |阅读模式

一、认识Archery

1.1 平台定位与背景

“在实际数据库运维中,一次忘记加WHERE条件的UPDATE可能导致整张表数据丢失,这不仅仅是理论上的风险,而是许多团队的真实教训。”
Archery是一款开源的一站式SQL审核查询平台,旨在提升数据库操作的安全性、效率和规范性,将数据库变更从“个人行为”转变为“团队协作流程”。
它的核心价值包括:

  • 安全管控(杜绝生产库直连,所有SQL通过平台执行)
  • 流程规范(SQL提交→自动审核→人工审批→自动执行全流程留痕)
  • 效率提升(日均处理SQL从传统人工审核的约200条大幅提升)。

1.2 核心功能全景图

功能模块 核心能力 用户价值
SQL审核 Web提交、自动语法检查+规则引擎、多级审批流 规避误操作风险
SQL查询 可视化数据查询+导出、敏感数据脱敏 安全查询、审计溯源
工单管理 全生命周期跟踪 (提交-> 审核 -> 执行 -> 归档) 流程规范、责任溯源
运维管理 数据库实例健康监控、会话管理、慢日志分析 主动运维、性能优化
SQL优化 基于PT收集慢日志,多工具优化建议 性能调优

1.3 技术架构

Archery的部署架构包含以下核心组件:

  • Archery Web服务:基于Django框架的Web应用,提供用户界面和API
  • 关系型数据库(MySQL/PostgreSQL):存储元数据、用户信息、工单记录
  • 缓存服务(Redis):会话存储、任务队列
  • 消息队列(Redis/RabbitMQ):处理异步任务
  • 审核引擎(goInception):SQL审核与执行核心

二、安装与初始配置

2.1 环境准备

项目 要求
CPU 建议2核以上
内存 测试环境4GB以上,生产环境按需扩容
磁盘 建议20GB以上
Docker 版本20.10以上
Docker Compose 版本2.0以上
Git 用于拉取代码

2.2 一键部署步骤

# 1. 下载Archery(以v1.13.0为例)
wget https://github.com/hhyo/Archery/archive/refs/tags/v1.13.0.tar.gz
tar-zxvf v1.13.0.tar.gz
cd Archery-1.13.0/src/docker-compose/

# 2. 启动服务
docker compose up -d

# 3. 表结构初始化
dockerexec-ti archery /bin/bash
cd /opt/archery
source /opt/venv4archery/bin/activate
python3 manage.py makemigrations sql
python3 manage.py migrate

# 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. 退出容器并访问
exit
# 访问 http://服务器IP:9123

2.3 关键配置要点

⚠️ 部署避坑指南(重点提醒)

  • Binlog务必开启:回滚语句生成依赖MySQL binlog,否则审核失败
  • 资源预留:建议4GB以上内存,避免容器OOM
  • 端口映射:默认9123端口,确保防火墙开放

三、核心功能使用

3.1 系统角色说明

角色 权限 主要职责
RD(开发工程师) 提交SQL上线工单、SQL查询 发起变更
DBA(数据库管理员) 审核SQL、执行上线 安全把关
PM(项目经理) 审批工单、审批权限 流程控制

3.2 SQL上线流程

标准审批流程:RD提交、DBA审核、PM审批
功能亮点

  • 自动审批:支持正则判断,不在正则范围内的SQL无需人工审批
  • 快速上线:工单详情可快速提交相同SQL到其他实例
  • 定时执行:支持工单审核后定时或立即执行

3.3 SQL查询功能

  • 授权管理:工作流控制SQL查询授权,支持库表级权限限制和授权时间控制
  • 敏感数据脱敏:查询结果中的手机号、身份证号等敏感信息自动打码
  • 查询导出:支持Excel/CSV格式导出,历史记录自动归档

3.4 SQL优化与慢日志分析

  • 集成慢查询日志分析,帮助快速定位性能瓶颈
  • 支持SQLAdvisor、SOAR等多工具优化建议
  • SQL语句自动格式化,提升代码可读性

四、权限体系与审核规则配置

4.1 权限体系架构

Archery采用多层次的权限管理模型:

  • 资源组:资源对象的集合,与用户关联后隔离资源访问权限,成员仅可查看组关联对象的数据
  • 权限组:权限集合,工作流审批依赖权限组,可根据职能划分
  • 核心权限定义
    • sql_submit:提交SQL上线工单
    • sql_review:审核SQL上线工单
    • sql_execute:执行SQL上线工单

4.2 审核规则配置

高危SQL拦截规则CRITICAL_DDL_REGEX):

正则示例:^truncate|^rename|^drop

匹配的语句会被禁止提交

# 示例操作SQL
truncate table IF EXISTS <TableName>;
drop table IF EXISTS <TableName>
RENAME TABLE <CurrentTableName> TO <NewTableName>;

自动驳回等级控制AUTO_REVIEW_WRONG):

  • 1:审核出现警告即驳回
  • 2或空:仅出现错误才驳回
  • 其他:不驳回
    自动审批开关AUTO_REVIEW):
  • 结合AUTO_REVIEW_REGEXMAX_UPDATE_ROWS配置
  • update语句预估影响行数超限时需人工审批

4.3 工作流配置步骤

  1. 系统管理 → 配置项管理 → 工单审核流配置
  2. 变更审批流程(选择审批流顺序)
  3. 完成后SQL上线需依次经 成员提交、Leader审核、ManagerLeader(Feddy大哥或运维)审批

五、运维管理与常见问题

5.1 日常运维监控

  • 会话管理:支持查看和批量终止会话
  • 慢日志分析:集成慢查询日志,提供分析和展示界面
  • 数据库健康监控:实例空间使用、会话状态监控

5.2 常见问题及解决方案

问题现象 可能原因 解决方案
提交SQL时提示“开启binlog日志” MySQL未开启binlog 配置MySQL开启binlog
工单卡在待审核状态 审批流程未配置完整 检查工单审核流配置
用户无法访问实例 资源组未正确关联 系统管理-资源组管理,关联用户和实例
goInception进程无响应 内存溢出或进程僵死 重启goInception服务

5.3 消息通知配置

支持通知方式:钉钉(资源组级别)、企业微信邮件
通知触发场景:工单提交、审核、取消、执行的各个阶段

六、重点总结

  • Archery是什么?→ 开源的一站式SQL审核查询平台
  • 为什么要用?→ 解决SQL变更管理的效率、安全、流程三大痛点
  • 核心能力?→ 审核+查询+工单+运维+优化
  • 谁负责什么?→ 成员提交、Leader审核、ManagerLeader(Feddy大哥或运维)审批
  • 如何保障安全?→ 自动审核 + 权限隔离 + 多级审批 + 操作留痕

七、参考资料

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|saotolls Inc.

GMT+8, 2026-6-20 02:28 , Processed in 0.337785 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表