我們一起聊聊DBA的自我修養(yǎng)
01引言
數(shù)據(jù)庫(kù)管理員(DBA)承擔(dān)著保障生產(chǎn)數(shù)據(jù)庫(kù)穩(wěn)定運(yùn)行的職責(zé),在完成生產(chǎn)變更、事件處置等工作的同時(shí),還應(yīng)該在哪些方面持續(xù)提升自身能力呢?本文從銀行DBA的視角,談一談“DBA的自我修養(yǎng)”。
02看山是山
日常巡檢靠人工做,耗時(shí)耗力容易遺漏。G行的經(jīng)驗(yàn)是從標(biāo)準(zhǔn)化到腳本化、再到工具化。巡檢做到位,就有了解決潛在的故障和容量風(fēng)險(xiǎn)的提前量,按標(biāo)準(zhǔn)的變更流程和變更工藝執(zhí)行更加從容,也就不易出錯(cuò)?!皞浞萏焯熳?,恢復(fù)一時(shí)難”,G行有句話“不以恢復(fù)為目的的備份都是耍流氓”,恢復(fù)測(cè)試是寫進(jìn)G行科技管理制度的強(qiáng)制要求,每年進(jìn)行檢查考核。
環(huán)境搭建效率的提升,在G行一樣是經(jīng)歷了從標(biāo)準(zhǔn)化到自動(dòng)化過(guò)程。通過(guò)軟件的Golden Image加上PaaS平臺(tái)的自動(dòng)化交付,標(biāo)準(zhǔn)一致,快捷高效。
至于升級(jí)遷移,不僅僅是升級(jí)操作本身,還有升級(jí)前各種測(cè)試,選擇最佳的升級(jí)窗口、千方百計(jì)將對(duì)業(yè)務(wù)的影響最小化,升級(jí)后組織保障,樁樁件件都得考慮周詳。當(dāng)我們歷盡艱辛終于把成百上千的數(shù)據(jù)庫(kù)升級(jí)最新版本之后,就會(huì)驚喜地發(fā)現(xiàn):最早升級(jí)的那個(gè)數(shù)據(jù)庫(kù)又該升級(jí)了...好吧,我們的經(jīng)驗(yàn)有3點(diǎn):
1、首先選擇合適的軟件版本,就是所謂的LTS(Long Time Support)版本,不僅僅是數(shù)據(jù)庫(kù)軟件,還包括中間件、操作系統(tǒng)乃至硬件,最好保持基本一致的生命周期,避免“你方唱罷我登場(chǎng)”。
2、統(tǒng)籌規(guī)劃,與應(yīng)用系統(tǒng)的架構(gòu)改造、功能升級(jí)的計(jì)劃相結(jié)合,提升測(cè)試效率,避免資源重復(fù)投入。
3、針對(duì)不同數(shù)據(jù)量、不同重要程度和不同停機(jī)窗口要求的系統(tǒng),總結(jié)對(duì)應(yīng)的升級(jí)實(shí)施工藝,分類施法,有標(biāo)準(zhǔn)可依。此外,作為“高效能人士”的DBA,在版本升級(jí)這件事情上,還是盡早養(yǎng)成“以終為始”的好習(xí)慣吧...
支持開發(fā)和測(cè)試,是G行DBA的日常工作中時(shí)間占比最多的部分。高效數(shù)據(jù)庫(kù)真的是設(shè)計(jì)出來(lái)的,而80%的數(shù)據(jù)庫(kù)性能問(wèn)題都是SQL問(wèn)題。G行一方面將SQL編寫和數(shù)據(jù)庫(kù)設(shè)計(jì)的最佳實(shí)踐寫入科技開發(fā)規(guī)范,同時(shí)引入了SQL審核工具進(jìn)行實(shí)際檢查。這里要特別提到的執(zhí)行計(jì)劃和統(tǒng)計(jì)信息收集這兩個(gè)近乎玄學(xué)的東西了。G行根據(jù)自身實(shí)際需求,定制開發(fā)了統(tǒng)計(jì)信息收集工具,可以根據(jù)表的大小、分區(qū)與否、業(yè)務(wù)運(yùn)行的時(shí)間規(guī)律以及表內(nèi)數(shù)據(jù)變化的特性,分別收集、復(fù)制乃至直接設(shè)置統(tǒng)計(jì)信息,目的就是保持SQL性能的穩(wěn)定。即便如此,Hint和SQL Profile / Baseline仍然是必不可少(這里必須給O記加個(gè)雞腿,其他兄弟繼續(xù)努力吧)。
前面說(shuō)了日常運(yùn)維、環(huán)境搭建、升級(jí)遷移、支持開發(fā)四個(gè)方面的工作,如果這四個(gè)方面做好了,數(shù)據(jù)庫(kù)的故障自然會(huì)少。但不是說(shuō)故障處置的工作不重要,相比其他方面的技術(shù)問(wèn)題,這里我們更想說(shuō)的是的DBA在故障處置中行動(dòng)標(biāo)準(zhǔn)。DBA參與故障處置,無(wú)論是不是數(shù)據(jù)庫(kù)的問(wèn)題,首先應(yīng)該讓自己進(jìn)入戰(zhàn)時(shí)狀態(tài),一切行動(dòng)聽指揮,嚴(yán)格執(zhí)行指令,主動(dòng)報(bào)告發(fā)現(xiàn);牢記降低業(yè)務(wù)影響是故障處置第一目標(biāo),快速響應(yīng),溝通表達(dá)清晰簡(jiǎn)潔,當(dāng)斷則斷。

