有句話說,工欲善其事,必先利其器,在MySQL方向尤其如此。
技術規劃的時候,會發現有一些事情需要前置,比如說MySQL裡面的工具,如果等到實際碰到了各色的問題再來統一,就比較難了。有溝通成本,人力成本,技術沉澱和持續交付等等的成本,這些最好提前和團隊有一個基本的溝通,達成一個共識。內部統一了以後,和開發同學規範統一就有了一個基線。
大體來說,我考慮了以下幾個方面
的工具
:
l
運維管理工具
l
資料備份恢復工具
l
資料庫最佳化工具
l
客戶端工具
l
效能測試工具
l
資料庫版本管理工具
l
資料庫審計工具
1.
運維管理工具
要說
MySQL
運維工具,當仁不讓
Percona-toolkit,
它應該是我們學習
MySQL
需要熟練使用的一個運維工具。
Percona-tooolkit
通常簡稱為
pt
工具,
pt
工具
其實是工具
Maatkit
和
Aspersa
的組合,它們
都出自同一個作者
:
Baron Schwartz
;其中,
Maatkit
工具更偏重於資料庫層面,最開始就是
P
erl
的基因。而
Aspersa
的範疇更傾向於系統層面,比如磁碟資訊等。
在
2017
年開始進入了
3.0
時代,所以線上使用的版本幾乎都是
2.2
(自
2013
年),距今已經跨越了好幾個年頭。
pt
工具被
Percona
收至麾下,有專門的
專案
維護,
2.
資料備份恢復工具
在資料備份和恢復方面,主要依據是邏輯備份和物理備份,行業裡主要有以下的一些備份工具:
(1)
m
ysqldump
,
MySQL
最經典的邏輯備份工具
,
也是
MySQL
工具集裡預設的工具,適用於一些資料量不大的資料備份工作。值得一提的是
Facebook
的生產環境都是
使用
mysqldump
進行邏輯備份
。
(2) mysqlpump ,MySQL新版本推出的備份工具,但是效果沒有想象的那麼好,最大的一個痛點應該就是備份的IO問題還是沒法大幅度擴充套件,因為都在最後備份出來的那個檔案上,沒有拆分。
(3)
mydumper,這個工具還算比價流行,能夠對原來的mysqldump做一個很好的補充。騰訊雲就是定製了mydumper來做為預設的備份工具.
另外和
Mydumper
配套的工具是
myloader,
作為資料的批次匯入工具。
(4
) Xtrabackup,來自Percona的工具,擅長做物理備份,而且更傾向於是全備+增備結合的方式。
3
資料庫最佳化工具
(
1
)
innotop
這是一款
用
P
erl
所寫
的
MySQL
監控工具
,
可以命令列模式呼叫
展示
My
S
QL
伺服器和
Inno
DB
的執行狀況
,
下載地址
為:
目前
Github
上提供
了
兩種版本,一種是開發版(
innotop-master
),一種是
穩定版(
innotop-gtid
),推薦使用穩定版
,
使用截圖如下:
(
2
)
orzdba
orzdba
是淘寶
DBA
團隊開發出來的一個
P
erl
監控指令碼
,可以
監控
mysql
資料庫
,
也有一些磁碟和
cpu
的監控
。
使用截圖如下:
(
3
)
mytop
這是一款
類似
Linux
下的
top
命令風格的
MySQL
監控工具,可以監控當前的連線 使用者和正在執行的命令。
(
4
)
orztop
這是一款可以檢視MySQL資料庫實時執行的SQL狀況的工具,如果你習慣於用show processlist/show full processlist抓取SQL,這款工具就是一個很好的補充。
(
5
)
s
ystemtap
,
是
Linux
下的動態跟蹤工具,可以監控、跟蹤執行中的程式或
Linux
核心操作
,
它帶來的效能損耗
很小,在一些特定的場景下可以編寫
SystemTap
指令碼
來除錯一些效能問題。
4
作業系統監控
(1)
nmon
,
(Nigel’s Monitor)是由IBM 提供、免費監控 AIX 系統與 Linux 系統資源的工具
,
在系統資料採集方面使用廣泛。
歷史資料
(2)
M
pstat
,
Multiprocessor Statistics
的縮寫,是實時監控工具,
mpstat
最大的特點是
:
可以檢視多核心的
cpu
中每個
CPU
的統計資料
5 慢日誌分析工具
(
1)
m
ysqldumps
l
ow
這是
MySQL
產品包中的一個原生命令工具,它
可以
支援慢查詢的統計分析
,對
MySQL
查詢語句的監控、分析、最佳化是
MySQL
最佳化
是一個開始,相對來說,功能支援比較少。
(
2
)
pt-query-digest
經典的慢日誌分析工具
,
屬於
pt
工具的一個子集。它基於
Perl
開發,
與
mysqldumpshow
工具相比,
py-query_digest
工具的分析結果更具體,更完善
。
(
3
)
mysqlsla
該工具是
是
daniel-nichter
用
P
erl
寫的一個指令碼
,
mysqlsla
與
pt-query-digest
的作者是同一個人
,現在是主打
pt
系列工具,現在已經不再維護了。
(
4
)
Anemometer
一個圖形化顯示從
MySQL
慢日誌的
開源專案,基於
php
開發,充分
結合
了
pt-query-digest
,
Anemometer
可以很輕鬆的去分析慢查詢日誌,找到哪些
SQL
需要最佳化。
6 客戶端工具
(
1
)
SQLyog
SQLyog
是一個快速而簡潔的圖形化管理
M
y
SQL
資料庫的工具,由業界著名的
Webyog
公司出品
,
屬於付費產品。
(
2
)
Navicat
是
一套快速、可靠並價格
適當
的資料庫管理工具,專為簡化資料庫的管理及降低系統管理成本而
設計,
它的設計符合
資料庫管理員
、開發人員及中小企業的需要
,屬於付費產品。
(
3
)
MySQL Workbench
為
MySQL
設計的
ER/
資料庫建模工具
,可以支援資料庫管理,資料遷移,資料建模等功能,
它同時有
開源
和商業化的兩個版本
。
(
4
)
SQL developer
這個工具是
Oracle
推出的一款免費的資料庫管理工具,它主要支援
Oracle,
如果需要支援
MySQL
,需要額外下載一個驅動包即可使用。
7
效能監控工具
(1)
Zabbix,一個基於WEB介面的提供分散式系統監視以及網路監視功能的企業級的開源解決方案,集監控報警於一身的強大功能,在網際網路行業使用比例很高。
(
2
)
Lepus
天兔是國內的一位DBA開發的一款開源的,基於php開發的資料庫監控管理系統,可以對資料庫的實時健康和各種效能指標進行全方位的監控,它本身可以支援MySQL、
Oracle、MongoDB、Redis資料庫的監控,在慢日誌的功能設計方面很有亮點。
(
3
)
mysql-statsd,一個收集 MySQL 資訊的 Python 守護程式。並透過 StatsD 傳送到 Graphite
8
效能測試工具
業務上線,環境初始化
需要
做
烤機
測試
。
主要就是讓伺服器先吃點苦頭,看能不能經受住考驗。在一定的測試之後,我們可以
得到壓測的
資料結果
,
作為後續
上線的基準
參考。
行業裡主要的效能測試工具有以下幾類:
(1)
Sysbench
,
是一款主流的效能測試工具,本身是
開源的
,
具備多執行緒壓測能力,覆蓋硬體和軟體層面,產品隸屬於Percona
(2)
tpcc-mysql
,
是
Percona按照TPC
-
C開發的
產品
,
主要用於
My
SQL
的壓測工具
(3)
Mydbtest
,
該工具是有知名資料庫專家樓方鑫先生開發,
免安裝,上手快
,
可以針對業務做定製化壓測。
(4)
m
ysqlslap
,
mysql自帶的基準測試工具,
自
5.1.4
版開始
推出,可以
透過模擬多個併發客戶端訪問
MySQL
來執行壓力測試
9
資料庫版本管理工具
liquibase,一個資料庫重構和遷移的開源工具,透過日誌檔案的形式記錄資料庫的變更,目前日誌檔案支援多種格式,如XML, YAML, JSON, SQL等
10
MySQL
審計
資料庫審計是資料安全方面的一個重要參考,一個資料庫活動,對資料庫操作進行細粒度審計的合規性管理,對資料庫遭受到的風險行為進行告警,是藉助於稽核工具希望能夠感知的。
目前在
MySQL
審計方向主要存在以下幾類審計外掛:
(1)
官方的商業版外掛
(2)
Percona Audit Log
外掛
(3)
MariaDB
外掛
初步結論:
(1)
運維管理工具
主要考慮
Percona-toolkit,
作為預設的初始化軟體使用
(2)
資料備份恢復工具
目前還是已現有的備份恢復體系為主,採用
xtrabackup
和
mysqldump
結合的方式。
l
xtrabackup
透過物理備份,每日全備,保留
7
天備份集,版本建議為
2.4.8
l
mysqldump
備份資料字典庫,比如
mysql
,每日全備,保留
7
天備份集。
在這個基礎上在每個機房再申請一臺
binlog
備份機,透過
xtrabackup
每日全備,
binlog
備份,保留
3
天,達到基本的資料恢復需求。
注: mydumper和myloader的適用場景也比較廣,
可以
作為一些備份恢復方案或者遷移的的改進
。
(3)
MySQL
實時狀態分析工具
使用
orzdba
和
orztop
,其中
orzdba
的內容可以透過自行定製
mysqladmin
來滿足需求,
orztop
可以作為環境初始化的軟體。
(4)
作業系統監控工具使用
nmon
收集歷史資料,
mpstat
得到實時的系統監控資料
,
需要向系統部提需求定製。
(5)
慢日誌分析工具使用
pt-query-digest,
需要調研從
Lepus
中抽取出慢日誌的邏輯單獨呼叫。日誌系統的部分需要和馳騁進一步溝通。
(6)
客戶端工具
使用
workbench
,推薦開發同學使用
workbench,
需要內部整理出操作文件
(7)
效能測試工具
主要使用
sysbench
在業務上線,環境初始化中做拷機測試,壓測硬體(
IO,CPU,MEM
)等,壓測
MySQL
,歷時至少一週。在這個基礎上使用
tpcc-mysql,mydbtest
做輔助測試。主要目標是透過壓測的部分得到一些關鍵的參考指標(
IOPS,TPS,QPS
)等。
(8)
MySQL
審計工具
使用建議選定
Percona
的審計外掛
Audit Log
和
MariaDB
的
Server Audit
,目前定位為
DDL
敏感,
root
使用者敏感,根據後期的測試,
MariaDB
的
Server Audit
外掛功能全面,優先選用。
10款最佳的MySQL GUI工具,資料庫管理員的好幫手
MySQL是最廣泛使用和流行的開源資料庫之一,圍繞它有許多工具,可以讓設計,建立和管理資料庫的過程變得更加容易和便捷。但是如何選擇最適合自己需求的工具,並不容易。這裡為大家推薦10款MySQL的GUI工具,它們對開發人員和DBA來說都是不錯的解決方案。
1.dbForge Studio for MySQL
它是一款多功能的GUI工具,也是一個IDE,其中包含MySQL資料庫開發和維護所需的廣泛特性。它可以建立和執行查詢,開發和除錯儲存,自動化資料庫物件管理,透過直觀的介面分析表資料等等。
dbForge Studio提供豐富的程式碼格式化功能,可用於建立和修改程式碼配置檔案,以標準化程式碼並使程式碼儘可能乾淨;它支援MariaDB資料庫;能夠在CRUD生成器的幫助下為SQL檔案的SELECT,INSERT,UPDATE和DELETE語句建立結果指令碼。
2.MySQL Workbench
MySQL Workbench是面向資料庫架構師,開發人員和DBA的統一可視工具。它提供了用於設計,開發和管理資料庫的各種功能。它有3個版本可用-社群,標準和企業版。社群版是一個免費的開源版本,提供了一組基本功能,其餘兩個是具有擴充套件功能的商業版本。
MySQL Workbench允許檢視伺服器狀態和執行狀況以及伺服器日誌;由Oracle開發,因此MySQL Workbench與MySQL的所有最新功能相容;它適用於Windows,Linux和Mac OS X。
3.phpMyAdmin
phpMyAdmin是一個用PHP編寫的基於Web的MySQL管理工具。它是同類工具中最受歡迎的工具之一,主要是因為它使用起來非常容易並且完全免費。它可能缺少其他工具提供的某些高階功能,但是其基本功能足以幫助你建立功能強大的網站,而無需具備MySQL的高階知識。
它滿足大多數基於Web的計算機都可以輕鬆訪問;易於安裝和使用;提供80種語言支援。
4.HeidiSQL
HeidiSQL是一款輕量級的免費軟體工具,可用於處理資料庫,包括瀏覽或編輯資料,建立和修改表,管理使用者許可權或其他任務。除了Windows,它還可以與Linux發行版一起使用。
它可以透過SSH隧道連線到MySQL資料庫;允許將ASCII和二進位制檔案批次插入表中;可移植版本中可用,不需要安裝或管理許可權。
5.Toad Edge for MySQL
Toad Edge for MySQL提供了用於資料庫開發和管理的工具集,其功能包括模式比較和同步,SQL查詢監控器,強大的資料匯入和匯出,資料庫快照建立,高階JSON編輯器等。Toad Edge適用於 Windows和Mac OSX。
它具有強大的JSON資料瀏覽器/編輯器功能;會話檢視器,可以跟蹤當前會話,終止它們或取消查詢;
6.SQLyog
SQLyog是適用於Windows的MySQL管理解決方案,提供三種付費版本。它還具有免費試用版,可讓你在購買許可證之前測試軟體。因為具有廣泛的功能列表,所以付費試用在所難免。可以同步資料和模式,執行計劃的備份,匯入外部資料等等。
它具有各種主題的可自定義使用者介面;多執行緒查詢執行;允許從架構定義生成SQL DML語句的快捷方式。
7.Navicat for MySQL
Navicat for MySQL是資料庫開發人員和管理員的一組工具,與MySQL,MariaDB和雲資料庫相容。各種各樣的功能使你能夠簡化資料庫開發過程,並在執行各種管理任務時提高工作效率。該工具提供三個付費版本,並提供14天的全功能免費試用,以幫助你評估其功能。
它適用於Windows,Mac OS X和Linux;允許將連線設定,模型,查詢和虛擬組同步到Navicat Cloud,以便可以隨時隨地與同事共享。能夠在Windows版本中列印計劃報告。
8.Aqua Data Studio
Aqua Data Studio是用於關聯式資料庫,雲資料庫和NoSQL資料庫的通用IDE,具有強大的可視資料分析功能。它可以直觀地構建查詢,為實體關係圖建模,在Excel樣式的網格中編輯資料以及執行其他資料庫開發和管理任務。
利用該工具強大的視覺化分析功能,建立資料視覺化並與同事和客戶共享;使用一組開放的API在指令碼開發環境中開發和除錯指令碼;檢視查詢執行計劃及其統計資訊,以瞭解如何提高整體伺服器效能。
9.Valentina Studio
Valentina Studio可以建立和維護資料庫,查詢,物件關係等。免費版包括基本功能,例如編輯模式和為其建立圖表,伺服器管理,程式碼完成等。付費的Pro版本提供了附加功能,例如報表設計器,查詢生成器等。
它提供各種資料庫持續整合工具;支援具有獨特抽象連結的Valentina資料庫,它們使開發人員可以使用API和SQL命令來建立,刪除和修改表之間的連結,連結和取消連結記錄等;有免費的iOS版本
10.Sequel Pro
Sequel Pro是一個免費的MySQL資料庫管理工具,它可以執行所有基本任務,例如新增,修改,刪除,瀏覽和過濾資料庫,表和記錄,執行查詢等。Sequel Pro僅可在Mac OS X上執行。該工具是CocoaMySQL資料庫管理應用程式的延伸產品。
它透過TCP/IP協議輕鬆連線到資料庫;支援所有版本的MySQL;輕巧易用。