小 T 導讀:作(zuo)為(wei)薪水較為(wei)可觀(guan)的(de)(de) IT 職業之一,DBA 貌似(si)是(shi)一個門檻低、活(huo)還少(shao)的(de)(de)技術崗位(wei),只要(yao)接受過(guo)相應(ying)的(de)(de)系統性訓(xun)練,應(ying)該就可以成功入門。但想(xiang)要(yao)真正勝任(ren)這(zhe)個崗位(wei),實際卻并不容易。DBA 的(de)(de)工作(zuo)到(dao)底是(shi)怎樣的(de)(de)?它的(de)(de)前景如何?想(xiang)做(zuo)好 DBA 又(you)需(xu)要(yao)具(ju)備(bei)哪些能力?我們采訪了兩位(wei)有(you)豐(feng)富工作(zuo)經驗的(de)(de) DBA 和運維工程(cheng)師,下(xia)面(mian)一起看(kan)一看(kan)他(ta)們的(de)(de)感悟吧。
DBA 的一天是怎樣的?
分享(xiang)人:濤思數據(ju)交付工(gong)程師(shi) 董延瓊
(注:本章節 DBA 特(te)指運(yun)維 DBA)
本人不僅是一個在 IT 行業摸爬滾打(混吃等死)、兢兢業業(得過且過)十多年的從業者,也是一個有著近十年豐富工作經驗的 DBA(老油條)。在剛進職場的五年里,我在一家中字頭下面的三產做運維,主機、數據庫都有接觸,后來被朋友“坑”去創業公司玩了三年 MySQL,再后來繼續給國字頭做了三年數據庫(Oracle)運維,現在的職場身份是時序數據庫(Time Series Database)TDengine 團隊的交付工程師。
鄭(zheng)重聲(sheng)明:那種(zhong)一杯茶(cha)一包煙(yan),一張表(biao)導一天的快(kuai)樂日子,我(wo)根本就沒(mei)經歷過。

