我本人是從2020年開始做國產(chǎn)數(shù)據(jù)庫的替換,彼時趕上華為芯片斷供的新聞,和從事芯片的朋友聊起這事。他說了一句話,芯片代工斷供,只是大家所看到的最終結(jié)果,其實連芯片設(shè)計軟件都不能自主,說不定還有更多軟件是被卡脖子。
說者無心,聽者有意。我評估了一下公司手頭的數(shù)據(jù)庫,超過一半都是國外的商業(yè)數(shù)據(jù)庫。即便是開源的MySQL,也有了商業(yè)版。如果哪天真到了數(shù)據(jù)庫軟件斷供那天,不再為中國的企業(yè)提供任何服務(wù),我們該怎么辦?退回當(dāng)年大規(guī)模用盜版,還是替換成國產(chǎn)數(shù)據(jù)庫?第二天來到公司,我就開始在研究市面上各類國產(chǎn)數(shù)據(jù)庫,也在測試環(huán)境開始做一些實驗。那段時間同事和領(lǐng)導(dǎo)對我的行為褒貶不一,有的覺得我想法很好,有的覺得我多管閑事。我的理由也很明確,即便現(xiàn)在和我們沒有關(guān)系,然而刀子砍到自己身上那天真的什么都晚了。后來經(jīng)過探索和實踐,用了一年左右的時間,終于把生產(chǎn)環(huán)境的一套Oracle替換成了國產(chǎn)數(shù)據(jù)庫,這中間也有很多故事,如果單獨寫又是一篇長文。從選擇到遷移到上線,一個流程下來,讓我對國產(chǎn)數(shù)據(jù)庫替換有了實際操作層面的認知。
如果你和兩年前的我一樣,有這方面的想法,我希望能夠通過本文,帶來一些啟發(fā)給你。
Part I 換新還是換舊
很多傳統(tǒng)企業(yè),尤其是信息化時間比較久的企業(yè),都有大量的老舊系統(tǒng)。因為歷史原因,仍然在運行中,有的版本早已經(jīng)過了支持期限,有的甚至負責(zé)開發(fā)的公司已經(jīng)倒閉了。這類老舊系統(tǒng)往往都跑在商業(yè)數(shù)據(jù)庫上,依托著商業(yè)數(shù)據(jù)庫的穩(wěn)定以及售后服務(wù),才勉強支撐下去。
這類系統(tǒng)我不建議去替換,除非業(yè)務(wù)部門牽頭,對系統(tǒng)進行重構(gòu)甚至重新開發(fā)。一個新數(shù)據(jù)庫,無論怎么宣傳兼容某某數(shù)據(jù)庫,實際真正跑起來,都會有很多你想象不到的坑。老舊的系統(tǒng)在很難找到開發(fā)人員的情況下,這些坑靠DBA自己是填不上的。強行替換不但會給運維帶來很多問題,也會讓正常的業(yè)務(wù)難以為繼。這不僅僅只是被人說“XXX跑的好好的,你換掉它干什么?”,而是影響公司業(yè)務(wù)運營。
對于這類系統(tǒng),我通常會定期做匯總,xxx系統(tǒng)已經(jīng)x年沒有做過更新,xxx系統(tǒng)原廠也不再提供后續(xù)支持,xxx系統(tǒng)數(shù)據(jù)庫版本過低官方已下線等等。提前把相關(guān)的風(fēng)險告知系統(tǒng)負責(zé)人或者業(yè)務(wù)部門,至于是否有預(yù)算去改造去替換,不是DBA自己能決定的。
與此同時,一些即將立項或者開發(fā)進度較為靠前的系統(tǒng),替換起來就容易很多。這類系統(tǒng)往往可以成為最早的試驗田,而這時候兼容xx數(shù)據(jù)庫的優(yōu)勢就發(fā)揮出來了。選擇一款開發(fā)人員在語法和功能上適應(yīng)更容易的產(chǎn)品,由DBA輔助,是可以完成從舊數(shù)據(jù)庫到新數(shù)據(jù)庫的替換工作。這其中如果說服項目經(jīng)理或者業(yè)務(wù)部門,需要DBA對兩種數(shù)據(jù)庫有著較為清晰認知,并且替換的理由也要立得住。切忌為了換而換。
把握住一個大原則,數(shù)據(jù)庫是為應(yīng)用系統(tǒng)服務(wù)的,應(yīng)用系統(tǒng)是為業(yè)務(wù)服務(wù)的。站在業(yè)務(wù)的角度,幫助他們降本增效才是最終目的。替換的結(jié)果如果達不到,無論新舊數(shù)據(jù)庫,都不要輕易嘗試。
Part II 什么樣的階段替換
和成熟的商業(yè)數(shù)據(jù)庫或者開源數(shù)據(jù)庫不同的是,絕大多數(shù)國產(chǎn)數(shù)據(jù)庫都處在一個告訴發(fā)展的階段。一個大版本更新的周期可能比過往的產(chǎn)品要短,功能的演進性能的提高穩(wěn)定性的進步,都肉眼可見中發(fā)生著。成熟的數(shù)據(jù)庫我們可以按照一錘子買賣的思維去做,安裝一個穩(wěn)定版本,沒有大的問題,一直用到這個系統(tǒng)下線,這也就誕生了無數(shù)上一部分提及的老舊系統(tǒng)。
然而在替換國產(chǎn)數(shù)據(jù)庫時,這種思維就沒法再繼續(xù)用下去了。穩(wěn)定階段還沒到來,后續(xù)有了大的版本更新,就要做出抉擇,是否要升級迭代。這就給了DBA一個難題,需要較為準確判斷這個數(shù)據(jù)庫產(chǎn)品的生命周期和開發(fā)階段。之前的經(jīng)驗,我會選擇先看看各家官網(wǎng)或者推送,然后和相關(guān)廠商的人去聊一下,你們產(chǎn)品未來兩三年年,有什么相關(guān)計劃?有沒有什么大的架構(gòu)調(diào)整或者大的功能變動?
接下來對這些未來可能做的大動作做個評估,會不會對自己未來的數(shù)據(jù)庫管理產(chǎn)生重大影響使得不得不升級。假如我現(xiàn)在使用一個穩(wěn)定版,如果半年后就必須做升級,那這個時間點,我寧可選擇不替換而再等等。每次數(shù)據(jù)庫升級遷移,一定都是要雞飛狗跳一下,基礎(chǔ)設(shè)施、應(yīng)用運維、業(yè)務(wù)部門都要一起折騰,不是換個磁盤插根內(nèi)存條那么簡單。
在這方面我比較保守,之前替換的時候,先選擇了一個穩(wěn)定版確認了在未來一年內(nèi),不會有哪個迭代對系統(tǒng)特別重大的變化后,才選擇進行測試,測試環(huán)境又用了三個月才進入生產(chǎn)環(huán)境。在生產(chǎn)環(huán)境剛開始運行的過程中,確實遇到了些許問題,一方面是經(jīng)驗不足,另一方面是產(chǎn)品的某些方面和宣傳有出入。經(jīng)過開發(fā)人員的繼續(xù)開發(fā),平穩(wěn)跑到現(xiàn)在。
如果你看好的數(shù)據(jù)庫是一個還在急速成長中的產(chǎn)品,那不妨參考一下我的做法。
Part III 替換的一些決定因素
中國的多數(shù)企業(yè)客戶,并不是和互聯(lián)網(wǎng)大廠一樣,有大量的技術(shù)人員在支撐。很可能幾萬人的企業(yè),IT部門只有幾十人,分攤到各個條線,留給DBA的一只手數(shù)的過來。有的甚至一個部門只有幾個人,還身兼著網(wǎng)管和采購辦公電腦的職責(zé)。直接采購和二次開發(fā)的比重也非常多。
替換多少,怎么替換,一定要和部門的人力配置相關(guān)聯(lián)。假如一個公司就你一個DBA,即便是穩(wěn)定的商業(yè)數(shù)據(jù)庫,都讓你每天的工作量超負荷,這時候千萬不要輕易動替換的念頭。因為替換的過程以及后續(xù)的運維,將是一個你無法控制的工作量,這其中還包含著你去學(xué)習(xí)一個新數(shù)據(jù)庫的時間,以及后續(xù)犯錯填坑的時間。如果反過來,部門里大家職責(zé)相對明確,你的工作內(nèi)容讓你游刃有余或者有其他同事可以幫你分擔(dān),再去評估替換數(shù)據(jù)庫。對于一些業(yè)務(wù)量不大,風(fēng)險和業(yè)務(wù)部門關(guān)系都可控的系統(tǒng),不妨考慮替換掉一些。
有的系統(tǒng)因為各種產(chǎn)品天生的不足,這類系統(tǒng)可能導(dǎo)致架構(gòu)上的臃腫,比如常見的MySQL+Hadoop,innodb引擎用來做OLTP很不錯,但是自身的先天不足,不得不用hadoop來做報表,但是hadoop的長處在于海量數(shù)據(jù)的存儲和離線計算,實時性就差了點意思。如果能有一個產(chǎn)品完成這兩樣需求,又能精簡架構(gòu)又能提高實時性,何樂而不為。
如果你是在金融行業(yè),或者有著嚴格的監(jiān)管要求,一定要提前反復(fù)閱讀監(jiān)管文件,并且和公司負責(zé)法律合規(guī)、信息安全的相關(guān)同事進行溝通,逐項核對。確保你要替換的新數(shù)據(jù)庫能夠滿足每一項監(jiān)管要求,記住那句話,部分模塊合規(guī)簡稱不合規(guī)。
還有就是,不要高估自己的學(xué)習(xí)能力和處理問題的能力。很多資深運維人員,因為經(jīng)驗豐富了,有時候就會產(chǎn)生錯覺,面對一個全新的產(chǎn)品,自己也能駕輕就熟趟過去,全然忘記了自己剛?cè)胄袝r候的狼狽景象。然而隨著年齡的增長,很可能自己學(xué)習(xí)新東西的能力已經(jīng)打了折扣,這時候面對一個新數(shù)據(jù)庫,一定要把自己當(dāng)成一個門外漢,放低預(yù)期。這樣在替換的時候,才不至于低估了難度和風(fēng)險,使得整個項目進度失控。
作為常年和數(shù)據(jù)庫打交道的人,我們都清楚,一個成熟的數(shù)據(jù)庫產(chǎn)品需要時間的磨礪,國產(chǎn)數(shù)據(jù)庫的成長同樣也需要我們給予耐心,真正做到自主可控,可能5年可能10年甚至更久。保持一顆接納并批判的心,去面對國產(chǎn)數(shù)據(jù)庫,做得好我們贊揚,做得差我們指出,才是一個積極地態(tài)度。




