你不知道的MySQL第三方運維工具

Yearning

1.1 Yearning簡介

Yearning開源的MySQL SQL語句審覈平臺,提供數據庫字典查詢、查詢審計、SQL審覈等多種功能。

Yearning 1.x版本需要Inception提供SQL審覈及回滾功能

Inception是集審覈、執行、回滾於一體的自動化運維繫統,它是根據MySQL代碼修改過來的,工作模式和MySQL相同。Yearning是基於python實現的Web版人機交互界面。

Yearning 2.0 版本開始無需Inception,已自己實現了SQL審覈及回滾功能。

Yearning1.0 python版本已不再進行官方維護,Yearning2.0 golang版本爲後續維護項目。建議使用Yearning2.0

1.2 Yearning功能

  • SQL查詢
    • 查詢導出
    • 查詢自動補全
  • SQL審覈
    • 流程化工單
    • SQL語句檢測
    • SQL語句執行
    • SQL回滾
    • 歷史審覈記錄
  • 推送
    • 站內信工單通知
    • Email工單推送
    • 釘釘webhook機器人工單推送
  • 其他
    • todoList
    • LDAP登錄
  • 用戶權限及管理
    • 拼圖式細粒度權限劃分

1.3 功能界面

  • dashboard

dashboard主要展示Yearning各項數據包括用戶數/數據源數/工單數/查詢數以及其他圖表。個人信息欄內用戶可以修改密碼/郵箱/真實姓名,同時可以查看該用戶權限以及申請權限。

  • 我的工單

展示用戶提交的工單信息。對於執行失敗/駁回的工單點擊詳細信息後可以重新修改sql並提交;對於執行成功的工單可以查看回滾語句並且快速提交SQL。

  • DDL審覈

DDL相關SQL提交審覈、查看錶結構、索引,SQL語法高亮、自動補全。

  • DML審覈

DML相關SQL提交審覈,SQL語法高亮/自動補全。所有的SQL只有在檢測後錯誤等級爲0時提交按鈕纔會激活

  • 數據庫管理

添加/編輯/刪除數據源。所有添加的數據源應在添加之前點擊測試連接按鈕進行連接性測試,保證連接性。

數據源分爲查詢數據源、非查詢數據源。

  • 用戶權限管理
  • 審覈規則管理

Canal

canal譯意爲水管、管道,主要用途是基於MySQL數據庫增量日誌解析,提供增量數據訂閱和消費。早期阿里巴巴因爲杭州和美國雙機房部署,存在跨機房同步的業務需求,實現方式主要是基於業務trigger獲取增量變更。從2010 年開始,業務逐步嘗試數據庫日誌解析獲取增量變更進行同步,由此衍生出了大量的數據庫增量訂閱和消費業務。

基於日誌增量訂閱和消費的業務包括以下內容:

  • 數據庫鏡像
  • 數據庫實時備份
  • 索引構建和實時維護(拆分異構索引、倒排索引等)
  • 業務cache刷新
  • 帶業務邏輯的增量數據處理

當前的canal支持源端MySQL版本包括5.1.x、5.5.x、5.6.x、5.7.x、8.0.x

2.1 canal工作原理

canal工作原理類似mysql主從同步:

  • canal模擬MySQL slave的交互協議,僞裝自己爲MySQL slave,向MySQL master發佈dump協議
  • MySQL master收到dump協議請求,開始推送binlog給canal
  • canal解析binlog

2.2 canal應用場景

該技術在拉勾網址爲搜索業務中得到了應用,場景:在企業HR發佈、更新或刪除職位時,我們需要及時更新職位索引,便於求職者能快速搜索到。

DataX

3.1 DataX簡介

DataX是阿里巴巴集團內被廣泛使用的離線數據同步工具、平臺。實現了包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS等各種異構數據源之間高效的數據同步功能。

