劉言
1引言
隨著信息科技的迅猛發(fā)展,開源數(shù)據(jù)庫軟件在銀行業(yè)逐漸普及,開源數(shù)據(jù)庫和Oracle與SQL Server數(shù)據(jù)庫等數(shù)據(jù)庫一樣被廣泛使用。為確保開源數(shù)據(jù)庫穩(wěn)定運(yùn)行,對開源數(shù)據(jù)庫Mysql的狀態(tài)監(jiān)控、性能評估、性能趨勢分析和異常告警變得非常重要。本文結(jié)合數(shù)據(jù)庫各種監(jiān)控指標(biāo),并與多種開源數(shù)據(jù)庫監(jiān)控軟件進(jìn)行對比,同時根據(jù)工作需要,建設(shè)Mysql數(shù)據(jù)庫開源監(jiān)控系統(tǒng),實現(xiàn)對Mysql數(shù)據(jù)庫服務(wù)器系統(tǒng),包括CPU、內(nèi)存和磁盤等基礎(chǔ)性能的監(jiān)控、告警;實現(xiàn)對Mysql各種常見性能指標(biāo)的監(jiān)控和趨勢分析,實現(xiàn)對Mysql運(yùn)行當(dāng)前和歷史sql語句分析。
2研究背景
我行提出打造一流數(shù)字生態(tài)銀行戰(zhàn)略,積極推行開源思路,生產(chǎn)環(huán)境中逐步安裝部署了25套Mysql社區(qū)版的Mysql數(shù)據(jù)庫。目前對Mysql數(shù)據(jù)庫監(jiān)控僅有主機(jī)和Mysql服務(wù)狀態(tài)的OVO監(jiān)控,缺少對Mysql數(shù)據(jù)庫的參數(shù)、庫表、Mysql請求、連接、會話和SQL語句等監(jiān)控??紤]在數(shù)據(jù)庫集中管理系統(tǒng)中引進(jìn)開源的Mysql監(jiān)控工具對生產(chǎn)環(huán)境中Mysql數(shù)據(jù)庫進(jìn)行專業(yè)監(jiān)控。
3PMM系統(tǒng)建設(shè)的目標(biāo)和范圍
3.1項目目標(biāo)
引入開源PMM(Percona Monitoring and Management)軟件對生產(chǎn)環(huán)境Mysql及MongoDB進(jìn)行監(jiān)控,提升對Mysql數(shù)據(jù)庫的監(jiān)控水平,便于日常監(jiān)控和排錯,提升Mysql管理水平。
3.2項目范圍
根據(jù)本次項目的實施目標(biāo),在辦公和業(yè)務(wù)環(huán)境各部署1臺CENTOS 7服務(wù)器搭建基于Docker的PMM軟件分別監(jiān)控辦公和業(yè)務(wù)環(huán)境中的Mysql數(shù)據(jù)庫服務(wù)。
4功能性需求
4.1Mysql服務(wù)器性能監(jiān)控
在分析Mysql性能時需要了解服務(wù)器CPU、內(nèi)存、網(wǎng)絡(luò)和磁盤IO等信息,在分析數(shù)據(jù)庫大小增長趨勢時需要了解服務(wù)器分區(qū)信息。在Mysql監(jiān)控工具中需要集成對操作系統(tǒng)的CPU、內(nèi)存、磁盤IO和網(wǎng)絡(luò)等監(jiān)控。
4.2Mysql參數(shù)監(jiān)控
在生產(chǎn)環(huán)境中部署的Mysql有些是按照標(biāo)準(zhǔn)步驟安裝部署,有些是應(yīng)用產(chǎn)品自帶的配置,為了了解Mysql運(yùn)行情況需要知道Mysql配置和性能相關(guān)的參數(shù)。
4.3Mysql庫表監(jiān)控
通過Mysql監(jiān)控平臺能查詢到被監(jiān)控Mysql服務(wù)器上數(shù)據(jù)庫和數(shù)據(jù)庫中表信息,包括名稱、大小以及庫和表的增長情況。
4.4Mysql歷史執(zhí)行語句記錄及分析
在生產(chǎn)問題排錯過程中很多問題可能是短時存在的,登錄Mysql服務(wù)器排查問題時如果問題未重現(xiàn),很難對問題進(jìn)行定位。需要Mysql監(jiān)控軟件對數(shù)據(jù)庫執(zhí)行語句進(jìn)行實時監(jiān)控,記錄消耗CPU和內(nèi)存等資源及造成阻塞的sql語句,對sql語句的執(zhí)行計劃進(jìn)行分析,了解語句執(zhí)行過程中使用的索引。便于對已經(jīng)出現(xiàn)過問題進(jìn)行定位。
4.5Mysql相關(guān)告警
在Mysql監(jiān)控軟件中希望能通過郵件或其他方式將超過閥值或基線的信息告警通知管理員,讓管理員能及時了解服務(wù)器中信息。
4.6Mysql語句執(zhí)行計劃分析
Mysql自帶的sql語句分析需要登錄系統(tǒng)抓取數(shù)據(jù)后才可分析,而我們希望Mysql監(jiān)控軟件能通過更簡單的方式,通過Web或客戶端的方式對已經(jīng)執(zhí)行過的sql語句進(jìn)行分析,了解語句執(zhí)行步驟、調(diào)用索引和語句執(zhí)行時間等,了解語句是否可以進(jìn)行優(yōu)化提升sql性能。
4.7Mysql高可用性監(jiān)控
目前Mysql通過HA或通過復(fù)制技術(shù)實現(xiàn)高可用性,監(jiān)控軟件需要對Mysql的可用性及高可用性進(jìn)行監(jiān)控。能檢測Mysql多主復(fù)制、主從復(fù)制和多從復(fù)制等復(fù)制狀態(tài),對復(fù)制隊列、復(fù)制延時等內(nèi)容進(jìn)行監(jiān)控,在超過閥值時可以發(fā)出告警。
5PMM系統(tǒng)建設(shè)的技術(shù)實現(xiàn)
Mysql數(shù)據(jù)庫開源監(jiān)控軟件PMM系統(tǒng)建設(shè)內(nèi)容:服務(wù)器硬件平臺、系統(tǒng)軟件、基于開源軟件的應(yīng)用開發(fā)、網(wǎng)絡(luò)系統(tǒng)、存儲系統(tǒng)、災(zāi)備與恢復(fù)系統(tǒng)、運(yùn)維監(jiān)控、開發(fā)測試環(huán)境和信息跨網(wǎng)發(fā)布等。
目前Mysql監(jiān)控軟件種類比較多,有些是偏向安裝、配置管理,有些是偏向監(jiān)控、告警。PMM是Mysql監(jiān)控告警類軟件中功能較全,擁有大量(150 000+)使用用戶,是安全、穩(wěn)定且使用簡單的開源產(chǎn)品,且無額外費(fèi)用。目前同業(yè)中已有使用PMM作為Mysql監(jiān)控工具,也部分同業(yè)對Mysql的監(jiān)控尚在摸索之中。目前生產(chǎn)環(huán)境中Mysql數(shù)據(jù)庫使用越來越多,而對Mysql的監(jiān)控不足已影響到日常Mysql的高效運(yùn)維。如引進(jìn)其他收費(fèi)的監(jiān)控產(chǎn)品,引進(jìn)產(chǎn)品周期較長;而若引入PMM開源軟件,無相應(yīng)采購等環(huán)節(jié),能較快實現(xiàn)生產(chǎn)環(huán)境Mysql監(jiān)控部署,快速解決監(jiān)控缺位問題,同時也滿足行內(nèi)優(yōu)先考慮開源軟件的指導(dǎo)思想。
6結(jié)束語
通過項目實施,對目前生產(chǎn)中的80臺服務(wù)器和156個Mysql數(shù)據(jù)庫實例實施了監(jiān)控,配置了相關(guān)Mysql功能和性能指標(biāo)告警,在生產(chǎn)出現(xiàn)異常時,PMM軟件通過郵件將異常信息通知管理員,管理員通過PMM監(jiān)控軟件查看近期Mysql服務(wù)器性能指標(biāo)和Mysql語句分析來成功定位問題原因。引入PMM開源軟件對運(yùn)維人員定位生產(chǎn)數(shù)據(jù)庫異常、監(jiān)控Mysql提供了方法,提高了運(yùn)維效率。