推薦幾款MySQL相關(guān)工具
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展, MySQL 相關(guān)生態(tài)也越來(lái)越完善,越來(lái)越多的工具涌現(xiàn)出來(lái)。一些公司或個(gè)人紛紛開(kāi)源出一些不錯(cuò)的工具,本篇文章主要介紹幾款 MySQL 相關(guān)實(shí)用工具。提醒下,這里并不介紹 Navicat 等這類(lèi)圖形化操作工具哦。
1. SQL 審核 web 工具
SQL 審核與執(zhí)行,可能是各個(gè)公司或團(tuán)隊(duì)比較困擾的事情。若沒(méi)有平臺(tái)工具支持,只能通過(guò)人工的方式來(lái)處理,效率低且質(zhì)量沒(méi)辦法保證。為了規(guī)范操作,提高效率,大多數(shù)團(tuán)隊(duì)可能會(huì)自己開(kāi)發(fā)或引入開(kāi)源工具。這里介紹兩款開(kāi)源免費(fèi)的 web 端 SQL 審核平臺(tái)。
Yearning
項(xiàng)目地址:
https://github.com/cookieY/Yearning
項(xiàng)目簡(jiǎn)介:
https://guide.yearning.io/
Yearning 是一款可滿(mǎn)足大部分公司 SQL 審核需求的 web 端可視化 SQL 審核平臺(tái)。在實(shí)現(xiàn)常規(guī)的 sql 審核功能外還添加了諸如數(shù)據(jù)查詢(xún)等一系列便捷的功能。
主要功能:
- 自動(dòng)化SQL語(yǔ)句審核,可對(duì)SQL進(jìn)行自動(dòng)檢測(cè)并執(zhí)行。
- DDL/DML語(yǔ)句執(zhí)行后自動(dòng)生成回滾語(yǔ)句。
- 審核/查詢(xún) 審計(jì)功能。
- 支持LDAP登錄/釘釘及郵件消息推送。
- 支持自定義審核工作流。
- 支持細(xì)粒度權(quán)限分配。
優(yōu)點(diǎn):
- 顏值高,使用流暢。
- 部分審核規(guī)則可自定義。
- 部署簡(jiǎn)單,依賴(lài)項(xiàng)少。
- 功能豐富,既能審核執(zhí)行SQL又能查詢(xún)。
- 作者在持續(xù)維護(hù),有社區(qū)支持。
Archery
項(xiàng)目地址:
https://github.com/hhyo/Archery
使用文檔:
https://archerydms.com/
Archery 定位于 SQL 審核查詢(xún)平臺(tái),旨在提升 DBA 的工作效率,支持多數(shù)據(jù)庫(kù)的 SQL 上線和查詢(xún),同時(shí)支持豐富的 MySQL 運(yùn)維功能,所有功能都兼容手機(jī)端操作。
主要功能:
- 集成 SQL 查詢(xún)、審核、執(zhí)行、備份。
- 權(quán)限區(qū)分明確,審核執(zhí)行分離。
- SQL 工單自動(dòng)審批、高危語(yǔ)句駁回。
- 快速上線其他實(shí)例。
- 慢日志管理、SQL 優(yōu)化等運(yùn)維功能。
- 支持會(huì)話管理及參數(shù)配置。
- 可集成其他工具插件。
優(yōu)點(diǎn):
- 除 MySQL 外,還支持多種主流數(shù)據(jù)庫(kù)。
- 功能更加豐富,真正做到一平臺(tái)多用。
- 具備 SQL 優(yōu)化、慢日志管理等運(yùn)維功能,對(duì) DBA 更加友好。
- 基于 Python 及 Django,利于二次開(kāi)發(fā)改造。
對(duì)于 Yearning 和 Archery ,兩者各有優(yōu)缺點(diǎn)吧,都是優(yōu)秀的開(kāi)源工具。Yearning 只適用于 MySQL ,部署簡(jiǎn)單,功能清晰明了,上手容易。Archery 支持多種數(shù)據(jù)庫(kù),部署稍微復(fù)雜些,功能更加豐富,支持諸多高級(jí)運(yùn)維功能。沒(méi)有哪個(gè)更好,只有哪個(gè)更合適。
2. binlog 解析工具
前面文章也介紹過(guò) binlog 解析相關(guān)內(nèi)容及工具。利用 binlog 解析工具我們可以清楚看到數(shù)據(jù)庫(kù)執(zhí)行過(guò)的歷史內(nèi)容,并且可以得到反向內(nèi)容可用于回滾。binlog 解析工具在 GitHub 上可以搜索到許多,這里介紹下常用的以下兩款吧。
MyFlash
項(xiàng)目地址:
https://github.com/Meituan-Dianping/MyFlash
MyFlash 是由美團(tuán)點(diǎn)評(píng)公司技術(shù)工程部開(kāi)發(fā)維護(hù)的一個(gè)回滾 DML 操作的工具。該工具通過(guò)解析 v4 版本的 binlog ,完成回滾操作。相對(duì)已有的回滾工具,其增加了更多的過(guò)濾選項(xiàng),讓回滾更加容易。
主要功能:
- 解析 binlog ,回滾各類(lèi) DML 語(yǔ)句。
- 提供原生的基于庫(kù)、表、SQL類(lèi)型、位置、時(shí)間等多種過(guò)濾方式。
- 支持 MySQL 多個(gè)版本,支持 GTID 格式。
binlog2sql
項(xiàng)目地址:
https://github.com/danfengcao/binlog2sql
binlog2sql 同樣是開(kāi)源的一款用于解析 binlog 的工具。安裝簡(jiǎn)單方便,基于 Python 開(kāi)發(fā),源碼入門(mén)簡(jiǎn)單。
主要功能:
- 可以解析出原始 SQL 、回滾 SQL 、去除主鍵的 INSERT SQL 等。
- 數(shù)據(jù)快速回滾(閃回)。
- 主從切換后新 master 丟數(shù)據(jù)的修復(fù)。
3. Percona Toolkit 工具包
官網(wǎng)地址:
https://www.percona.com/doc/percona-toolkit/3.0/index.html#
Percona Toolkit 工具包是一組高級(jí)的管理 MySQL 的工具包集,可以用來(lái)執(zhí)行各種通過(guò)手工執(zhí)行非常復(fù)雜和麻煩的系統(tǒng)任務(wù)。簡(jiǎn)稱(chēng) PT 工具,由 Percona 公司開(kāi)發(fā)維護(hù),是廣大數(shù)據(jù)庫(kù)維護(hù)人員的好幫手。
PT 工具包由各種小工具組成,不同工具有著不同的作用。主要功能包括檢查主從復(fù)制的數(shù)據(jù)一致性、檢查重復(fù)索引、歸檔數(shù)據(jù)、在線DDL等。下面簡(jiǎn)單介紹下幾款常用工具的功能:
- pt-archiver:主要用于清理、歸檔歷史數(shù)據(jù)。
- pt-duplicate-key-checker:列出并刪除重復(fù)的索引和外鍵。
- pt-kill:殺掉符合條件的數(shù)據(jù)庫(kù)連接。
- pt-online-schema-change:在線修改表結(jié)構(gòu),常用于大表 DDL 。
- pt-query-digest:分析 MySQL 日志,并產(chǎn)生報(bào)告,常用于慢日志分析。
- pt-table-checksum:校驗(yàn)主從復(fù)制一致性。
總結(jié):
本篇文章簡(jiǎn)單介紹了 SQL 審核、binlog 解析、Percona Toolkit 幾類(lèi)工具,關(guān)于各個(gè)工具的使用方法,還需各位詳細(xì)探索。感興趣的同學(xué)可以安裝學(xué)習(xí)下,好的工具能讓工作事半功倍。