關于運(yun)維(wei) DBA 的工作,其(qi)實和中醫治病的理念有點像(xiang),在(zai)此引(yin)用一下魏文(wen)侯(hou)問(wen)扁(bian)鵲三兄弟醫術的故(gu)事,很有意思。對話是這樣的:
魏文(wen)候問扁鵲:“你們兄弟三(san)人,哪一位(wei)醫術最(zui)精呢?”
扁鵲回答說:“大哥(ge)醫術最精,二哥(ge)次之,我最差。”
魏(wei)文候又問:“那為什么我沒有(you)聽說過他們(men)呢?”
扁鵲解釋說:“大(da)哥(ge)于(yu)病(bing)視神,在疾病(bing)還未形成時(shi)就(jiu)將其(qi)除掉了(le),大(da)家(jia)都(dou)沒(mei)怎么見過他(ta)(ta)治(zhi)病(bing),所以他(ta)(ta)的名聲傳(chuan)不(bu)出(chu)家(jia)門;二哥(ge)治(zhi)病(bing),是在疾病(bing)剛剛萌芽時(shi)就(jiu)治(zhi)愈它了(le),大(da)家(jia)都(dou)只見到(dao)他(ta)(ta)治(zhi)一些不(bu)嚴(yan)重的小病(bing),所以他(ta)(ta)的名聲也不(bu)出(chu)于(yu)鄰里之間(jian);而(er)我通常是等病(bing)發展到(dao)一定程度才發現,通過針刺血脈、投(tou)湯藥、割皮(pi)解肌來治(zhi)病(bing)。大(da)家(jia)都(dou)認為我擅長治(zhi)療各種疑(yi)難雜(za)癥(zheng),因此(ci)聞名于(yu)諸侯之間(jian)。”
現在估計很多 DBA 都會有類似的(de)想法。理想的(de)工作就是每天處理一(yi)下小問題,調(diao)調(diao)優,防患于未然,爭取將大問題都掐死在搖籃里(li),剩余時(shi)間就是看看資料,提(ti)升(sheng)一(yi)下自己,平平淡(dan)淡(dan)地“混過(guo)”每一(yi)天。但很不(bu)幸的(de)是,如果真的(de)抱著這樣的(de)想法,那么(me)你(ni)離被裁也就不(bu)遠了,因為你(ni)在老板(ban)眼(yan)里(li)就是個無所事事,混跡在職場中打醬油(you)的(de)“老油(you)條”。
其實我們換位思考一(yi)下也就能理解了(le),如果你(ni)是老(lao)板,一(yi)個(ge)員工整(zheng)天(tian)沒啥(sha)正事,除(chu)了(le)聊天(tian)打屁,就是上網看書,系統(tong)一(yi)年(nian)也沒有出現過啥(sha)大問題,身(shen)為老(lao)板的你(ni)是不是也感(gan)覺這(zhe)人力成本花的有點(dian)冤(yuan)。
而與之相反的(de)另一種情況是,你的(de)員工每天(tian)忙(mang)(mang)忙(mang)(mang)碌(liu)碌(liu),加班處理問題,好幾次重(zhong)大問題都及時有效(xiao)地解決了,避免造成更重(zhong)大的(de)損(sun)失。你是不是感覺(jue)這招人的(de)錢花的(de)還(huan)(huan)比較值,甚至年終還(huan)(huan)想發點錢鼓勵他再接再厲(li)。
轉到價值觀積極的一面,如果你是個積極上進(年少無知)的 DBA,每天應該怎么安排自己的工作呢?
其實和(he)運(yun)維(wei)(wei)(wei)相關的(de)工作,性質都差不多,不管是運(yun)維(wei)(wei)(wei) DBA、主機(ji)工程師(shi)或網絡管理員。說(shuo)到(dao)運(yun)維(wei)(wei)(wei),就一定要(yao)說(shuo)一下墨菲定律(lv)(Murphy’s Law),放在運(yun)維(wei)(wei)(wei)領域簡直太有用了。
墨菲定律主要包括以下四(si)方面:
- 任何事都沒有表面看起來那么簡單
- 所有的事都會比你預計的時間長
- 會出錯的事總會出錯
- 如果你擔心某種情況發生,那么它就更有可能發生
對應到運維(wei)領域(yu)就是:
- 簡單的小問題,可能是某個喪心病狂的程序員的大 Bug,一旦忽視,就可能把你盡心維護的數據庫搞崩;
- 備份恢復的時間,永遠都超過你所估計的時間;
- 高危操作通常都會出事(普通操作一樣有風險);
- 如果你擔心庫掛了沒有備份恢復,那么備份大概率不能用。
相應的(de)應對措施則是:
- 刨根求底,每個小問題都搞清楚,不放棄任何隱患;
- 把計劃時間乘以 10,能多長就多長(把泡茶、抽煙、上廁所也算在內);
- 提前做好預案的預案,提前為某個操作失敗想辦法;
- 每天檢查備份,條件運行多備幾份,反正存儲不花自己的錢。
將以上四點貫徹到底,你就擁有了無比充實(累死累活)的運維 DBA 的一天。當然事情也不是絕對,以上大部分內(nei)容都是在討(tao)論(lun)傳統的關系型(xing)數(shu)據庫,如 Oracle、MySQL、PostgreSQL 等,對于其它的諸如 InfluxDB、TDengine、TiDB 等新興數(shu)據庫就又另(ling)當別論(lun)了。
以 TDengine 為例(當然這種安裝包(bao)不到 100 MB 的 Database 通(tong)常(chang)是不配擁有(you)專屬 DBA 的):
- 安裝步驟不到三步
- 運維命令不超過 50 個
- 參數不到 100 個
DBA 除了升級、重啟,貌似就沒啥工作可干了。
DBA 的發展已經沒前途了嗎?
分享人:濤(tao)思(si)數據交(jiao)付工程師(shi) 董延瓊
如果篤定(ding)地(di)說(shuo)數據庫 DBA 沒有前途,那可能(neng)有些(xie)武斷了(le)(le)。但某些(xie) DBA 的前途確實渺茫(mang)了(le)(le),比如 DB2 和 Sybase 的 DBA 們。可能(neng)有的小伙伴不太了(le)(le)解這兩(liang)個產(chan)品,要知道,DB2 當年的風頭還在 Oracle 之上。不禁要緬懷(huai)一句,“舞榭歌臺(tai),風流總被,雨打風吹去”。
至于數據庫 DBA 這個新興的小鮮肉,說(shuo)不定哪天也會被(bei)掃進(jin)歷(li)史的垃圾堆。但還不是(shi)現在。
我們隨(sui)便打開(kai)一個(ge)招聘網站(zhan),輸入(ru) DBA 就(jiu)可(ke)以看到招聘的(de)(de)職(zhi)位(wei),薪(xin)資(zi)范圍在 15~60K 之(zhi)間,看起來(lai)還是蠻誘人的(de)(de)。

