Mysql審核查詢(xún)平臺(tái)Archery部署過(guò)程
1 Archery產(chǎn)品介紹
官網(wǎng)地址:https://archerydms.com/
在技術(shù)團(tuán)隊(duì)內(nèi)部進(jìn)行有效的 SQL 管理并不容易,如何進(jìn)行數(shù)據(jù)庫(kù)的統(tǒng)一管理,和線(xiàn)上 SQL 操作的統(tǒng)一審核,變得尤為重要。
Archery,這個(gè)開(kāi)源的 SQL 審核查詢(xún)平臺(tái),或許能為 SQL 審核工作帶來(lái)不小的效率提升。
一條高質(zhì)量的 SQL 語(yǔ)句能使整個(gè)服務(wù)加速好幾倍,而一條有問(wèn)題的 SQL 則可能會(huì)引發(fā)災(zāi)難,造成嚴(yán)重后果,因此,數(shù)據(jù)庫(kù)管理人員的工作就十分重要了,他們掌握著千百萬(wàn)數(shù)據(jù)的命運(yùn),以下是簡(jiǎn)單部署,詳情部署請(qǐng)查看官方文檔!
Archery是archer的分支項(xiàng)目,定位于SQL審核查詢(xún)平臺(tái),旨在提升DBA的工作效率,支持多數(shù)據(jù)庫(kù)的SQL上線(xiàn)和查詢(xún),同時(shí)支持豐富的MySQL運(yùn)維功能,所有功能都兼容手機(jī)端操作,項(xiàng)目位于 https://github.com/hhyo/Archery
,同時(shí)也在 Gitee 上開(kāi)源,位于 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)建管理用戶(hù)
python3 manage.py createsuperuser # python3 manage.py createsuperuser 用戶(hù)名: admin 電子郵件地址: [email protected] Password: Password (again): Superuser created successfully.
2.2.7 退出重啟
exit docker restart archery
2.2.8 日志查看和問(wèn)題排查
docker logs archery -f --tail=50
2.2.9 啟動(dòng)成功查看
訪(fǎng)問(wèn) 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 角色說(shuō)明
角色 | 說(shuō)明 |
---|---|
DBA | 數(shù)據(jù)庫(kù)管理員(Database Administrator,簡(jiǎn)稱(chēng)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)致無(wú)法提交sql審核,備份庫(kù)需要開(kāi)啟binlog,不然會(huì)執(zhí)行失敗
配置項(xiàng) | 說(shuō)明 |
---|---|
GO_INCEPTION_HOST | 連接地址,docker-compose啟動(dòng)的請(qǐng)配置為容器名或者docker的ip地址 |
GO_INCEPTION_PORT | goInception的連接端口,默認(rèn)4000 |
BACKUP_HOST | 備份庫(kù)鏈接HOST,用于頁(yè)面展示回滾語(yǔ)句 |
BACKUP _PORT | 備份庫(kù)鏈接端口 |
BACKUP_USER | 備份庫(kù)鏈接用戶(hù) |
BACKUP_PASSWORD | 備份庫(kù)鏈接密碼 |
該配置信息,僅僅用于archery從備份庫(kù)查詢(xún)回滾語(yǔ)句使用,該配置信息不會(huì)被goInception服務(wù)使用,goInception連接備份庫(kù)使用的數(shù)據(jù)庫(kù)連接信息應(yīng)在其自身的config.toml中配置。
5.2 SQL查詢(xún)
配置項(xiàng) | 說(shuō)明 |
---|---|
INCEPTION_HOST | Inception連接HOST,用于SQL查詢(xún)語(yǔ)法解析,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 |
是否開(kāi)啟SQL查詢(xún)脫敏的Inception檢測(cè),平臺(tái)的SQL查詢(xún)功能依靠Inception的語(yǔ)法樹(shù)打印來(lái)解析查詢(xún)語(yǔ)句中包含的庫(kù)、表、字段信息,從而進(jìn)行數(shù)據(jù)脫敏
- 開(kāi)啟QUERY_CHECK后,如果遇到Inception無(wú)法解析的語(yǔ)句,則會(huì)直接拋出錯(cuò)誤信息,禁止查詢(xún)
- 關(guān)閉QUERY_CHECK后,如果遇到Inception無(wú)法解析的語(yǔ)句,系統(tǒng)不再進(jìn)行數(shù)據(jù)脫敏,會(huì)有數(shù)據(jù)泄露的風(fēng)險(xiǎn),請(qǐng)謹(jǐn)慎選擇
- 動(dòng)態(tài)脫敏不支持的語(yǔ)法:嵌套子查詢(xún)、部分非單字段函數(shù),如concat(phone,’,’)、max(id+num)
DATA_MASKING: 是否開(kāi)啟動(dòng)態(tài)脫敏,會(huì)利用inception語(yǔ)法樹(shù)打印,結(jié)合后臺(tái)設(shè)置的脫敏字段和脫敏規(guī)則,對(duì)查詢(xún)數(shù)據(jù)進(jìn)行脫敏。遇到無(wú)法解析的語(yǔ)句是報(bào)錯(cuò)還是返回未脫敏的數(shù)據(jù)同樣由QUERY_CHECK參數(shù)控制 * 正常脫敏:
開(kāi)啟QUERY_CHECK后執(zhí)行不支持語(yǔ)句
關(guān)閉QUERY_CHECK后執(zhí)行不支持語(yǔ)句
- MAX_EXECUTION_TIME: 在線(xiàn)查詢(xún)超時(shí)時(shí)間閾值,單位秒,默認(rèn)60,超時(shí)的語(yǔ)句會(huì)被終止并返回提示信息,目前僅支持MySQL
- ADMIN_QUERY_LIMIT: 超級(jí)管理員的查詢(xún)限制行數(shù),超級(jí)管理員查詢(xún)數(shù)據(jù)時(shí)不做權(quán)限校驗(yàn),僅由該參數(shù)設(shè)置最大行數(shù)
5.3 SQL優(yōu)化
配置項(xiàng) | 說(shuō)明 |
---|---|
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) | 說(shuō)明 |
---|---|
INDEX_PATH_URL | 系統(tǒng)首頁(yè)路徑,默認(rèn)是SQL工單頁(yè)面 |
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)限組名,新用戶(hù)首次登錄自動(dòng)關(guān)聯(lián), 老用戶(hù)請(qǐng)手動(dòng)配置 |
DEFAULT_RESOURCE_GROUP | 默認(rèn)資源組名,新用戶(hù)首次登錄自動(dòng)關(guān)聯(lián), 老用戶(hù)請(qǐng)手動(dòng)配置 |
DEFAULT_RESOURCE_GROUP | 默認(rèn)資源組名,新用戶(hù)首次登錄自動(dòng)關(guān)聯(lián), 老用戶(hù)請(qǐng)手動(dòng)配置 |
LOCK_TIME_THRESHOLD | 賬戶(hù)登錄失敗鎖定時(shí)間(秒) |
LOCK_CNT_THRESHOLD | 賬戶(hù)登錄失敗幾次鎖賬戶(hù) |
SIGN_UP_ENABLED | 是否開(kāi)啟注冊(cè)功能,關(guān)閉后將無(wú)法自主注冊(cè)用戶(hù) |
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Mysql錯(cuò)誤Cannot find or open table x/x from the internal問(wèn)題解決方法
這篇文章主要介紹了Mysql錯(cuò)誤Cannot find or open table x/x from the internal問(wèn)題解決方法,需要的朋友可以參考下2014-06-06mysql創(chuàng)建數(shù)據(jù)庫(kù),添加用戶(hù),用戶(hù)授權(quán)實(shí)操方法
在本篇文章里小編給大家整理的是關(guān)于mysql創(chuàng)建數(shù)據(jù)庫(kù),添加用戶(hù),用戶(hù)授權(quán)實(shí)操方法相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。2019-10-10mysql數(shù)據(jù)庫(kù)設(shè)置utf-8編碼的方法步驟
這篇文章主要介紹了mysql數(shù)據(jù)庫(kù)設(shè)置utf-8編碼的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08MySQL 數(shù)據(jù)庫(kù)跨操作系統(tǒng)的最快遷移方法
原始的是Windows 2003下的32位的MySQL數(shù)據(jù)庫(kù), 新的服務(wù)器是Sun的64位的小型機(jī),64位的MySQL數(shù)據(jù)庫(kù)。2009-02-02Mysql獲取id最大值、表的記錄總數(shù)等相關(guān)問(wèn)題的方法匯總
在做網(wǎng)站開(kāi)發(fā)時(shí),我們也許會(huì)想要取得mysql里id最大的一條記錄,這個(gè)其實(shí)很簡(jiǎn)單。這篇文章給大家整理了獲取一個(gè)表的記錄數(shù)、獲取一個(gè)表的最大id、獲取一個(gè)表的auto_increment值等相關(guān)問(wèn)題的答案,有需要的朋友們可以參考借鑒。2016-09-09使用cgroups來(lái)限制MySQL企業(yè)備份服務(wù)對(duì)資源的占用
這篇文章主要介紹了使用cgroups來(lái)限制MySQL企業(yè)備份服務(wù)對(duì)資源的占用,以限制mysqlbackup相關(guān)的進(jìn)程和線(xiàn)程對(duì)CPU和內(nèi)存的閑時(shí)消耗,需要的朋友可以參考下2015-06-06Mysql中FIND_IN_SET函數(shù)的使用及問(wèn)題
FIND_IN_SET函數(shù)用于返回字符串str在字符串列表str_list中的位置,本文主要介紹了Mysql中FIND_IN_SET函數(shù)的使用及問(wèn)題,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07