高可用是數(shù)據(jù)庫(kù)系統(tǒng)的基本需求,也是數(shù)據(jù)庫(kù)技術(shù)實(shí)現(xiàn)的難點(diǎn)之一。但對(duì)于有些行業(yè)來(lái)說(shuō),“零停機(jī)”,是剛需!
比如半導(dǎo)體行業(yè),停機(jī)哪怕一分鐘都可能造成高達(dá)數(shù)萬(wàn)美元的直接經(jīng)濟(jì)損失;比如航空業(yè),航班調(diào)度系統(tǒng)一旦出現(xiàn)故障,成千上萬(wàn)的旅客行程將受到影響,航空公司可能要面臨天文數(shù)字的賠償;再比如醫(yī)療行業(yè),停機(jī)可能直接關(guān)系著患者的生命安全!
那么,支撐這些尖端產(chǎn)業(yè)的數(shù)據(jù)庫(kù)是如何實(shí)現(xiàn)近乎神話般的“零停機(jī)”的呢?
要理解這一奇跡背后的奧秘,我們必須首先識(shí)別并解決影響數(shù)據(jù)庫(kù)可靠性的幾個(gè)常見問(wèn)題:
問(wèn)題1:數(shù)據(jù)庫(kù)高可用架構(gòu)以及災(zāi)備架構(gòu)不完善
問(wèn)題2:數(shù)據(jù)庫(kù)運(yùn)行性能及穩(wěn)定性問(wèn)題
問(wèn)題3:故障應(yīng)急處理缺乏規(guī)范流程和方案
問(wèn)題4:缺少高效運(yùn)維體系
問(wèn)題5:缺少主動(dòng)式隱患梳理及預(yù)防
......
針對(duì)這些普遍問(wèn)題,中亦科技經(jīng)過(guò)多年技術(shù)與經(jīng)驗(yàn)積累,總結(jié)出以下關(guān)鍵點(diǎn)!
一
高可用架構(gòu)與災(zāi)備
堅(jiān)固基石,方能抵御風(fēng)暴
許多企業(yè)的數(shù)據(jù)庫(kù)高可用架構(gòu)及災(zāi)備體系并不完善。為了解決這一問(wèn)題,我們可以根據(jù)業(yè)務(wù)系統(tǒng)的重要性,將其分為幾個(gè)不同的等級(jí),并為每個(gè)等級(jí)量身定制相應(yīng)的高可用架構(gòu)及災(zāi)備方案。
其中核心系統(tǒng)屬于A類系統(tǒng)。A/B/C/D類業(yè)務(wù)系統(tǒng)生產(chǎn)端數(shù)據(jù)庫(kù)的架構(gòu)都是RAC集群,區(qū)別為是否配置了ADG,是采用小型機(jī)還是X86,是在一套集群上部署一套還是兩套數(shù)據(jù)庫(kù)。分類之后再進(jìn)行核心業(yè)務(wù)系統(tǒng)和核心系統(tǒng)除外的災(zāi)備架構(gòu)和實(shí)現(xiàn)方式。
核心業(yè)務(wù)系統(tǒng)高可用架構(gòu)圖
二
數(shù)據(jù)庫(kù)補(bǔ)丁管理
精準(zhǔn)施策,防范未然
適時(shí)地進(jìn)行補(bǔ)丁分析與升級(jí)至關(guān)重要。當(dāng)遇到新版本操作系統(tǒng)或數(shù)據(jù)庫(kù)安裝、季度PSU補(bǔ)丁發(fā)布等情況時(shí),就需要進(jìn)行詳盡的補(bǔ)丁分析,以避免潛在問(wèn)題。這一過(guò)程不僅需要精確的分析策略,還需要完善的補(bǔ)丁升級(jí)計(jì)劃,確保數(shù)據(jù)庫(kù)始終保持在最佳狀態(tài)。
那么,什么時(shí)候需要做補(bǔ)丁分析?
以O(shè)racle數(shù)據(jù)庫(kù)為例,當(dāng)出現(xiàn)下列情況時(shí),需要考慮做補(bǔ)丁分析:
在目標(biāo)版本的操作系統(tǒng)上安裝數(shù)據(jù)庫(kù),為了避免目標(biāo)版本的OS出現(xiàn)BUG需要分析OS需要安裝哪些補(bǔ)丁。 安裝目標(biāo)版本的數(shù)據(jù)庫(kù),為了避免新安裝數(shù)據(jù)庫(kù)出現(xiàn)嚴(yán)重BUG,需要數(shù)據(jù)庫(kù)應(yīng)該安裝哪個(gè)patchset、哪個(gè)PSU補(bǔ)丁及小補(bǔ)丁。 隨著ORACLE季度PSU補(bǔ)丁的發(fā)布,需要關(guān)注新補(bǔ)丁的分布并對(duì)嚴(yán)重性分類,需要做補(bǔ)丁分析,這樣,已有數(shù)據(jù)庫(kù)可以根據(jù)升級(jí)策略提前升級(jí)補(bǔ)丁以預(yù)防潛在問(wèn)題。 當(dāng)已有數(shù)據(jù)庫(kù)出現(xiàn)嚴(yán)重BUG,考慮安裝補(bǔ)丁時(shí),具體需要安裝哪個(gè)PSU補(bǔ)丁。
三
數(shù)據(jù)庫(kù)最佳實(shí)踐
細(xì)節(jié)決定成敗
基于多年服務(wù)經(jīng)驗(yàn),我們總結(jié)了一系列最佳實(shí)踐,覆蓋操作系統(tǒng)配置、ASM參數(shù)調(diào)整、數(shù)據(jù)庫(kù)參數(shù)優(yōu)化等多個(gè)方面。通過(guò)這些精心設(shè)計(jì)的策略,我們能夠有效消除系統(tǒng)運(yùn)行中的隱患,確保數(shù)據(jù)庫(kù)的穩(wěn)健運(yùn)行。
四
數(shù)據(jù)庫(kù)高可用測(cè)試
實(shí)戰(zhàn)檢驗(yàn),確保萬(wàn)無(wú)一失
在數(shù)據(jù)庫(kù)系統(tǒng)上線前,進(jìn)行全面的高可用測(cè)試至關(guān)重要。這包括但不限于服務(wù)器單節(jié)點(diǎn)故障、網(wǎng)絡(luò)故障、心跳網(wǎng)絡(luò)故障等場(chǎng)景。通過(guò)預(yù)先設(shè)定的測(cè)試案例,我們可以驗(yàn)證系統(tǒng)在面對(duì)各種極端條件下的表現(xiàn),確保其能夠在實(shí)際應(yīng)用中保持高度的可靠性和穩(wěn)定性。
對(duì)RAC集群高可用架構(gòu)和容災(zāi)能力進(jìn)行測(cè)試,主要包含以下幾個(gè)場(chǎng)景:
服務(wù)器單節(jié)點(diǎn)故障:服務(wù)器發(fā)生故障重啟是運(yùn)行期間常見的問(wèn)題之一,硬件故障,網(wǎng)絡(luò)故障,參數(shù)配置錯(cuò)誤等都可能導(dǎo)致服務(wù)器不穩(wěn)定或者宕機(jī);一旦服務(wù)器硬件出現(xiàn)故障,數(shù)據(jù)庫(kù)隨之也會(huì)受到影響,可能會(huì)導(dǎo)致數(shù)據(jù)庫(kù)重啟或者關(guān)閉。針對(duì)這些情況,設(shè)計(jì)兩個(gè)測(cè)試用例分別模擬單節(jié)點(diǎn)手動(dòng)重啟服務(wù)器和異常宕機(jī)時(shí)的情景。
服務(wù)網(wǎng)絡(luò)故障:本次預(yù)設(shè)的生產(chǎn)環(huán)境是雙公網(wǎng)網(wǎng)卡和雙私網(wǎng)網(wǎng)卡的rac環(huán)境,其中每組網(wǎng)卡都分為主網(wǎng)卡和備網(wǎng)卡,當(dāng)公網(wǎng)主網(wǎng)卡出現(xiàn)故障后系統(tǒng)會(huì)自動(dòng)切換到備網(wǎng)卡繼續(xù)運(yùn)行,理論上這個(gè)切換的過(guò)程會(huì)非常短、不會(huì)對(duì)業(yè)務(wù)產(chǎn)生影響;同時(shí),因?yàn)閿?shù)據(jù)庫(kù)正常運(yùn)行時(shí)不會(huì)用到備網(wǎng)卡,如果是備網(wǎng)卡發(fā)生故障業(yè)務(wù)也不會(huì)受到影響。當(dāng)公網(wǎng)雙網(wǎng)卡同時(shí)發(fā)生故障時(shí),服務(wù)器將無(wú)法對(duì)外開放。
心跳網(wǎng)絡(luò)故障:本次預(yù)設(shè)的生產(chǎn)環(huán)境是雙公網(wǎng)網(wǎng)卡和雙私網(wǎng)網(wǎng)卡的rac環(huán)境,其中每組網(wǎng)卡都分為主網(wǎng)卡和備網(wǎng)卡,當(dāng)公網(wǎng)主網(wǎng)卡出現(xiàn)故障后系統(tǒng)會(huì)自動(dòng)切換到備網(wǎng)卡繼續(xù)運(yùn)行,理論上這個(gè)切換的過(guò)程會(huì)非常短、不會(huì)對(duì)業(yè)務(wù)產(chǎn)生影響;同時(shí),因?yàn)閿?shù)據(jù)庫(kù)正常運(yùn)行時(shí)不會(huì)用到備網(wǎng)卡,如果是備網(wǎng)卡發(fā)生故障業(yè)務(wù)也不會(huì)受到影響。當(dāng)私網(wǎng)雙網(wǎng)卡同時(shí)發(fā)生故障時(shí),如果較短時(shí)間就恢復(fù),集群層面不會(huì)出現(xiàn)異常,若超過(guò)了misscount時(shí)間集群會(huì)出現(xiàn)腦裂現(xiàn)象。
服務(wù)器單節(jié)點(diǎn)HANG故障:服務(wù)器運(yùn)行期間由于硬件或軟件異常原因都有可能導(dǎo)致節(jié)點(diǎn)HANG死。操作系統(tǒng)因CPU、內(nèi)存耗盡或BUG,OS掛起,無(wú)法響應(yīng)數(shù)據(jù)庫(kù)。針對(duì)這些情況,分別設(shè)計(jì)0S無(wú)法響應(yīng)、cluster軟件關(guān)鍵進(jìn)程無(wú)響應(yīng)、cluster軟件關(guān)鍵進(jìn)程異常終止、database軟件關(guān)鍵進(jìn)程無(wú)響應(yīng)、database軟件關(guān)鍵進(jìn)程異常終止、業(yè)務(wù)作業(yè)進(jìn)程無(wú)響應(yīng)等6個(gè)大的場(chǎng)景進(jìn)行測(cè)試。
操作人員操作失誤:實(shí)際環(huán)境中,有可能存在操作人員誤操作導(dǎo)致數(shù)據(jù)丟失,本次場(chǎng)景分閃回查詢表、延遲閃回adg三個(gè)測(cè)試用例來(lái)分別模擬恢復(fù)數(shù)據(jù)。
除此之外還將對(duì)san網(wǎng)絡(luò)故障、軟件升級(jí)、HBA卡升級(jí)等場(chǎng)景進(jìn)行測(cè)試。
五
運(yùn)維體系建設(shè)
預(yù)防為主,應(yīng)對(duì)為輔
構(gòu)建全面的運(yùn)維體系是保障數(shù)據(jù)庫(kù)長(zhǎng)期穩(wěn)定運(yùn)行的基礎(chǔ)。這包括制定詳細(xì)的預(yù)防策略、建立完善的監(jiān)控機(jī)制、提供詳盡的手冊(cè)指南以及系統(tǒng)的培訓(xùn)支持。通過(guò)主動(dòng)預(yù)防而非被動(dòng)應(yīng)對(duì),我們能夠顯著降低系統(tǒng)故障率,提高整體服務(wù)質(zhì)量。
運(yùn)維體系建設(shè)關(guān)系到數(shù)據(jù)庫(kù)系統(tǒng)的持續(xù)穩(wěn)定運(yùn)行,主要內(nèi)容如下:
制定預(yù)防未來(lái)可能導(dǎo)致性能不穩(wěn)定的統(tǒng)計(jì)信息策略并實(shí)施,數(shù)據(jù)存放策略標(biāo)準(zhǔn); 提供數(shù)據(jù)庫(kù)監(jiān)控指標(biāo)體系和具體實(shí)現(xiàn)方式; 制定數(shù)據(jù)庫(kù)備份恢復(fù)策略; 提供數(shù)據(jù)庫(kù)變更手冊(cè)、應(yīng)急手冊(cè)和維護(hù)手冊(cè); 提供系統(tǒng)性的培訓(xùn)和指導(dǎo),為客戶后續(xù)的深度自主運(yùn)維奠定良好的人才基礎(chǔ)。 ... ...
為了提升業(yè)務(wù)連續(xù)性和用戶體驗(yàn),提升系統(tǒng)可用性、穩(wěn)定性、安全性,全面提升運(yùn)維質(zhì)量,我們還會(huì)制定了數(shù)據(jù)庫(kù)運(yùn)維體系說(shuō)明手冊(cè),用以指導(dǎo)數(shù)據(jù)庫(kù)的日常運(yùn)維工作。
Oracle運(yùn)維體系的模型
六
主動(dòng)式優(yōu)化與問(wèn)題梳理
防微杜漸,未雨綢繆
數(shù)據(jù)庫(kù)運(yùn)維和消防一樣,永遠(yuǎn)都是“預(yù)防重于救火”,被動(dòng)式的故障處理只能解決突發(fā)的問(wèn)題,只有主動(dòng)梳理及預(yù)防才能防患于未然,真正做到事半功倍!
中亦科技會(huì)從主動(dòng)式分析和預(yù)防及基于開發(fā)運(yùn)維最佳實(shí)踐進(jìn)行問(wèn)題梳預(yù)防進(jìn)行說(shuō)明。主動(dòng)對(duì)數(shù)據(jù)庫(kù)運(yùn)行情況進(jìn)行性能監(jiān)控,抓取性能表現(xiàn)不佳或擴(kuò)展性不佳的SQL/PLSQL并進(jìn)行主動(dòng)分析,提交優(yōu)化建議。通過(guò)梳理并預(yù)防潛在問(wèn)題,我們能夠提前發(fā)現(xiàn)并解決隱患,減少未來(lái)可能出現(xiàn)的問(wèn)題數(shù)量。
在這個(gè)信息爆炸的時(shí)代,數(shù)據(jù)庫(kù)的可靠性很關(guān)鍵。中亦科技一直在不斷的總結(jié)項(xiàng)目經(jīng)驗(yàn),培養(yǎng)專業(yè)技術(shù)團(tuán)隊(duì),完善服務(wù)體系,希望通過(guò)不斷升級(jí)的數(shù)據(jù)庫(kù)可靠性方案,提高數(shù)據(jù)庫(kù)的可用性和穩(wěn)定性!
如果您有數(shù)據(jù)庫(kù)可靠性提升的需求,歡迎留言聯(lián)系我們,我們的技術(shù)專家團(tuán)隊(duì)將竭誠(chéng)為您服務(wù)。