從涉及(ji)的數(shu)據(ju)庫(ku)(ku)產品來看(kan),主(zhu)要以 Oracle、MySQL、PostgreSQL 為主(zhu)。僅從招(zhao)聘(pin)信息來看(kan),數(shu)據(ju)庫(ku)(ku) DBA 的“錢途(tu)”還是有(you)的。但在(zai)這個“盛世(shi)”下,有(you)人還在(zai)擔心數(shu)據(ju)庫(ku)(ku) DBA 的未來發展,不過也是有(you)跡可循的。
2018 年(nian),Oracle 推出(chu)了全球首款,也是唯一(yi)一(yi)款自治數據倉庫——Oracle Autonomous Database Warehouse ,它可以用更低的成本為客戶(hu)提供更高(gao)的性能、可用性和安全性,帶(dai)來現代化的云端體驗(yan),為全面(mian)迎接自治時代成功奠基(ji)。
“自治(Autonomous)”是云技術的一個跨越,它不僅可以在無需人工干預的情況下,對業務運行的設施進行自動更新、調整和修復,還能幫助企業節約管理成本、快速部署項目并顯著降低風險,為企業客戶帶來全新的上云體驗。這意味著 Oracle 已經開始搶它自己 DBA 的飯碗了。
不止是 Oracle 這種老牌數據庫廠商,新的數據庫廠商其實也在進行運維革命了。新興的時(shi)序(xu)數據庫 TDengine 在其官網首頁中描述產品的特性時(shi),提到了(le)零管(guan)理:安裝、集(ji)(ji)群幾秒搞定,無任何依賴,不用分庫分表,系統運行(xing)狀態監測能與 Grafana 或(huo)其他(ta)運維工具無縫集(ji)(ji)成(cheng)。不論(lun)技術(shu)上如何實現,至少在理論(lun)上,已經致力于盡力減少運維工作(zuo)了(le)。

