MySQL 開源工具集合

MySQL 開源工具集合

上次聊到MySQL官方運維工具。這次再瞭解下常用的開源工具。

目前已收集的並在實際環境中使用過的開源工具如下:

MySQL 開源工具集合

可以說掌握了這些工具(原理和使用技巧),MySQL的日常運維就更簡單。

備註:介紹中圖片部分是開源社群的,部分是自己按照思路畫的,畫圖有助於理解。

線上DDL變更

pt-osc&gh-ost都是線上變更ddl的工具。

pt-osc在於觸發器原理

MySQL 開源工具集合

gh-ost不依賴於觸發器,透過模擬從庫,在binlog中獲取增量變更,再非同步應用到ghost表

MySQL 開源工具集合

備註:最終都會有RENAME表名的動作。

備份恢復工具

xtrabackup 二進位制線上熱備份工具,支援增量備份。目前物理備份中唯一的選擇。全量方面,其實mysql8。0 clone也算是不錯的選擇。(高版本innobackupex已廢棄)

MySQL 開源工具集合

mydumper是多線邏輯備份工具,一些自研產品常用的工具,myloader是sql語句匯入工具 ,同一個軟體包,跟mydumper結合使用。

MySQL 開源工具集合

壓測工具

TPCC測試模擬了一個比較複雜的 OLTP應用環境,是一個線上零售公司。此公司對10萬種商品進行銷售,業務模型:批發零售系統,訂單處理下的資料庫的表現。

MySQL 開源工具集合

sysbench是一個開源的、模組化的、跨平臺的多執行緒效能測試工具,可以用來進行CPU、記憶體、磁碟I/O、執行緒、資料庫的效能測試。單語句INSERT,SELECT,UPDATE下的資料庫的表現。

MySQL 開源工具集合

區別在於TPCC測試的業務流程,sysbench測試的單語句執行效能。按照自需選擇測試工具。

閃回工具

有時會誤刪或者誤更新資料,binlog格式必須為row,且binlog_row_image=full,並且保留下來的情況下。可以分析binlog迴轉SQL語句進行恢復。就是delete→insert ,insert→delete,update→update方式按照時間順序倒序回放。常用的工具有binlog2sql和MyFlash。

大眾點評 binlog2sql:

資料庫服務必須線上狀態

開發語言Python 2。7, 3。4+

僅支援 MySQL 5。6, 5。7

美團點評 MyFlash:

僅支援MySQL 5。6與5。7

只能回滾DML(增、刪、改)

開發語言c,mysqlbinlog工具配合sed、awk

離線解析

MyFlash做的效能對比:

MySQL 開源工具集合

binlog2sql是要分析資料庫執行中的一些狀態 和 BINLOG_DUMP協議獲取binlog內容

mysqlbinlog是因為要把binlog解析的不是標準的SQL語句

MyFlash是直接生成標準sql語句,效率上更高

慢日誌分析

pt-query-digest是 Percona-Toolkit 的元件之一,非常不錯的日誌分析工具,優於mysqldumpslow,可以從普通日誌、慢查詢日誌、二進位制日誌以及show processlist和tcpdump中對SQL進行分析。

MySQL 開源工具集合

MySQL 開源工具集合

主從一致性驗證

pt-table-checksum 是 Percona-Toolkit 的元件之一,用於檢測MySQL主、從庫的資料是否一致。其原理是在主庫執行基於statement的sql語句來生成主庫資料塊的checksum,把相同的sql語句傳遞到從庫執行,並在從庫上計算相同資料塊的checksum,最後,比較主從庫上相同資料塊的checksum值,由此判斷主從資料是否一致。recursion-method 方式選擇host方式。

MySQL 開源工具集合

其他

undrop-for-innodb分析ibd檔案進行資料恢復工作。當誤刪除資料、無備份,且確保本地ibd檔案沒有寫入,資料能恢復。但中文解析可能失敗需注意。

innodb_rub

innodb_ruby 主要可檢視innodb資料庫資料表的各種儲存,解析innodb的檔案,用於學習資料庫底層的一些儲存。

備註:這裡可以結合官方innnchecksum,分析MySQL8。0的ibd檔案結構,便於做個類似的工具

SQL稽核web工具

基於Python 及 Django,利於二次開發改造,有開發能力,可以參考。主要是依賴於pt-toolkit進行整合開發的。

Yearning

自動化SQL語句稽核,可對SQL進行自動檢測並執行。DDL/DML語句執行後自動生成回滾語句。前身是Inception。

Archery

整合SQL查詢、稽核、執行、備份、慢日誌管理等功能。

客戶端圖形化管理工具

主要解決資料庫管理員、程式開發者提供視覺化的SQL開發、資料操作、以及資料庫管理功能,易學易用。特別是資料匯入匯出功能和二進位制資料轉化圖片方面,比較方便。但對於DBA來說是一個潛在的風險,長時間使用這些工具,命令列易忘記。

從上到下推薦:

Navicat

SQLyog

HeidiSQL:採用 Delphi 開發,支援 Windows 作業系統。支援 MySQL、MariaDB、Percona Server 和微軟的 SQL Server

MySQL Workbench 官方管理重量級工具

PhpMyAdmin 安裝部署比較麻煩,早期使用的多

總結

對於MySQL5。7版本這些工具目前支援的都非常友好,但8。0版本目前很多工具不相容。

工具就是替代一部分功能,提高效率的。MySQL運維中提高工作效率,就需要引入這些工具,也需要使用得當,理解並熟悉用法,才是運維之道。

崔虎龍,雲和恩墨MySQL技術顧問,長期服務於金融、遊戲、物流等行業的資料中心,設計資料儲存架構,並熟悉資料中心運營管理的流程及規範,自動化運維等。擅長MySQL、Redis、MongoDB資料庫高可用設計和運維故障處理、備份恢復、升級遷移、效能最佳化。自學通過了MySQL OCP 5。6和MySQL OCP 5。7認證。2年多開發經驗,10年資料庫運維工作經驗,其中專職做MySQL工作8年;曾經擔任過專案經理、資料庫經理、資料倉庫架構師、MySQL技術專家、DBA等職務;涉及行業:金融(銀行、理財)、物流、遊戲、醫療、重工業等。

百度搜索“墨天輪”,檢視更多技術乾貨!