Mysql审核查询平台Archery部署

2023-10-26


1 Archery产品介绍

在这里插入图片描述
官网地址:https://archerydms.com/

在技术团队内部进行有效的 SQL 管理并不容易,如何进行数据库的统一管理,和线上 SQL 操作的统一审核,变得尤为重要。Archery,这个开源的 SQL 审核查询平台,或许能为 SQL 审核工作带来不小的效率提升。
一条高质量的 SQL 语句能使整个服务加速好几倍,而一条有问题的 SQL 则可能会引发灾难,造成严重后果,因此,数据库管理人员的工作就十分重要了,他们掌握着千百万数据的命运,以下是简单部署,详情部署请查看官方文档!

在这里插入图片描述

Archery是archer的分支项目,定位于SQL审核查询平台,旨在提升DBA的工作效率,支持多数据库的SQL上线和查询,同时支持丰富的MySQL运维功能,所有功能都兼容手机端操作,项目位于 https://github.com/hhyo/Archery,同时也在 Gitee 上开源,位于 https://gitee.com/rtttte/Archery

2 基于docker搭建Archery

在这里插入图片描述

2.1 系统环境

  • Centos7
  • Docker 17.2
  • Archery1.8.1

2.2 安装 Docker

2.2.1 安装 Docker Compose

# 如果下载速度比较慢,可以切换源
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 注意修改权限,不然会报错
sudo chmod +x /usr/local/bin/docker-compose
# 测试,查看版本
docker-compose --version

2.2.2 下载Archery

#下载地址 
https://github.com/hhyo/archery/releases/

#下载解压后路径pwd
/usr/local/Archery-1.8.1

2.2.3 安装并启动

# 启动
cd /usr/local/Archery-1.8.1/src/docker-compose
# 下载的东西很多,速度比较慢,如果下载失败,就多试几次 
# 生成了五个docker实例:redis inception archery goinception mysql
docker-compose -f docker-compose.yml up -d

2.2.4 表结构初始化

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 compilemessages

2.2.5 数据初始化

# 不同的版本,不一定都有这两个sql文件,所以这两个命令不一定会执行成功
python3 manage.py dbshell<sql/fixtures/auth_group.sql
python3 manage.py dbshell<src/init_sql/mysql_slow_query_review.sql

2.2.6 创建管理用户

python3 manage.py createsuperuser

# python3 manage.py createsuperuser
用户名: admin
电子邮件地址: [email protected]
Password: 
Password (again): 
Superuser created successfully.

2.2.7 退出重启

exit
docker restart archery

2.2.8 日志查看和问题排查

docker logs archery -f --tail=50

2.2.9 启动成功查看

访问 http://ip:9123
在这里插入图片描述

用刚刚创建的admin账号登录
在这里插入图片描述

2.2.10 端口占用情况

redis 端口:6379
mysql端口:3306
inception端口:6669
goinception端口:4000
archery端口:9123

在这里插入图片描述

3 基本操作

3.1 停止

# 停止
docker stop redis
docker stop inception
docker stop archery
docker stop goinception
docker stop mysql

3.2 删除

docker rm -f redis
docker rm -f inception
docker rm -f archery
docker rm -f goinception
docker rm -f mysql

4 角色说明

角色 说明
DBA 数据库管理员(Database Administrator,简称DBA)
RD 研发(Research and Development)
PM 项目经理( Project Manager )
QA 测试(QUALITY ASSURANCE,中文意思是“质量保证”)

5 系统设置

5.1 goinception配置 对MySQL进行审核和执行

这个需要提前配置好,不然会导致无法提交sql审核,备份库需要开启binlog,不然会执行失败

在这里插入图片描述

配置项 说明
GO_INCEPTION_HOST 连接地址,docker-compose启动的请配置为容器名或者docker的ip地址
GO_INCEPTION_PORT goInception的连接端口,默认4000
BACKUP_HOST 备份库链接HOST,用于页面展示回滚语句
BACKUP _PORT 备份库链接端口
BACKUP_USER 备份库链接用户
BACKUP_PASSWORD 备份库链接密码