圖1
03看山不是山
DBA往往聚焦具體的某個(gè)數(shù)據(jù)庫(kù)產(chǎn)品的運(yùn)維和研究,有時(shí)候會(huì)把一個(gè)產(chǎn)品的概念和特性等同于數(shù)據(jù)庫(kù)這個(gè)技術(shù)門類的概念和特性。其實(shí)這也不算大問(wèn)題,DBA本身就是個(gè)具體的工作,必須對(duì)一個(gè)數(shù)據(jù)庫(kù)產(chǎn)品學(xué)習(xí)透徹,不僅僅是操作,更要深入了解原理。只不過(guò)在這個(gè)數(shù)據(jù)庫(kù)產(chǎn)品百家爭(zhēng)鳴的時(shí)代,如果我們?nèi)霊蛱?,在接受新產(chǎn)品的時(shí)候會(huì)有些額外的困擾。
例如,PostgreSQL是典型的學(xué)院派,遵循中Database Cluster-Databases-Tables的經(jīng)典關(guān)系數(shù)據(jù)庫(kù)概念。如果我們把PostgreSQL里的Database Cluster與Oracle里的Cluster(Real Application Cluster)去對(duì)照理解,難免不知所云。即便是最基本的“Database”這個(gè)詞,不同的數(shù)據(jù)庫(kù)產(chǎn)品中定義也不盡相同。MySQL里的Database的范圍大致與Oracle/DB2中的Tablespace相當(dāng),盡管MySQL自己也有Tablespace這個(gè)概念;再有,Oracle的同學(xué)往往不怎么區(qū)分Schema和User,因?yàn)樵贠racle里面這兩個(gè)東西實(shí)際使用起來(lái)沒什么區(qū)別。而在DB2、MySQL之類其他數(shù)據(jù)庫(kù)中,用于認(rèn)證和權(quán)限管理的User和用來(lái)組織對(duì)象的Schema之間的區(qū)別就大了。
看山不是山,這里討論的不是哲學(xué)里共相與殊相的深?yuàn)W問(wèn)題,只是想建議DBA跳出某一個(gè)產(chǎn)品的范疇,一專多能??梢試L試一下用下面的結(jié)構(gòu)梳理一下不同的數(shù)據(jù)產(chǎn)品。

圖2
如果想了解數(shù)據(jù)庫(kù)內(nèi)部的原理,推薦學(xué)習(xí)這些材料:
1、MySQL:MySQL Internal (dev.mysql.com/doc/internals/en/ ,目前MySQL官網(wǎng)上是8.0版本的源代碼指南,實(shí)際上5.7版本的Internal手冊(cè)更加適合DBA)。
2、PostgreSQL:The Internals of PostgreSQL (www.interdb.jp/pg/),作者鈴木啟修,有中文版。
3、Oracle:Oracle Core Essential Internals for DBA,作者Jonathan Lewis(Oracle領(lǐng)域的大神,出自牛津數(shù)學(xué)系),有中文版。
04看山還是山
“廬山煙雨浙江潮,未至千般恨不消。到得還來(lái)別無(wú)事,廬山煙雨浙江潮?!碧K東坡說(shuō)的是人生,技術(shù)又何嘗不是如此。
KV數(shù)據(jù)庫(kù)、文檔數(shù)據(jù)庫(kù)、圖數(shù)據(jù)庫(kù)、時(shí)序數(shù)據(jù)庫(kù)...亂花漸欲迷人眼。我們這里想下一個(gè)判斷,且看驗(yàn)與不驗(yàn):未來(lái)10年甚至更長(zhǎng),關(guān)系數(shù)據(jù)庫(kù)仍是不可撼動(dòng)的主流。原因在于:其他數(shù)據(jù)庫(kù)解決的是技術(shù)問(wèn)題,而關(guān)系數(shù)據(jù)庫(kù)尤其是它背后的關(guān)系模型可以定義世界。讓我再次致敬偉大的Codd博士吧!
只要是關(guān)系數(shù)據(jù)庫(kù),就一定有三個(gè)必須的功能組建:SQL解析、事務(wù)管理和存儲(chǔ)引擎。集中式數(shù)據(jù)庫(kù)將三個(gè)功能做在一起,而分布式數(shù)據(jù)庫(kù)往往將三個(gè)功能分散在不同節(jié)點(diǎn)來(lái)提升擴(kuò)展性。
看山還是山,希望DBA能夠從深入到淺出,從本質(zhì)上理解數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)庫(kù)技術(shù)發(fā)展的趨勢(shì)形成自己看法。
05總結(jié)
如果問(wèn)到我們的看法,或許可以參考這段對(duì)話:
問(wèn):“他們認(rèn)為分布式數(shù)據(jù)庫(kù)是未來(lái)”。
答:“這是對(duì)的。”
問(wèn):“那我該怎么辦?”
答:“要多想?!?/span>
問(wèn):“想了以后呢?”
答:“我只能告訴你,那以前要多想?!?/span>



