設計理念:爲了解決異構數據源同步問題,DataX將複雜的網狀的同步鏈路變成了星型數據鏈路,DataX作爲中間傳輸載體負責連接各種數據源。當需要接入一個新的數據源的時候,只需要將此數據源對接到DataX,便能跟已有的數據源做到無縫數據同步。

DataX框架設計:

DataX本身作爲離線數據同步框架,採用Framework+plugin架構構建。將數據源讀取和寫入抽象成爲Reader/Writer插件,納入到整個同步框架中。

  • Reader:Reader爲數據採集模塊,負責採集數據源的數據,將數據發送給Framework。
  • Writer: Writer爲數據寫入模塊,負責不斷向Framework取數據,並將數據寫入到目的端。
  • Framework:Framework用於連接reader和writer,作爲兩者的數據傳輸通道,並處理緩衝,流控,併發,數據轉換等核心技術問題。

DataX插件體系:

DataX Framework提供了簡單的接口與插件交互,提供簡單的插件接入機制,只需要任意加上一種插件,就能無縫對接其他數據源。經過幾年積累,DataX目前已經有了比較全面的插件體系,主流的RDBMS數據庫、NOSQL、大數據計算系統都已經接入。DataX目前支持數據如下:

percona-toolkit

4.1 percona-toolkit簡介

MySQL數據庫是輕量級、開源數據庫的佼佼者,因此有很多功能強大第三方的衍生產品,如percona-toolkit,XtraBackup等。percona-toolkit是一組高級命令行工具的集合,可以查看當前服務的摘要信息,磁盤檢測,分析慢查詢日誌,查找重複索引,實現表同步等等。
percona-toolkit工具是MySQL一個重要分支產品percona的,它是一組命令的集合。

4.2 percona-toolkit 安裝

工具包的下載地址:https://www.percona.com/downloads/percona-toolkit/LATEST/

安裝過程很簡單,下載解壓即可。

4.3 常用命令

4.3.1 pt-query-digest

pt-query-digest是用於分析慢查詢的工具,它可以分析binlog、General_log、slowlog,也可以通過showprocesslist或者mysqldumpslow命令進行分析。可以把分析結果輸出到文件中,分析過程是先對查詢語句的條件進行參數化,然後對參數化以後的查詢進行分組統計,統計出各查詢的執行時間、次數、佔比等,可以藉助分析結果找出問題進行優化。

使用示例:

  • 直接分析慢查詢文件:
pt-query-digest slow_OAK.log > slow_report.log
  • 分析最近24小時內的查詢
pt-query-digest --since=24h slow_OAK.log > slow_report.log
  • 分析只含有select語句的慢查詢
pt-query-digest --filter '$event->{fingerprint} =~ m/^select/i'
slow_OAK.log> slow_report.log

4.3.2 pt-index-usage

pt-index-usage命令能夠連接到MySQL數據庫服務器,讀取慢查詢日誌,並使用EXPLAIN詢問MySQL如何執行每個查詢。分析完成時,它打印出一個關於查詢沒有使用的索引的報告。

對於我們已有的生產環境,隨着系統運行的時間越長,DML操作越來越慢,這可能和我們最初設計的索引是有關的(變慢的情況很多),項目一旦上線,很少會有人去關注索引的使用情況。某些索引是從create開始就沒使用過,這無形中就給MySQL增加了維護負擔,任何對該表的DML操作,都要維護這些
沒有被使用的索引。我們可以使用pt-index-usage工具找出哪些索引一直沒有被使用,然後進行刪除。

pt-index-usage語法格式如下:

pt-index-usage [OPTION...] [FILE...]

使用示例:

  • 打印報告
pt-index-usage /path/to/slow_OAK.log --host localhost
  • 報告寫入數據庫表(生產上使用應小心,他可能會增加負載)
pt-index-usage slow.log --no-report --save-results-database percona

4.3.3 pt-table-checksum

pt-table-checksum命令可以檢查主從複製一致性。pt table checksum通過在主機上執行校驗和查詢來執行在線複製一致性檢查。如果發現任何差異,或者出現任何警告或錯誤,則工具的“退出狀態”爲非0該命令將連接到本地主機上的複製主機,對每個表進行校驗和,並報告每個檢測到的複製副本的結果。