该配置信息,仅仅用于archery从备份库查询回滚语句使用,该配置信息不会被goInception服务使用,goInception连接备份库使用的数据库连接信息应在其自身的config.toml中配置。

5.2 SQL查询

在这里插入图片描述

配置项 说明
INCEPTION_HOST Inception连接HOST,用于SQL查询语法解析,docker-compose启动的请配置为容器名或者docker的ip
INCEPTION_PORT Inception连接端口,默认6669
QUERY_CHECK 相关issues: https://github.com/hhyo/Archery/issues/145

是否开启SQL查询脱敏的Inception检测,平台的SQL查询功能依靠Inception的语法树打印来解析查询语句中包含的库、表、字段信息,从而进行数据脱敏

  • 开启QUERY_CHECK后,如果遇到Inception无法解析的语句,则会直接抛出错误信息,禁止查询
  • 关闭QUERY_CHECK后,如果遇到Inception无法解析的语句,系统不再进行数据脱敏,会有数据泄露的风险,请谨慎选择
  • 动态脱敏不支持的语法:嵌套子查询、部分非单字段函数,如concat(phone,’,’)、max(id+num)

DATA_MASKING: 是否开启动态脱敏,会利用inception语法树打印,结合后台设置的脱敏字段和脱敏规则,对查询数据进行脱敏。遇到无法解析的语句是报错还是返回未脱敏的数据同样由QUERY_CHECK参数控制 * 正常脱敏:
在这里插入图片描述

开启QUERY_CHECK后执行不支持语句
在这里插入图片描述

关闭QUERY_CHECK后执行不支持语句
在这里插入图片描述

MAX_EXECUTION_TIME: 在线查询超时时间阈值,单位秒,默认60,超时的语句会被终止并返回提示信息,目前仅支持MySQL
ADMIN_QUERY_LIMIT: 超级管理员的查询限制行数,超级管理员查询数据时不做权限校验,仅由该参数设置最大行数

5.3 SQL优化

在这里插入图片描述

配置项 说明
SQLADVISOR_PATH SQLAdvisor的可执行文件路径,路径需要完整,docker镜像内已经集成 * 1.4.0以前的docker版本配置成/opt/sqladvisor * 1.4.0以以后的docker版本配置成 /opt/archery/src/plugins/sqladvisor
SOAR_PATH SOAR的可执行文件路径,路径需要完整,docker镜像内已经集成,docker镜像内已经集成 * 1.4.0以前的docker版本配置成/opt/soar * 1.4.0以以后的docker版本配置成 /opt/archery/src/plugins/soar

5.4 其他配置

在这里插入图片描述

