MySQL 開源工具集合
本文轉(zhuǎn)載自微信公眾號「數(shù)據(jù)和云」,作者崔虎龍。轉(zhuǎn)載本文請聯(lián)系數(shù)據(jù)和云公眾號。
上次聊到MySQL官方運(yùn)維工具。這次再了解下常用的開源工具。
目前已收集的并在實(shí)際環(huán)境中使用過的開源工具如下:
可以說掌握了這些工具(原理和使用技巧),MySQL的日常運(yùn)維就更簡單。
備注:介紹中圖片部分是開源社區(qū)的,部分是自己按照思路畫的,畫圖有助于理解。
在線DDL變更
pt-osc&gh-ost都是在線變更ddl的工具。
- pt-osc在于觸發(fā)器原理
- gh-ost不依賴于觸發(fā)器,通過模擬從庫,在binlog中獲取增量變更,再異步應(yīng)用到ghost表
備注:最終都會(huì)有RENAME表名的動(dòng)作。
備份恢復(fù)工具
xtrabackup 二進(jìn)制在線熱備份工具,支持增量備份。目前物理備份中唯一的選擇。全量方面,其實(shí)mysql8.0 clone也算是不錯(cuò)的選擇。(高版本innobackupex已廢棄)
- mydumper是多線邏輯備份工具,一些自研產(chǎn)品常用的工具,myloader是sql語句導(dǎo)入工具 ,同一個(gè)軟件包,跟mydumper結(jié)合使用。
壓測工具
- TPCC測試模擬了一個(gè)比較復(fù)雜的 OLTP應(yīng)用環(huán)境,是一個(gè)在線零售公司。此公司對10萬種商品進(jìn)行銷售,業(yè)務(wù)模型:批發(fā)零售系統(tǒng),訂單處理下的數(shù)據(jù)庫的表現(xiàn)。
- sysbench是一個(gè)開源的、模塊化的、跨平臺的多線程性能測試工具,可以用來進(jìn)行CPU、內(nèi)存、磁盤I/O、線程、數(shù)據(jù)庫的性能測試。單語句INSERT,SELECT,UPDATE下的數(shù)據(jù)庫的表現(xiàn)。
區(qū)別在于TPCC測試的業(yè)務(wù)流程,sysbench測試的單語句執(zhí)行性能。按照自需選擇測試工具。
閃回工具
有時(shí)會(huì)誤刪或者誤更新數(shù)據(jù),binlog格式必須為row,且binlog_row_image=full,并且保留下來的情況下。可以分析binlog回轉(zhuǎn)SQL語句進(jìn)行恢復(fù)。就是delete→insert ,insert→delete,update→update方式按照時(shí)間順序倒序回放。常用的工具有binlog2sql和MyFlash。
大眾點(diǎn)評 binlog2sql:
- 數(shù)據(jù)庫服務(wù)必須在線狀態(tài)
- 開發(fā)語言Python 2.7, 3.4+
- 僅支持 MySQL 5.6, 5.7
https://github.com/danfengcao/binlog2sql
美團(tuán)點(diǎn)評 MyFlash:
- 僅支持MySQL 5.6與5.7
- 只能回滾DML(增、刪、改)
- 開發(fā)語言c,mysqlbinlog工具配合sed、awk
- 離線解析
https://github.com/Meituan-Dianping/MyFlash
MyFlash做的性能對比:
- binlog2sql是要分析數(shù)據(jù)庫運(yùn)行中的一些狀態(tài) 和 BINLOG_DUMP協(xié)議獲取binlog內(nèi)容
- mysqlbinlog是因?yàn)橐裝inlog解析的不是標(biāo)準(zhǔn)的SQL語句
- MyFlash是直接生成標(biāo)準(zhǔn)sql語句,效率上更高
慢日志分析
pt-query-digest是 Percona-Toolkit 的組件之一,非常不錯(cuò)的日志分析工具,優(yōu)于mysqldumpslow,可以從普通日志、慢查詢?nèi)罩?、二進(jìn)制日志以及show processlist和tcpdump中對SQL進(jìn)行分析。
主從一致性驗(yàn)證
pt-table-checksum 是 Percona-Toolkit 的組件之一,用于檢測MySQL主、從庫的數(shù)據(jù)是否一致。其原理是在主庫執(zhí)行基于statement的sql語句來生成主庫數(shù)據(jù)塊的checksum,把相同的sql語句傳遞到從庫執(zhí)行,并在從庫上計(jì)算相同數(shù)據(jù)塊的checksum,最后,比較主從庫上相同數(shù)據(jù)塊的checksum值,由此判斷主從數(shù)據(jù)是否一致。recursion-method 方式選擇host方式。
其他
- undrop-for-innodb分析ibd文件進(jìn)行數(shù)據(jù)恢復(fù)工作。當(dāng)誤刪除數(shù)據(jù)、無備份,且確保本地ibd文件沒有寫入,數(shù)據(jù)能恢復(fù)。但中文解析可能失敗需注意。
- innodb_rub
innodb_ruby 主要可查看innodb數(shù)據(jù)庫數(shù)據(jù)表的各種存儲(chǔ),解析innodb的文件,用于學(xué)習(xí)數(shù)據(jù)庫底層的一些存儲(chǔ)。
備注:這里可以結(jié)合官方innnchecksum,分析MySQL8.0的ibd文件結(jié)構(gòu),便于做個(gè)類似的工具
SQL審核web工具
基于Python 及 Django,利于二次開發(fā)改造,有開發(fā)能力,可以參考。主要是依賴于pt-toolkit進(jìn)行整合開發(fā)的。
- Yearning
自動(dòng)化SQL語句審核,可對SQL進(jìn)行自動(dòng)檢測并執(zhí)行。DDL/DML語句執(zhí)行后自動(dòng)生成回滾語句。前身是Inception。
https://github.com/cookieY/Yearning
- Archery
集成SQL查詢、審核、執(zhí)行、備份、慢日志管理等功能。
https://github.com/hhyo/Archery
客戶端圖形化管理工具
主要解決數(shù)據(jù)庫管理員、程序開發(fā)者提供可視化的SQL開發(fā)、數(shù)據(jù)操作、以及數(shù)據(jù)庫管理功能,易學(xué)易用。特別是數(shù)據(jù)導(dǎo)入導(dǎo)出功能和二進(jìn)制數(shù)據(jù)轉(zhuǎn)化圖片方面,比較方便。但對于DBA來說是一個(gè)潛在的風(fēng)險(xiǎn),長時(shí)間使用這些工具,命令行易忘記。
從上到下推薦:
- Navicat
- SQLyog
- HeidiSQL:采用 Delphi 開發(fā),支持 Windows 操作系統(tǒng)。支持 MySQL、MariaDB、Percona Server 和微軟的 SQL Server
- MySQL Workbench 官方管理重量級工具
- PhpMyAdmin 安裝部署比較麻煩,早起使用的多
總結(jié)
對于MySQL5.7版本這些工具目前支持的都非常友好,但8.0版本目前很多工具不兼容。
工具就是替代一部分功能,提高效率的。MySQL運(yùn)維中提高工作效率,就需要引入這些工具,也需要使用得當(dāng),理解并熟悉用法,才是運(yùn)維之道。