MySQL常用工具選擇和建議
有句話說,工欲善其事,必先利其器,在MySQL方向尤其如此。
技術(shù)規(guī)劃的時候,會發(fā)現(xiàn)有一些事情需要前置,比如說MySQL里面的工具,如果等到實際碰到了各色的問題再來統(tǒng)一,就比較難了。有溝通成本,人力成本,技術(shù)沉淀和持續(xù)交付等等的成本,這些***提前和團隊有一個基本的溝通,達成一個共識。內(nèi)部統(tǒng)一了以后,和開發(fā)同學(xué)規(guī)范統(tǒng)一就有了一個基線。
大體來說,我考慮了以下幾個方面的工具:
- 運維管理工具
- 數(shù)據(jù)備份恢復(fù)工具
- 數(shù)據(jù)庫優(yōu)化工具
- 客戶端工具
- 性能測試工具
- 數(shù)據(jù)庫版本管理工具
- 數(shù)據(jù)庫審計工具
1. 運維管理工具
要說MySQL運維工具,當(dāng)仁不讓Percona-toolkit,它應(yīng)該是我們學(xué)習(xí)MySQL需要熟練使用的一個運維工具。
Percona-tooolkit通常簡稱為pt工具,pt工具其實是工具Maatkit 和Aspersa的組合,它們都出自同一個作者:Baron Schwartz;其中,Maatkit工具更偏重于數(shù)據(jù)庫層面,最開始就是Perl的基因。而Aspersa的范疇更傾向于系統(tǒng)層面,比如磁盤信息等。
在2017年開始進入了3.0時代,所以線上使用的版本幾乎都是2.2(自2013年),距今已經(jīng)跨越了好幾個年頭。 pt工具被Percona收至麾下,有專門的項目維護,
2. 數(shù)據(jù)備份恢復(fù)工具
在數(shù)據(jù)備份和恢復(fù)方面,主要依據(jù)是邏輯備份和物理備份,行業(yè)里主要有以下的一些備份工具:
(1) mysqldump,MySQL最經(jīng)典的邏輯備份工具,也是MySQL工具集里默認(rèn)的工具,適用于一些數(shù)據(jù)量不大的數(shù)據(jù)備份工作。值得一提的是Facebook的生產(chǎn)環(huán)境都是使用mysqldump進行邏輯備份。
(2) mysqlpump ,MySQL新版本推出的備份工具,但是效果沒有想象的那么好,***的一個痛點應(yīng)該就是備份的IO問題還是沒法大幅度擴展,因為都在***備份出來的那個文件上,沒有拆分。
(3) mydumper,這個工具還算比價流行,能夠?qū)υ瓉淼膍ysqldump做一個很好的補充。騰訊云就是定制了mydumper來做為默認(rèn)的備份工具.
另外和Mydumper配套的工具是myloader,作為數(shù)據(jù)的批量導(dǎo)入工具。
(4) Xtrabackup,來自Percona的工具,擅長做物理備份,而且更傾向于是全備+增備結(jié)合的方式。
3 數(shù)據(jù)庫優(yōu)化工具
(1)innotop
這是一款用Perl所寫的MySQL監(jiān)控工具,可以命令行模式調(diào)用展示MySQL服務(wù)器和InnoDB的運行狀況,下載地址為:https://github.com/innotop/innotop
目前Github上提供了兩種版本,一種是開發(fā)版(innotop-master),一種是穩(wěn)定版(innotop-gtid),推薦使用穩(wěn)定版,使用截圖如下:
(2)orzdba
orzdba是淘寶DBA團隊開發(fā)出來的一個Perl監(jiān)控腳本,可以監(jiān)控mysql數(shù)據(jù)庫,也有一些磁盤和cpu的監(jiān)控。使用截圖如下:
(3)mytop
這是一款類似 Linux 下的 top 命令風(fēng)格的 MySQL 監(jiān)控工具,可以監(jiān)控當(dāng)前的連接 用戶和正在執(zhí)行的命令。
(4)orztop
這是一款可以查看MySQL數(shù)據(jù)庫實時運行的SQL狀況的工具,如果你習(xí)慣于用show processlist/show full processlist抓取SQL,這款工具就是一個很好的補充。
(5)systemtap,是Linux下的動態(tài)跟蹤工具,可以監(jiān)控、跟蹤運行中的程序或Linux內(nèi)核操作,它帶來的性能損耗很小,在一些特定的場景下可以編寫SystemTap腳本來調(diào)試一些性能問題。
4 操作系統(tǒng)監(jiān)控
(1) nmon,(Nigel’s Monitor)是由IBM 提供、免費監(jiān)控 AIX 系統(tǒng)與 Linux 系統(tǒng)資源的工具,在系統(tǒng)數(shù)據(jù)采集方面使用廣泛。
歷史數(shù)據(jù)
(2) Mpstat ,Multiprocessor Statistics的縮寫,是實時監(jiān)控工具,mpstat***的特點是:可以查看多核心的cpu中每個CPU的統(tǒng)計數(shù)據(jù)
5 慢日志分析工具
(1)mysqldumpslow
這是MySQL產(chǎn)品包中的一個原生命令工具,它可以支持慢查詢的統(tǒng)計分析,對MySQL查詢語句的監(jiān)控、分析、優(yōu)化是MySQL優(yōu)化是一個開始,相對來說,功能支持比較少。
(2)pt-query-digest
經(jīng)典的慢日志分析工具,屬于pt工具的一個子集。它基于Perl開發(fā),與mysqldumpshow工具相比,py-query_digest 工具的分析結(jié)果更具體,更完善。
(3)mysqlsla
該工具是是daniel-nichter 用Perl 寫的一個腳本,mysqlsla與pt-query-digest的作者是同一個人,現(xiàn)在是主打pt系列工具,現(xiàn)在已經(jīng)不再維護了。
(4)Anemometer
一個圖形化顯示從MySQL慢日志的開源項目,基于php開發(fā),充分結(jié)合了pt-query-digest,Anemometer可以很輕松的去分析慢查詢?nèi)罩?,找到哪些SQL需要優(yōu)化。
6 客戶端工具
(1)SQLyog
SQLyog 是一個快速而簡潔的圖形化管理MySQL數(shù)據(jù)庫的工具,由業(yè)界著名的Webyog公司出品,屬于付費產(chǎn)品。
(2)Navicat
是一套快速、可靠并價格適當(dāng)?shù)臄?shù)據(jù)庫管理工具,專為簡化數(shù)據(jù)庫的管理及降低系統(tǒng)管理成本而設(shè)計,它的設(shè)計符合數(shù)據(jù)庫管理員、開發(fā)人員及中小企業(yè)的需要,屬于付費產(chǎn)品。
(3)MySQL Workbench
為MySQL設(shè)計的ER/數(shù)據(jù)庫建模工具,可以支持?jǐn)?shù)據(jù)庫管理,數(shù)據(jù)遷移,數(shù)據(jù)建模等功能,它同時有開源和商業(yè)化的兩個版本。
(4)SQL developer
這個工具是Oracle推出的一款免費的數(shù)據(jù)庫管理工具,它主要支持Oracle,如果需要支持MySQL,需要額外下載一個驅(qū)動包即可使用。
7 性能監(jiān)控工具
(1)Zabbix,一個基于WEB界面的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級的開源解決方案,集監(jiān)控報警于一身的強大功能,在互聯(lián)網(wǎng)行業(yè)使用比例很高。
(2)Lepus
天兔是國內(nèi)的一位DBA開發(fā)的一款開源的,基于php開發(fā)的數(shù)據(jù)庫監(jiān)控管理系統(tǒng),可以對數(shù)據(jù)庫的實時健康和各種性能指標(biāo)進行全方位的監(jiān)控,它本身可以支持MySQL、Oracle、MongoDB、Redis數(shù)據(jù)庫的監(jiān)控,在慢日志的功能設(shè)計方面很有亮點。
(3)mysql-statsd,一個收集 MySQL 信息的 Python 守護進程。并通過 StatsD 發(fā)送到 Graphite
8 性能測試工具
業(yè)務(wù)上線,環(huán)境初始化需要做烤機測試。主要就是讓服務(wù)器先吃點苦頭,看能不能經(jīng)受住考驗。在一定的測試之后,我們可以得到壓測的數(shù)據(jù)結(jié)果,作為后續(xù)上線的基準(zhǔn)參考。
行業(yè)里主要的性能測試工具有以下幾類:
(1) Sysbench,是一款主流的性能測試工具,本身是開源的,具備多線程壓測能力,覆蓋硬件和軟件層面,產(chǎn)品隸屬于Percona
(2) tpcc-mysql,是Percona按照TPC-C開發(fā)的產(chǎn)品,主要用于MySQL的壓測工具
(3) Mydbtest,該工具是有知名數(shù)據(jù)庫專家樓方鑫先生開發(fā),免安裝,上手快,可以針對業(yè)務(wù)做定制化壓測。
(4) mysqlslap,mysql自帶的基準(zhǔn)測試工具,自5.1.4版開始推出,可以通過模擬多個并發(fā)客戶端訪問MySQL來執(zhí)行壓力測試
9 數(shù)據(jù)庫版本管理工具
liquibase,一個數(shù)據(jù)庫重構(gòu)和遷移的開源工具,通過日志文件的形式記錄數(shù)據(jù)庫的變更,目前日志文件支持多種格式,如XML, YAML, JSON, SQL等
10 MySQL審計
數(shù)據(jù)庫審計是數(shù)據(jù)安全方面的一個重要參考,一個數(shù)據(jù)庫活動,對數(shù)據(jù)庫操作進行細粒度審計的合規(guī)性管理,對數(shù)據(jù)庫遭受到的風(fēng)險行為進行告警,是借助于審核工具希望能夠感知的。
目前在MySQL審計方向主要存在以下幾類審計插件:
(1) 官方的商業(yè)版插件
(2) Percona Audit Log插件
(3) MariaDB 插件
初步結(jié)論:
(1) 運維管理工具主要考慮Percona-toolkit,作為默認(rèn)的初始化軟件使用
(2) 數(shù)據(jù)備份恢復(fù)工具目前還是已現(xiàn)有的備份恢復(fù)體系為主,采用xtrabackup和mysqldump結(jié)合的方式。
- xtrabackup通過物理備份,每日全備,保留7天備份集,版本建議為2.4.8
- mysqldump備份數(shù)據(jù)字典庫,比如mysql,每日全備,保留7天備份集。
在這個基礎(chǔ)上在每個機房再申請一臺binlog備份機,通過xtrabackup每日全備,binlog備份,保留3天,達到基本的數(shù)據(jù)恢復(fù)需求。
注: mydumper和myloader的適用場景也比較廣,可以作為一些備份恢復(fù)方案或者遷移的的改進。
(3) MySQL實時狀態(tài)分析工具使用orzdba和orztop,其中orzdba的內(nèi)容可以通過自行定制mysqladmin來滿足需求,orztop可以作為環(huán)境初始化的軟件。
(4) 操作系統(tǒng)監(jiān)控工具使用nmon收集歷史數(shù)據(jù),mpstat得到實時的系統(tǒng)監(jiān)控數(shù)據(jù),需要向系統(tǒng)部提需求定制。
(5) 慢日志分析工具使用pt-query-digest,需要調(diào)研從Lepus中抽取出慢日志的邏輯單獨調(diào)用。日志系統(tǒng)的部分需要和馳騁進一步溝通。
(6) 客戶端工具使用workbench,推薦開發(fā)同學(xué)使用workbench,需要內(nèi)部整理出操作文檔
(7) 性能測試工具主要使用sysbench在業(yè)務(wù)上線,環(huán)境初始化中做拷機測試,壓測硬件(IO,CPU,MEM)等,壓測MySQL,歷時至少一周。在這個基礎(chǔ)上使用tpcc-mysql,mydbtest做輔助測試。主要目標(biāo)是通過壓測的部分得到一些關(guān)鍵的參考指標(biāo)(IOPS,TPS,QPS)等。
(8) MySQL審計工具使用建議選定Percona的審計插件Audit Log和MariaDB的Server Audit,目前定位為DDL敏感,root用戶敏感,根據(jù)后期的測試,MariaDB的Server Audit插件功能全面,優(yōu)先選用。























