【IT168 評論】對于資料庫管理者(DBA)來說,保持資料庫運作在最佳狀态需要具備靈活,專注,快速反應的能力以及一顆冷靜的頭腦。資料庫幾乎是所有應用程式成功運作的核心,由于DBA負責組織資料,是以尋找可靠的工具幫助簡化資料庫管理流程并簡化日常維護任務是必要的。
以下這些優秀工具可以改善MySQL環境中的CLI和Web管理,SQL查詢,模式遷移以及複制和恢複。(順附Github位址,Star數量和送出數量供廣大DBA參考)

1、Mycli
Mycli項目提供MySQL指令行自動完成和文法高亮顯示,它是最流行的MySQL管理工具之一。
諸如跳轉主機和雙因素認證之類的安全限制使許多MySQL DBA隻能通過指令行通路系統。在這種情況下,心愛的GUI工具(如MySQL Workbench,Monyog等)不是合适的選擇。
使用指令行的過程中,大部分時間都花在了黑色的終端世界。Mycli最好的一點就是文法突出的豐富性。例如,它允許DBA在WHERE子句中将查詢字元串中的函數和運算符在視覺上分離出來。對于簡短的單行查詢來說,這可能不是什麼大不了的事情,但是當使用多表執行JOIN操作查詢時,這就變成了巨大優勢。
Mycli支援多行查詢和文法突出顯示,這意味着可以在檢視或優化查詢時最重要的部分,可以選擇多種文法高亮配色方案或建立自己的配色方案。
Mycli的另一個明星功能是智能完成,允許通過輸入前幾個字元來從上下文相關清單中選擇表名和列名。不需要因為忘記WHERE子句中列的名稱而放棄目前輸入運作SHOW CREATE TABLE。
▲在Mycli中的智能完成
使用Mmycli,使用者可以使用 s等來查詢,例如 fs myAlias myQuery。 這非常友善,隻要需要,就可以使用 f myAlias執行查詢。
Mycli項目使用BSD 3許可證,項目目前有44個貢獻者,1.2k送出和5k Star(位址:https://github.com/dbcli/mycli)。
2、Gh-ost
99%的MySQL資料庫管理者(DBA)在執行對MySQL表的更改時擔心會影響生産,可以考慮Gh-ost(GitHub Online Schema Migration)。Gh-ost提供MySQL模式更改,不會阻塞寫入,不使用觸發器,并且可以暫停和恢複遷移!
為什麼這個如此重要?由于MySQL 5.6提供了新的ALTER TABLE ... ALGORITHM = INPLACE DDL(資料定義語言)功能,是以有可能修改一個表而不阻塞寫操作,例如添加索引(B-tree)等常用操作。但是,在寫入(DML語句)被阻塞的情況下,最顯着的是增加了FULLTEXT索引,表空間的加密以及列類型轉換。
其他流行的線上模式更改工具(如Percona的pt-online-schema-change)通過在主伺服器上實作一組三個觸發器(INSERT,UPDATE和DELETE)來保持shadow副本表與變化同步。這會由于寫入放大而導緻較小的性能損失,但更重要的是需要七個中繼資料鎖定執行個體。這些有效地阻止了DML(資料操縱語言)事件。
由于Gh-ost使用二進制日志進行操作,是以不會受到基于觸發器的缺點影響。最後,如果伺服器出問題,可以暫停模式遷移一段時間,并在恢複後繼續。
那麼Gh-ost如何工作呢?預設情況下,Gh-ost連接配接到副本(從),辨別主節點,并在主節點上進行應用遷移。它将副本上的更改接收到binlog_format = ROW的源表中,解析日志并将這些語句轉換為在主shadow表上重新執行。它跟蹤副本上的行數,并确定何時執行原子切換(切換表)。
▲Gh-ost操作模式
Gh-ost提供了一種替代模式,可以直接在主伺服器(不管是否有從伺服器)上執行遷移,讀取主伺服器的binlog_format = ROW事件,然後将其重新應用到shadow表中。
最後一個選項可用于僅在副本上運作遷移,而不會影響主伺服器,是以可以測試或以其他方式驗證遷移。
▲Gh-ost一般流程
請注意,如果模式具有外鍵,那麼Gh-ost可能無法運作,因為此配置不受支援。oak-online-alter-table是Gh-ost的前身,DBA可以閱讀Percona首席執行官Peter Zaitsev以及OAK工具包和Gh-ost的作者和維護人員Shlomi Noach的回應,比較Gh-ost和pt-online-schema-change的性能。
Gh-ost項目使用MIT許可證,該項目目前有29個貢獻者,近1k的送出和3k Star。(Github位址:https://github.com/github/gh-ost)
3、PhpMyAdmin
MySQL工具中運作時間最長,最成熟的項目之一是用于通過Web管理MySQL的古老PhpMyAdmin工具。phpMyAdmin允許DBA浏覽和修改MySQL資料庫對象:資料庫,表,視圖,字段和索引。有多種選項可使用十幾種格式執行資料導出,修改MySQL使用者和權限,以及執行臨時查詢。
▲PhpMyAdmin狀态頁面顯示問題,連接配接/流程和流量圖
可以找到一個“狀态”頁籤,動态繪制給定資料庫執行個體問題,連接配接/程序和網絡流量以及“Advisor ”頁籤,顯示可能的性能問題清單以及如何修複的建議。
▲PhpMyAdmin開始螢幕
PhpMyAdmin使用GPLv2許可證,這是一個超過800個貢獻者的項目,112k送出和2.7k Star。線上示範可在https://demo.phpmyadmin.net/master-config/上找到。(Github位址:https://github.com/phpmyadmin/phpmyadmin)
4、Sqlcheck
SQL反模式可能會降低查詢速度,但通常需要經驗豐富的DBA和開發人員仔細研究代碼來識别和解決這些問題。Sqlcheck反映了Karwin确定的四類反模式:
·Logical database design
·Physical database design
·Query
·Application development
▲工作中的Sqlcheck
Sqlcheck可以針對不同的風險分為低風險,中風險或高風險三大級别。如果反模式清單很大,這會很有幫助,因為可以優先考慮對性能影響最大的查詢。要做的是收集一個不同的查詢清單到檔案,然後将它們作為參數傳遞給該工具。
使用從PMM示範環境收集的樣本來生成以下輸出:
Apache許可證2.0涵蓋了Sqlcheck,該項目有五個貢獻者,187個送出和1.4k Star。(Github位址:https://github.com/jarulraj/sqlcheck)
5、Orchestrator
Orchestrator是高可用性管理工具,它提供了發現MySQL環境的複制拓撲能力,通過上下連結來識别主從。它也可以通過GUI重構複制拓撲結構,提供一個拖放界面将從裝置提升為主裝置,這是一個非常安全的操作。事實上,Orchestrator拒絕任何非法操作,以免破壞系統。
最後,Orchestrator在節點遭遇失敗時可以支援恢複,因為它使用狀态的概念智能選擇正确的恢複方法,并決定使用适當的主更新過程。
Orchestrator是GitHub的Shlomi Noach提供的另一個工具。它由Apache許可證2.0涵蓋,該項目有34位貢獻者,2,780個送出和900顆Star。(Github位址:https://github.com/github/orchestrator)
▲Orchestrator為MySQL複制和恢複提供了一個視窗
除此之外,還有一個很棒的免費工具——PMM。它整合了許多最佳開源工具,包括Orchestrator的優點,以提供全面的資料庫監控和管理功能。它支援MySQL,MariaDB和MongoDB伺服器。
上述每個工具涉及到MySQL管理者角色的不同方面。這些工具是免費開源的,如果需要,也可以根據自己的環境需求進行調整,也可以不加修改地直接使用。如果你還沒有嘗試過,不妨試試!