使用示例:

  • 比較lagou數據庫的差異情況,在主庫上面執行:
./pt-table-checksum --no-check-binlog-format --nocheck-
replication-filters --databases=lagou --replicate=lagou.checksums --
host=192.168.95.130 -uroot -proot
  • 比較lagou庫哪些表有差異
./pt-table-checksum --no-check-binlog-format
--nocheck-replication-filters --databases=lagou --replicate=lagou.checksums 
--replicate-check-only --host=192.168.95.130 -uroot -proot

MySQLMTOP

5.1 MySQLMTOP簡介

MySQLMTOP 是一個由Python+PHP開發的開源MySQL企業監控系統。該系統由Python實現多進程數據採集和告警,PHP實現Web展示和管理,優點如下:

  • MySQL服務器無需安裝任何Agent,只需在監控WEB界面配置相關數據庫信息
  • 啓動監控進程後,即可對上百臺MySQL數據庫的狀態、連接數、QTS、TPS、數據庫流量、複製、性能慢查詢等進行實時監控。
  • 可以在數據庫偏離設定的正常運行閥值(如連接異常,複製異常,複製延遲) 時發送告警郵件通知到DBA進行處理。
  • 可以對歷史數據歸檔,通過圖表展示數據庫近期狀態,以便DBA和開發人員能對遇到的問題進行分析和診斷。

MySQLMTOP 發展歷史如下:

  • 2014年01月,開源MySQLMTOP企業MySQL監控系統正式上線並開源
  • 2014年06月,MySQLMTOP進行重構,加入了Oracle、Mongodb、Redis的支持,正式更名爲Lepus
  • 2014年08月,Lepus 成功取得商業軟件著作權
  • 2015年01月,開源MySQLMTOP被評爲2014優秀開源軟件
  • 2015年01月,Lepus正式開源,並建立官方網站向大家免費提供服務
  • 2015年06月,Lepus網站軟件下載總數量統計超過10000+,並廣泛應用於各大互聯網企業生產數據庫的監控
  • 2017年01月,Lepus代碼託管至github,網站軟件下載總數量統計超過30000+

5.2 MySQLMTOP功能

MySQLMTOP主要功能如下:

5.2.1 實時MySQL狀態監控和警報

MySQLMTOP 持續監視MySQL的基本狀態和性能信息,包括數據庫連接狀態,啓動時間,數據庫版本,總連接數,活動進程,QPS,TPS,進出MySQL數據庫的流量信息。在數據庫狀態異常或偏離正常基準水平時發出報警郵件通知。

5.2.2 實時MySQL複製監控

MySQLMTOP自動發現MySQL複製拓撲結構,自動監視數據庫的延時和binlog信息,可以瞭解所有 MySQL主服務器和從服務器的性能、可用性和運行狀況。並在問題(如從服務器延遲)導致停機前向管理員提供改正建議。

5.2.3 遠程監控雲中的 MySQL

適合於雲和虛擬機的設計,能遠程監視MySQL服務器不需要任何遠程代理器。
5.3.4 直觀管理所有 MySQL

MySQLMTOP提供一個基於Web的界面,可令全面深入地瞭解數據庫性能、可用性、關鍵活動等;直觀地查看一臺服務器、自定義的應用組或所有服務器。一組豐富的實時圖形和歷史圖形將幫助您深入瞭解詳細的服務器統計信息。

5.3.5 可視化MySQL慢查詢分析

監視實時查詢性能,查看執行統計信息,篩選和定位導致性能下降的 SQL 代碼。結合使用Information Schema可直接從MySQL服務器收集數據,無需額外的軟件或配置。

5.3.6 性能監控

監視影響 MySQL 性能的主要指標。如Key_buffer_read_hits、Key_buffer_write_hits、Thread_cache_hits、Key_blocks_used_rate、Cre

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章