Mysql審核查詢平臺(tái)Archery部署過程
1 Archery產(chǎn)品介紹

官網(wǎng)地址:https://archerydms.com/
在技術(shù)團(tuán)隊(duì)內(nèi)部進(jìn)行有效的 SQL 管理并不容易,如何進(jìn)行數(shù)據(jù)庫的統(tǒng)一管理,和線上 SQL 操作的統(tǒng)一審核,變得尤為重要。
Archery,這個(gè)開源的 SQL 審核查詢平臺(tái),或許能為 SQL 審核工作帶來不小的效率提升。
一條高質(zhì)量的 SQL 語句能使整個(gè)服務(wù)加速好幾倍,而一條有問題的 SQL 則可能會(huì)引發(fā)災(zāi)難,造成嚴(yán)重后果,因此,數(shù)據(jù)庫管理人員的工作就十分重要了,他們掌握著千百萬數(shù)據(jù)的命運(yùn),以下是簡(jiǎn)單部署,詳情部署請(qǐng)查看官方文檔!

Archery是archer的分支項(xiàng)目,定位于SQL審核查詢平臺(tái),旨在提升DBA的工作效率,支持多數(shù)據(jù)庫的SQL上線和查詢,同時(shí)支持豐富的MySQL運(yùn)維功能,所有功能都兼容手機(jī)端操作,項(xiàng)目位于 https://github.com/hhyo/Archery,同時(shí)也在 Gitee 上開源,位于 https://gitee.com/rtttte/Archery
2 基于docker搭建Archery

2.1 系統(tǒng)環(huán)境
- 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 # 注意修改權(quán)限,不然會(huì)報(bào)錯(cuò) sudo chmod +x /usr/local/bin/docker-compose # 測(cè)試,查看版本 docker-compose --version
2.2.2 下載Archery
#下載地址 https://github.com/hhyo/archery/releases/ #下載解壓后路徑pwd /usr/local/Archery-1.8.1
2.2.3 安裝并啟動(dòng)
# 啟動(dòng) cd /usr/local/Archery-1.8.1/src/docker-compose # 下載的東西很多,速度比較慢,如果下載失敗,就多試幾次 # 生成了五個(gè)docker實(shí)例:redis inception archery goinception mysql docker-compose -f docker-compose.yml up -d
2.2.4 表結(jié)構(gòu)初始化
docker exec -ti archery /bin/bash cd /opt/archery source /opt/venv4archery/bin/activate python3 manage.py makemigrations sql python3 manage.py migrate # 編譯翻譯文件(有些命令也不知道為啥執(zhí)行,參考一些教學(xué),這條可選執(zhí)行) python3 manage.py compilemessages
2.2.5 數(shù)據(jù)初始化
# 不同的版本,不一定都有這兩個(gè)sql文件,所以這兩個(gè)命令不一定會(huì)執(zhí)行成功 python3 manage.py dbshell<sql/fixtures/auth_group.sql python3 manage.py dbshell<src/init_sql/mysql_slow_query_review.sql
2.2.6 創(chuàng)建管理用戶
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 啟動(dòng)成功查看
訪問 http://ip:9123

用剛剛創(chuàng)建的admin賬號(hào)登錄

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 | 數(shù)據(jù)庫管理員(Database Administrator,簡(jiǎn)稱DBA) |
| RD | 研發(fā)(Research and Development) |
| PM | 項(xiàng)目經(jīng)理( Project Manager ) |
| QA | 測(cè)試(QUALITY ASSURANCE,中文意思是“質(zhì)量保證”) |
5 系統(tǒng)設(shè)置
5.1 goinception配置 對(duì)MySQL進(jìn)行審核和執(zhí)行
這個(gè)需要提前配置好,不然會(huì)導(dǎo)致無法提交sql審核,備份庫需要開啟binlog,不然會(huì)執(zhí)行失敗

| 配置項(xiàng) | 說明 |
|---|---|
| GO_INCEPTION_HOST | 連接地址,docker-compose啟動(dòng)的請(qǐng)配置為容器名或者docker的ip地址 |
| GO_INCEPTION_PORT | goInception的連接端口,默認(rèn)4000 |
| BACKUP_HOST | 備份庫鏈接HOST,用于頁面展示回滾語句 |
| BACKUP _PORT | 備份庫鏈接端口 |
| BACKUP_USER | 備份庫鏈接用戶 |
| BACKUP_PASSWORD | 備份庫鏈接密碼 |
該配置信息,僅僅用于archery從備份庫查詢回滾語句使用,該配置信息不會(huì)被goInception服務(wù)使用,goInception連接備份庫使用的數(shù)據(jù)庫連接信息應(yīng)在其自身的config.toml中配置。
5.2 SQL查詢

