【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管理員角色的不同方面。這些工具是免費開源的,如果需要,也可以根據自己的環境需求進行調整,也可以不加修改地直接使用。如果你還沒有嘗試過,不妨試試!