我(wo)記(ji)得(de)之前上 MBA 時,老師(shi)組織過一場(chang)討論(lun),論(lun)題是 AI 會(hui)不會(hui)取代大部分人類工(gong)作。我(wo)當時的觀點很明確,會(hui)的,因為這(zhe)就是我(wo)們(men)研究 AI 的目的。
最開(kai)(kai)始入職 IT 行業(ye)(ye)時(shi),搞(gao)定一個系(xi)(xi)統上(shang)線是(shi)個非(fei)常(chang)復雜的工(gong)作,需要先將服務器上(shang)架,再安裝相應的操作系(xi)(xi)統,還(huan)要配置網(wang)絡(luo)(luo)、連接(jie)存儲(chu),隨便搞(gao)搞(gao)就要一周的時(shi)間。發展到(dao)現在,阿里云從下單到(dao)開(kai)(kai)通不到(dao)十分鐘,整個過程(cheng)(cheng)(cheng)中的主(zhu)機工(gong)程(cheng)(cheng)(cheng)師(shi)、網(wang)絡(luo)(luo)工(gong)程(cheng)(cheng)(cheng)師(shi)、存儲(chu)工(gong)程(cheng)(cheng)(cheng)師(shi)等古早職業(ye)(ye)都(dou)消失了。
要知道,阿里云不止有云主機,還有云數據庫,你不需要再關心底層架構,只有付錢就可以了,甚至不需要進行維護,最多關心一下磁盤是否夠用,DBA 的工作就這樣被極大地簡化了。如果從這個角度來看,數據庫 DBA 的前途確實堪憂了。
那么已經是 DBA 的同學,或是剛成為 DBA 的同學應該怎么辦呢?不(bu)論(lun)任何職(zhi)業(ye),只要不(bu)想被淘汰,那就必須讓自己做的工作成為不(bu)可取代的那部分(fen)。
那 DBA 有哪些工作是很難取代的呢?我們先來梳理一下 DBA 的工作內容:
- 業務建模:根據業務場景,設計庫和表結構
- SQL 優化:對業務 SQL 進行優化,提升效率
- 安裝部署:部署數據庫產品
- 系統調優:調整數據庫參數,優化性能
- 應急處理:處理緊急問題,如數據庫故障、數據誤刪除
- 備份恢復:不需解釋
對于以上工作內容,第(di) 3、4 項在云環境里已經沒什(shen)么意義了;而第(di) 2 項,對于擁有高級解析器的數據(ju)庫產品,如(ru) Oracle 來說(shuo),也沒什(shen)么必要了;第(di) 6 項完(wan)(wan)全(quan)看實際(ji)需要,簡單的備份恢復自動化就可以完(wan)(wan)成,更定制(zhi)化的則需要人工干預(yu)。
那么現在來看,就只剩下了第 1、5 項工作必須要人工來完成了。每個系統所對應的業務場景都是獨一無二的,并不存在一個“包打天下”的統一的建模方式,從這個角度來說,快速熟悉業務場景是 DBA 至關重要的能力。
只要是 IT 系統,不管設計的多么智能,都可能會出現 Bug。能夠深入了解產品、快速應對意外情況、及時提出解決方案的 DBA ,在此時就是最稀缺的。
綜上所述,雖(sui)然目(mu)前(qian)數據(ju)庫 DBA 的(de)前(qian)途和“錢途”都還是有(you)的(de),但也不(bu)(bu)能盲目(mu)樂觀,還要不(bu)(bu)斷(duan)提(ti)升自(zi)己(ji)才不(bu)(bu)會被淘汰掉,追趕我(wo)們的(de)不(bu)(bu)止是技術,還有(you)“后浪”。
想做好時序數據庫 DBA,需要具備哪些能力?
分享人(ren):濤思(si)數(shu)據交(jiao)付工程師 肖波
想(xiang)勝任 DBA 這個職(zhi)業(ye),應該具備哪些必備能力?大家討論的(de)比較多的(de)大都是關系型數據庫(ku)的(de) DBA ,下面我會從時序(xu)數據庫(ku)角度來談下個人觀點。
- 持續學習的能力
時序(xu)數(shu)(shu)據庫是一個(ge)新的方(fang)向,它采(cai)用(yong)(yong)的技(ji)術架構普遍與關(guan)系庫不(bu)同。例(li)如,在數(shu)(shu)據索引(yin)結構的選擇上,關(guan)系型數(shu)(shu)據庫大多采(cai)用(yong)(yong) B+ 樹(shu),時序(xu)數(shu)(shu)據庫則(ze)多采(cai)用(yong)(yong) LSM 樹(shu);而且結合時序(xu)數(shu)(shu)據的特點,時序(xu)數(shu)(shu)據庫多采(cai)用(yong)(yong)列式存儲方(fang)式。
以 TDengine 為例,它(ta)采用就是(shi) LSM 樹(shu),加上(shang)列式(shi)存儲、一個設(she)備一張(zhang)表(biao)的設(she)計,在應(ying)對物聯網(wang)時(shi)(shi)序數據(ju)的場景時(shi)(shi)就會很(hen)有(you)優(you)勢(shi)。如果你還停留在 B+ 樹(shu)的語境里(li),那將很(hen)難理解這種設(she)計的優(you)勢(shi)和特點(dian),高效運維(wei)自然無(wu)從談起(qi)。這種技術架構的差(cha)異導致技術實現也會有(you)很(hen)大不(bu)同,DBA 只有(you)不(bu)斷學習,才能掌握關(guan)鍵(jian)點(dian),做好本職工作。
- 對計算機系統深入理解
目前數據庫系(xi)(xi)統大多運行于 Linux 系(xi)(xi)統上(shang),一個合格的(de) DBA 不能只滿(man)足于對(dui)(dui)計算機系(xi)(xi)統的(de)一般性認識,還需要深(shen)入(ru)了(le)解系(xi)(xi)統的(de)工(gong)作(zuo)(zuo)原理,對(dui)(dui)內存分配回收、進程調度、網絡管理等(deng)都要有(you)(you)深(shen)刻的(de)理解,對(dui)(dui)如何分析、定(ding)位操(cao)作(zuo)(zuo)系(xi)(xi)統問題也要有(you)(you)深(shen)刻認識。只有(you)(you)做到(dao)這些(xie),才能迅速定(ding)性、定(ding)位實際工(gong)作(zuo)(zuo)中遇到(dao)的(de)問題。
- 深入了解存儲系統
目前(qian)的(de)(de)(de)(de)(de)時序數(shu)據(ju)(ju)庫大(da)(da)多采(cai)用(yong)分布式(shi)架(jia)構,在分布式(shi)架(jia)構下如(ru)何保證數(shu)據(ju)(ju)的(de)(de)(de)(de)(de)一(yi)(yi)致(zhi)性、特別是(shi)海量(liang)數(shu)據(ju)(ju)的(de)(de)(de)(de)(de)一(yi)(yi)致(zhi)性是(shi)一(yi)(yi)個(ge)特別大(da)(da)的(de)(de)(de)(de)(de)挑戰。傳統(tong)大(da)(da)數(shu)據(ju)(ju)平臺(tai)有利用(yong) HBase 作為存(cun)儲系(xi)統(tong)的(de)(de)(de)(de)(de),新一(yi)(yi)代的(de)(de)(de)(de)(de)時序數(shu)據(ju)(ju)庫有自研存(cun)儲系(xi)統(tong)的(de)(de)(de)(de)(de),也有采(cai)用(yong)開(kai)源的(de)(de)(de)(de)(de)分布式(shi)存(cun)儲系(xi)統(tong)作為存(cun)儲方(fang)案的(de)(de)(de)(de)(de)。作為一(yi)(yi)個(ge) DBA,確保數(shu)據(ju)(ju)安全(quan)是(shi)最重(zhong)要(yao)的(de)(de)(de)(de)(de)工作,這就(jiu)要(yao)求(qiu)你必須深入了解(jie)所(suo)使用(yong)的(de)(de)(de)(de)(de)數(shu)據(ju)(ju)庫的(de)(de)(de)(de)(de)存(cun)儲架(jia)構,才能制訂出合理的(de)(de)(de)(de)(de)數(shu)據(ju)(ju)備(bei)份、恢復(fu)、災備(bei)方(fang)案。
- 熟悉主流高級語言的數據庫接口及框架
時序(xu)數據庫的(de)寫(xie)入(ru)吞吐一般比(bi)關(guan)系型數據庫要(yao)高若干個數量(liang)級,一般后者(zhe)每秒(miao)寫(xie)入(ru)數百條(tiao)記(ji)(ji)錄(lu)就(jiu)算不少了(le),但時序(xu)數據庫每秒(miao)寫(xie)入(ru)經常要(yao)達(da)到(dao)幾十萬(wan),甚至數百萬(wan)條(tiao)記(ji)(ji)錄(lu)。聚焦(jiao)寫(xie)入(ru)問題(ti)上,除(chu)了(le)數據庫本身(shen)的(de)性能調(diao)優,還(huan)涉及(ji)到(dao)各(ge)語言(yan)連接器(qi)、框架的(de)使用方法(fa)是否正確。要(yao)想成為合格的(de)時序(xu)數據庫 DBA,你(ni)需(xu)要(yao)對連接器(qi)、框架非(fei)常了(le)解。
當(dang)然,除了寫入(ru),查詢(xun)是另一個重點(dian)。調優時序數據庫的查詢(xun)性能,除優化本身參數外,對主流語(yu)言框架如何構造查詢(xun)語(yu)句也要有深入(ru)了解,這會大(da)大(da)縮(suo)短(duan)很多復雜查詢(xun)問題的定(ding)位時間。
- 對數量級的敏感
隨(sui)著(zhu)各行業的(de)(de)(de)不斷發(fa)展,海量的(de)(de)(de)數(shu)(shu)(shu)據寫入、讀出帶來的(de)(de)(de)問(wen)題和(he)挑戰比起從前更(geng)加頻發(fa),定(ding)性問(wen)題的(de)(de)(de)關鍵是需(xu)要 DBA 對數(shu)(shu)(shu)量級(ji)有超(chao)過一般人的(de)(de)(de)敏感度。除了 CPU 負荷(he)外,磁(ci)盤吞吐(tu)量、IOPS、網(wang)絡吞吐(tu)、PPS、隊(dui)列長度深度、各類(lei)耗時(shi)等都需(xu)要 DBA 反復(fu)不停地(di)比較、計(ji)算,直到(dao)找到(dao)問(wen)題的(de)(de)(de)主要原因。對數(shu)(shu)(shu)量級(ji)的(de)(de)(de)高敏感度可(ke)以大大減(jian)少問(wen)題定(ding)性、分(fen)析時(shi)間。
除了(le)上述的(de)(de)(de)能力加持外,DBA 最重要也最基礎(chu)(chu)的(de)(de)(de)能力其實(shi)是——基礎(chu)(chu)知識牢(lao)固、邏輯分析能力強(qiang)、思維清晰(xi)。很多人認為有 Oracle 的(de)(de)(de)認證、微軟(ruan)的(de)(de)(de)認證很重要,我覺得(de)那只能證明他曾(ceng)經(jing)具有一定(ding)(ding)的(de)(de)(de)學(xue)習能力。一個 DBA 的(de)(de)(de)能力強(qiang)弱,具體體現在他定(ding)(ding)位、解決一個問題的(de)(de)(de)速度,這里面除了(le)經(jing)驗(yan)以外,扎實(shi)的(de)(de)(de)基礎(chu)(chu)知識、良好的(de)(de)(de)訓練、科學(xue)的(de)(de)(de)分析方法論才是可靠的(de)(de)(de)“屠(tu)龍刀”。
寫在最后
如果你有志于成為一名時序數據庫 DBA,那你一定不能錯過 8 月 13 日我們在北京·昆泰嘉瑞文化中心舉辦的「TDengine 開發者大會」,本次會議上不僅會有多位基礎軟件領域知名大咖貢獻精彩演講與趨勢解讀,還會有金融、車聯網等行業知名企業分享數據架構升級經驗。此外,TDengine 3.0 版本也將(jiang)重(zhong)磅發(fa)布,核心研發(fa)人(ren)員將(jiang)首(shou)次對外分(fen)享創新思路,進一步加深你對時序數據庫技術(shu)實現和(he)架構創新的思考。


