| 配置項(xiàng) | 說明 |
|---|---|
| INCEPTION_HOST | Inception連接HOST,用于SQL查詢語法解析,docker-compose啟動(dòng)的請(qǐng)配置為容器名或者docker的ip |
| INCEPTION_PORT | Inception連接端口,默認(rèn)6669 |
| QUERY_CHECK | 相關(guān)issues: https://github.com/hhyo/Archery/issues/145 |
是否開啟SQL查詢脫敏的Inception檢測(cè),平臺(tái)的SQL查詢功能依靠Inception的語法樹打印來解析查詢語句中包含的庫、表、字段信息,從而進(jìn)行數(shù)據(jù)脫敏
- 開啟QUERY_CHECK后,如果遇到Inception無法解析的語句,則會(huì)直接拋出錯(cuò)誤信息,禁止查詢
- 關(guān)閉QUERY_CHECK后,如果遇到Inception無法解析的語句,系統(tǒng)不再進(jìn)行數(shù)據(jù)脫敏,會(huì)有數(shù)據(jù)泄露的風(fēng)險(xiǎn),請(qǐng)謹(jǐn)慎選擇
- 動(dòng)態(tài)脫敏不支持的語法:嵌套子查詢、部分非單字段函數(shù),如concat(phone,’,’)、max(id+num)
DATA_MASKING: 是否開啟動(dòng)態(tài)脫敏,會(huì)利用inception語法樹打印,結(jié)合后臺(tái)設(shè)置的脫敏字段和脫敏規(guī)則,對(duì)查詢數(shù)據(jù)進(jìn)行脫敏。遇到無法解析的語句是報(bào)錯(cuò)還是返回未脫敏的數(shù)據(jù)同樣由QUERY_CHECK參數(shù)控制 * 正常脫敏:

開啟QUERY_CHECK后執(zhí)行不支持語句

關(guān)閉QUERY_CHECK后執(zhí)行不支持語句

- MAX_EXECUTION_TIME: 在線查詢超時(shí)時(shí)間閾值,單位秒,默認(rèn)60,超時(shí)的語句會(huì)被終止并返回提示信息,目前僅支持MySQL
- ADMIN_QUERY_LIMIT: 超級(jí)管理員的查詢限制行數(shù),超級(jí)管理員查詢數(shù)據(jù)時(shí)不做權(quán)限校驗(yàn),僅由該參數(shù)設(shè)置最大行數(shù)
5.3 SQL優(yōu)化

| 配置項(xiàng) | 說明 |
|---|---|
| SQLADVISOR_PATH | SQLAdvisor的可執(zhí)行文件路徑,路徑需要完整,docker鏡像內(nèi)已經(jīng)集成 * 1.4.0以前的docker版本配置成/opt/sqladvisor * 1.4.0以以后的docker版本配置成 /opt/archery/src/plugins/sqladvisor |
| SOAR_PATH | SOAR的可執(zhí)行文件路徑,路徑需要完整,docker鏡像內(nèi)已經(jīng)集成,docker鏡像內(nèi)已經(jīng)集成 * 1.4.0以前的docker版本配置成/opt/soar * 1.4.0以以后的docker版本配置成 /opt/archery/src/plugins/soar |
5.4 其他配置

| 配置項(xiàng) | 說明 |
|---|---|
| INDEX_PATH_URL | 系統(tǒng)首頁路徑,默認(rèn)是SQL工單頁面 |
| BINLOG2SQL | BINLOG2SQL調(diào)用路徑,用于實(shí)現(xiàn)binlog2sql解析的功能,docker鏡像內(nèi)已經(jīng)集成 * docker部署請(qǐng)配置為 /opt/archery/src/plugins/binlog2sql/binlog2sql.py |
| DEFAULT_AUTH_GROUP | 默認(rèn)權(quán)限組名,新用戶首次登錄自動(dòng)關(guān)聯(lián), 老用戶請(qǐng)手動(dòng)配置 |
| DEFAULT_RESOURCE_GROUP | 默認(rèn)資源組名,新用戶首次登錄自動(dòng)關(guān)聯(lián), 老用戶請(qǐng)手動(dòng)配置 |
| DEFAULT_RESOURCE_GROUP | 默認(rèn)資源組名,新用戶首次登錄自動(dòng)關(guān)聯(lián), 老用戶請(qǐng)手動(dòng)配置 |
| LOCK_TIME_THRESHOLD | 賬戶登錄失敗鎖定時(shí)間(秒) |
| LOCK_CNT_THRESHOLD | 賬戶登錄失敗幾次鎖賬戶 |
| SIGN_UP_ENABLED | 是否開啟注冊(cè)功能,關(guān)閉后將無法自主注冊(cè)用戶 |
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL實(shí)戰(zhàn)記錄之如何快速定位慢SQL
這可能是困然很多人的一個(gè)問題,MySQL通過慢查詢?nèi)罩径ㄎ荒切﹫?zhí)行效率較低的SQL語句,下面這篇文章主要給大家介紹了關(guān)于MySQL實(shí)戰(zhàn)記錄之如何快速定位慢SQL的相關(guān)資料,需要的朋友可以參考下2022-03-03
Mysql數(shù)據(jù)庫綠色版安裝教程 解決系統(tǒng)錯(cuò)誤1067的方法
這篇文章主要為大家詳細(xì)介紹了MySql數(shù)據(jù)庫綠色版安裝教程,以及系統(tǒng)錯(cuò)誤1067的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
MySQL占用內(nèi)存較大與CPU過高測(cè)試與解決辦法
為了裝mysql環(huán)境測(cè)試,裝上后發(fā)現(xiàn)啟動(dòng)后MySQL占用內(nèi)存了很大,達(dá)8百多兆。網(wǎng)上搜索了一下,得到高人指點(diǎn)my.ini。再也沒見再詳細(xì)的了..只好打開my.ini逐行的啃,雖然英文差了點(diǎn),不過多少M(fèi)還是看得明的2018-03-03
MySql中流程控制函數(shù)/統(tǒng)計(jì)函數(shù)/分組查詢用法解析
這篇文章主要介紹了MySql中流程控制函數(shù)/統(tǒng)計(jì)函數(shù)/分組查詢用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07

