MySQL基礎(chǔ)架構(gòu)自動(dòng)化測試分析
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
MySQL對于GitHub的重要性不言而喻,本文作者從MySQL的備份、自動(dòng)測試能否成功從備份恢復(fù)數(shù)據(jù)、模擬各種 master 可能掛掉的情況、自動(dòng)測試 failover 是否正常、自動(dòng)測試 schema 遷移等幾個(gè)方面說明了為何會(huì)相信MySQL自動(dòng)化。以下為譯文。
對于GitHub來說,MySQL的基礎(chǔ)架構(gòu)是非常重要的組件。MySQL給GitHub.com、GitHub的API、身份驗(yàn)證等提供服務(wù)。每個(gè)git請求都或多或少會(huì)接觸到MySQL。我們的任務(wù)是保持?jǐn)?shù)據(jù)的可用性和完整性。即使MySQL集群服務(wù)出現(xiàn)意外了,也需要能夠執(zhí)行一些任務(wù),比如繁重的清理工作、臨時(shí)更新、在線模式遷移、集群拓?fù)渲貥?gòu)、池化和負(fù)載平衡等等。我們有基礎(chǔ)設(shè)施來自動(dòng)化這些操作。在本文將分享一些例子,說明如何通過持續(xù)測試來建立我們對基礎(chǔ)設(shè)施的信任。
備份
對數(shù)據(jù)進(jìn)行備份是非常重要的。如果還沒有進(jìn)行備份,那么這就是一個(gè)潛在的問題。Percona Xtrabackup是用來為MySQL數(shù)據(jù)庫提供完整備份的工具。如果有一些已經(jīng)確定需要保存的數(shù)據(jù),也有一個(gè)專門備份數(shù)據(jù)的服務(wù)器。
除了完整的二進(jìn)制備份之外,每天還運(yùn)行幾次邏輯備份。這些備份使工程師能夠獲得最新的數(shù)據(jù)。有時(shí),他們希望從表中獲得一組完整的數(shù)據(jù),這樣他們就可以在跟生產(chǎn)數(shù)據(jù)量一樣的表上測試索引的更改是否有效,或者從某個(gè)時(shí)間點(diǎn)查看數(shù)據(jù)。Hubot允許恢復(fù)一張備份的表,當(dāng)表已經(jīng)導(dǎo)入好以后,它就會(huì)ping給我們。
數(shù)據(jù)被加載到非生產(chǎn)數(shù)據(jù)庫,該數(shù)據(jù)庫可供那些提出恢復(fù)數(shù)據(jù)要求的工程師們訪問。
最后一種進(jìn)行數(shù)據(jù)備份的方法是使用延時(shí)復(fù)制。與其說是一種備份,倒不如說是對數(shù)據(jù)的一種保障。對于每個(gè)生產(chǎn)集群,有一個(gè)延遲4小時(shí)復(fù)制的主機(jī)。假如某個(gè)查詢沒有運(yùn)行,我們會(huì)在chatops(即一種會(huì)話驅(qū)動(dòng)型開發(fā)的做法)上運(yùn)行mysql panic。這將導(dǎo)致所有的延遲復(fù)制立即停止復(fù)制,然后“呼叫”數(shù)據(jù)庫管理員。
這樣就可以使用延遲復(fù)制來驗(yàn)證是否存在問題,然后將二進(jìn)制日志快速轉(zhuǎn)發(fā)到發(fā)生錯(cuò)誤之前的位置。然后,我們可以將那個(gè)點(diǎn)之前的數(shù)據(jù)恢復(fù)到主服務(wù)器。
雖然說備份這個(gè)功能設(shè)計(jì)的很棒,但是如果一些未知或未捕獲的錯(cuò)誤導(dǎo)致備份沒有成功,它們就會(huì)變得毫無價(jià)值。使用腳本恢復(fù)備份的好處就是它允許我們通過cron(是一個(gè)linux下的定時(shí)執(zhí)行工具,可以在無需人工干預(yù)的情況下運(yùn)行作業(yè))自動(dòng)驗(yàn)證備份文件是否有效。我們?yōu)槊總€(gè)集群都設(shè)置了一臺(tái)專用主機(jī),這臺(tái)主機(jī)就是用來恢復(fù)最新的備份數(shù)據(jù)。這樣可以確保備份正常運(yùn)行,并且我們能夠從備份中檢索數(shù)據(jù)。
根據(jù)數(shù)據(jù)集大小會(huì)選擇每天進(jìn)行幾次恢復(fù)?;謴?fù)后的服務(wù)器會(huì)按照預(yù)期加入到復(fù)制流中,并能夠趕上復(fù)制。這種做法不僅僅是在測試備份文件是否可恢復(fù),而且還可以測試需要識(shí)別的時(shí)間點(diǎn)是否準(zhǔn)確。如果恢復(fù)過程中出現(xiàn)問題,我們會(huì)收到通知。
還追蹤恢復(fù)的時(shí)間,所以我們很清楚在緊急情況下建立新的副本或恢復(fù)需要多長時(shí)間。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
下載地址
MySQL基礎(chǔ)架構(gòu)自動(dòng)化測試分析下載
相關(guān)電子資料下載
- 常用于緩存處理的機(jī)制總結(jié) 如何避免緩存雪崩問題? 24
- SpringBoot物理線程、虛擬線程、Webflux性能比較 37
- mysql經(jīng)典面試題及答案 63
- 聊聊即將到來的MySQL5.7停服事件 179
- 基于Prometheus開源的完整監(jiān)控解決方案 25
- 基于控制臺(tái)的通訊錄管理系統(tǒng)功能介紹 59
- 什么是數(shù)據(jù)庫?除了MySQL還有哪些數(shù)據(jù)庫? 36
- 超好用的開源IP地址管理系統(tǒng),告別傳統(tǒng)Excel統(tǒng)計(jì)方式! 146
- Innodb中的Btree實(shí)現(xiàn)(一)·引言&insert篇 65
- 怎么查看MySQL語句有沒有用到索引 190