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