配置项 说明
INDEX_PATH_URL 系统首页路径,默认是SQL工单页面
BINLOG2SQL BINLOG2SQL调用路径,用于实现binlog2sql解析的功能,docker镜像内已经集成 * docker部署请配置为 /opt/archery/src/plugins/binlog2sql/binlog2sql.py
DEFAULT_AUTH_GROUP 默认权限组名,新用户首次登录自动关联, 老用户请手动配置
DEFAULT_RESOURCE_GROUP 默认资源组名,新用户首次登录自动关联, 老用户请手动配置
DEFAULT_RESOURCE_GROUP 默认资源组名,新用户首次登录自动关联, 老用户请手动配置
LOCK_TIME_THRESHOLD 账户登录失败锁定时间(秒)
LOCK_CNT_THRESHOLD 账户登录失败几次锁账户
SIGN_UP_ENABLED 是否开启注册功能,关闭后将无法自主注册用户
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql审核查询平台Archery部署 的相关文章

  • 如何从 docker 容器在主机上运行 shell 脚本?

    如何从docker容器控制主机 例如 如何执行复制到主机的bash脚本 这个答案只是一个Bradford Medeiros 解决方案的更详细版本 这对我来说也是最好的答案 所以功劳归于他 在他的回答中 他解释了该怎么做 命名管道 但不完全是
  • 自动递增和最后插入 ID

    我在用着AUTO INCREMENT我想获取插入行的 ID 以便我可以使用更新另一个表ID作为两个表之间的公共字段 我明白LAST INSERT ID会排在最后ID 然而 我担心的是 数据库被许多用户同时访问 因此 可能有另一个进程访问该表
  • 如何在mysql中设置“performance_schema on”?

    我想转performance schemaON 在 mysql 中收集统计信息 我怎样才能实现这个目标 以下指南是特定于 Linux 的 但应该很容易适用于 Windows 您必须检查 mysql 服务器二进制文件是否已编译为支持它 mys
  • docker compose run 命令中 env 变量的用法

    运行命令docker compose run e TYPE result mongo db backup应该给我给定 TYPE 变量的值 mongo db backup image mongo 3 4 volumes backup back
  • 获取直方图数据

    有没有办法在 MySQL 中指定 bin 大小 现在 我正在尝试以下 SQL 查询 select total count total from faults GROUP BY total 生成的数据足够好 但行太多 我需要的是一种将数据分组
  • PHP 7.0和MySQL启动错误“未定义符号:mysqlnd_allocator in Unknown”

    即使在运行时 在自定义编译版本的 PHP7 上也会收到此警告php v 尝试了发布的所有解决方案 什么可能导致这种情况 PHP 警告 PHP 启动 无法加载动态库 usr lib php 20151012 pdo mysql so usr
  • 在 Docker 中更改 Ubuntu 语言环境

    因此 我正在 pt BR 中使用 Ubuntu 和 Postgresql 设置 docker 映像 我想知道如何通过命令行更改默认区域设置而不重新启动系统 这在 Docker 构建中是不可能的 我设法在 Debian 中通过更改 LANG
  • 是否可以在具有高山风味的 docker 容器内构建 AOSP?

    我对 AOSP 非常陌生 我正在尝试在 Docker 上设置完整的 AOSP 以构建 Docker 映像 例如 Alpine 或 Ubuntu 映像 如果不可能 请让我知道无法在内部设置 AOSP 的原因泊坞窗图像 或者我需要编写 Dock
  • 如何更改Linux服务器中的MySQL表名不区分大小写?

    我正在开发一个旧网站 该网站曾经托管在 Apple 服务器上 当它迁移到新的 Linux 服务器时 它停止工作 我很确定这是因为 php 脚本中使用的所有 MySQL 查询对于表名都有不同的大小写组合 我不知道为什么原始开发人员在创建表名或
  • Session_set_save_handler 未设置

    我在设置 session set save handler 时遇到问题 我将 php ini 配置为 session handler user 这个简单的测试失败了 Define custom session handler if sess
  • 如何优化这个查询(涉及4毫米表)

    我正在使用如下所示的遗留数据库架构 product table表有字段 uid 整数 主键 name varchar 50 category表有字段 uid 整数 主键 name varchar 50 好吧 现在product table与
  • PHP - While/Else 错误? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有以下
  • 动态表单字段验证的数据库设计

    在我的应用程序中 我允许用户创建一个包含他们想要的任何 HTML 表单字段 例如文本输入 文本区域 选择等 的表单 我想让用户能够为每个字段定义 0 个或多个累积验证规则 最多可能有 25 个不同的验证规则 我应该如何建模 这是一个潜在的解
  • 在关系数据库中存储 1:1 用户关系的最佳方式

    存储用户关系的最佳方式是什么 例如友谊 在关系中必须是双向的 你是我的朋友 因此我是你的朋友 数据库 例如MYSql 我可以想到两种方法 每当一个用户与另一个用户成为好友时 我都会向数据库添加两行 其中 A 行由发起用户的用户 ID 和下一
  • MySQL - 查找与连接表中的所有行匹配的行

    表 1 曲目 表 2 词汇表 表 3 N M 轨道有单词 trackwords 找到包含所有单词的所有曲目 目前查询如下 SELECT DISTINCT t id FROM track as t Left Join trackwords a
  • 如何在 Windows Docker 容器中启动 PowerShell (x86)?

    我正在尝试从 PowerShell 启动 Windows Docker 容器中的 PowerShell x86 但它不会启动新的 shell 我正在从 AWS Windows EC2 运行 DockerWindows Server 2019
  • Docker:通过 Gunicorn 运行 Flask 应用程序 - Worker 超时?表现不佳?

    我正在尝试创建一个用Python Flask编写的新应用程序 由gunicorn运行 然后进行dockerized 我遇到的问题是 docker 容器内的性能非常差 不一致 我最终得到了响应 但我不明白为什么性能会下降 有时我会在日志中看到
  • Docker容器内的动态监听端口

    我有一个应用程序 在使用其默认端口建立一些连接后 开始打开 侦听 新的随机端口来处理现有连接 然后删除它们 视频通话 它还在通信协议内交换其IP地址和端口 我能够解决IP地址问题 但仍然无法找到一种方法来动态告诉主机的IPTABLES在Do
  • 学说 - 获取下一个和上一个记录

    这样我就已经获取了一些记录 我已创建日期字段 现在我想按日期获取下一条和上一条记录 通过以下方式让它工作 qb this gt createQueryBuilder a next qb gt expr gt gt a created dat
  • Elastic Beanstalk 上的 Django + MySQL - 查询 MySQL 时出错

    当我在 Elastic beanstalk 上托管的 Django 应用程序上查询 MySQL 时 出现错误 错误说 admin login 处出现操作错误 1045 用户 adminDB 172 30 23 5 的访问被拒绝 使用密码 Y

随机推荐

  • java中的锁(一)(Synchronized)

    JAVA中的锁 乐观锁 悲观锁 自旋锁 synchronized 原子性 可见性 有序性 可重入性 Synchronized底层原理 JAVA中的锁主要用于保障多线程中数据的一致性 在使用对象或者方法之前加锁 此时如果有其他线程也需要使用该
  • 一次暴露面全开的红帽渗透测试【getshell】

    声明 本文仅限于技术讨论与分享 严禁用于非法途径 若读者因此作出任何危害网络安全行为后果自负 与本号及原作者无关 0x01 信息收集阶段 注 本次信息收集过程主要使用FOFA网络探测平台 https fofa info 一开始进行收集的时候
  • COCOAPI评价指标解析及改进

    程序入口 python eval coco py 特别说明 results test json格式如下 image id 19 category id 1 bbox 121 4 116 02 560 56 303 83 score 0 97
  • windows下安装redis和redis扩展

    windows下安装redis 下载地址 https github com MSOpenTech redis releases Redis 支持 32 位和 64 位 这个需要根据你系统平台的实际情况选择 这里我们下载 Redis x64
  • 链路mtu

    常常见到交换机和网卡说明中提到支持Jumbo Frame 但我一直对以太网的Jumbo Frame 巨帧 如何使用不太理解 今日在网上找到2则现摘录下来 相信看了以后大家会有收获 这是一种厂商标准的超长帧格式 专门为千兆以太网而设计 目前还
  • 移动硬盘需要格式化才能打开如何解决?

    当我们把移动硬盘接入 就提示需要格式化 这是对我们有多大的仇怨啊 其实不是这样的 当频繁使用可移动硬盘很容易造成损坏 有时甚至会提示格式化 而提示要格式化是硬盘出现了问题导致的 那么什么原因才会出现的情况呢 遇到移动硬盘需要格式化才能打开如
  • 【算法训练 (day2)】积木画(dp问题)

    目录 一 问题 题目描述 输入格式 输出格式 输出样例 二 解题思路 合法性判定 状态压缩 推导dp式 代码实现 一 问题 题目描述 小明最近迷上了积木画 有这么两种类型的积木 分别为 I 型 大小为 2 个单位面积 和 L 型 大小为 3
  • Spdlog库编译/交叉编译

    1 只包含头文件 速度很快 无需依赖第三方库 支持跨平台 Linux Windows on 32 64 bits 支持多线程 可对日志文件进行循环输出 可每日生成日志文件 可支持控制台日志输出 可选的异步日志 可定义日志格式 2 获取spd
  • centos7下opencv3.4.1 的安装和编译全解

    centos7下opencv3 4 1 的安装和编译全解 一 下载和安装 1 下载网址 https opencv org 注意系统版本 2 linux下依赖库安装 正式安装opencv之前 需要安装好opencv编译的依赖包 列举如下 1
  • 【Pandas】修改Pandas的行或列的名字(重命名)

    pandas DataFrame rename 使用函数 DataFrame rename mapper None index None columns None axis None copy True inplace False leve
  • 编译Android 2.3源码错误总结

    虽然版本2 3很老了 但是这是在完全新的Ubuntu上面编译的 可以使我们更加熟练 1 host C acp lt build tools acp acp c
  • BP神经网络在数据预测上的应用

    用BP神经网络做数据预测有两种形式 1 根据自身已有的数据预测未来的数据 比如 根据2000 2012年已知GDP的值预测2013年GDP的值 求解 用2000 2001 2002的值作为输入 2003作为输出 然后以此类推 2001 20
  • DEDE后台添加新变量出现:Request var not allow!的解决办法

    论坛上很多人都反馈说在后台添加新变量的时候会出现 Request var not allow 的BUG错误 本文主要就是介绍如何去解决这个问题 下面看具体操纵 在DEDE根目录打开 include common inc php 文件 查找到
  • pycharm 2019.2 安装包失败

    简介 最近使用学生账号注册了pycharm 貌似全家桶都可以免费用了 就升级了pycharm到最新版 但是在使用包管理 安装包的时候出错了 提示没有匹配的版本 下面还提示一个 trusted host pypi douban com 右下角
  • es搜索 核心指标_ElasticSearch核心知识总结(一)es的六种搜索方式和数据分析

    es的六种搜索方式 query string search GET ecommerce product search 查询所有数据 took 4 耗费几毫秒 timed out false 是否超时 shards 数据拆分成5个分片 对所有
  • Qt编写软件注册功能

    一 软件目的 应项目需求 需要为编写的软件添加一层保护 防止滥用 二 软件环境 Qt5 9 Windows 主要加密算法 MD5 MD5简单介绍 MD5是一种不可逆的加密算法 类似计算hash值 不同的数据字符无论长短 经过MD5计算后都会
  • Pip快速离线安装pytorch-gpu

    Pip快速离线安装pytorch gpu 1小节讲解涉及的基本概念 读者也可直接从2小节开始 1 安装pythorch涉及的基本组件概念 1 1 显卡驱动Driver 常识概念 此处略过 1 2 CUDA CUDA Compute Unif
  • 二维邮局选址问题-带权中位数

    算法设计练习作业 邮局选址问题 将自己写的分享 有问题请指正 希望共同学习 关于邮局选址问题的理论知识就不赘述了 网上有讲解的 include
  • Python 入门基础

    第一个Python程序之打印 Hello World print Hello World 字符串定义的三种方式 type 用了检测数据类型 单引号定义法 使用单引号进行包围 name 测试 print type name 双引号定义法 na
  • Mysql审核查询平台Archery部署

    目录 1 Archery产品介绍 2 基于docker搭建Archery 2 1 系统环境 2 2 安装 Docker 2 2 1 安装 Docker Compose 2 2 2 下载Archery 2 2 3 安装并启动 2 2 4 表结