把握数据库发展趋势 DBA应如何避免“踩坑”?
在DTCC 2019大會(huì)上,阿里云智能數(shù)據(jù)庫(kù)產(chǎn)品事業(yè)部高級(jí)產(chǎn)品專(zhuān)家蕭少聰做了題為《如何構(gòu)建云時(shí)代DBA的知識(shí)體系》的演講,進(jìn)行云時(shí)代以后,IT行業(yè)各工種的職責(zé)都在發(fā)生變化,云數(shù)據(jù)庫(kù)使得日常DBA管理實(shí)現(xiàn)更多的自動(dòng)化,大大提高日常管理效率,同時(shí)也對(duì)于企業(yè)整體投資產(chǎn)出可以更快獲得成效。面對(duì)云數(shù)據(jù)庫(kù)的發(fā)展趨勢(shì),DBA應(yīng)如何避免“踩坑”呢?本文就為大家揭曉答案。
專(zhuān)家簡(jiǎn)介:蕭少聰(花名:鐵庵),阿里云智能數(shù)據(jù)庫(kù)產(chǎn)品事業(yè)部高級(jí)產(chǎn)品專(zhuān)家,PostgreSQL中國(guó)社區(qū)常委。
直播回放
鏈接:https://yq.aliyun.com/live/1046
議題PPT下載,戳這里!
https://yq.aliyun.com/download/3562
本文將主要圍繞以下四個(gè)方面進(jìn)行分享:
一、管理模式的變化
對(duì)于數(shù)據(jù)庫(kù)技術(shù)而言,“云”已經(jīng)成為大家無(wú)法忽視的技術(shù)趨勢(shì)。在Gartner 2018年的數(shù)據(jù)庫(kù)魔力四象限里面,云計(jì)算數(shù)據(jù)庫(kù)廠商已經(jīng)占LEADERS及VISIONARIES領(lǐng)域的絕對(duì)比例,這也代表了業(yè)界對(duì)于云的認(rèn)可。
那么,云和傳統(tǒng)架構(gòu)有什么不同呢?對(duì)于傳統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)而言,需要搭建很多的硬件,連接很多的網(wǎng)線,在自己搭建的私有云里面可能會(huì)有一些虛擬化或者容器化的架構(gòu),再往上對(duì)于DBA而言其實(shí)需要的就是一個(gè)數(shù)據(jù)庫(kù),需要能夠連接進(jìn)去進(jìn)行操作。當(dāng)然了,在傳統(tǒng)架構(gòu)下,DBA能夠?qū)?shù)據(jù)庫(kù)有更多的操作和配置,但是在云上可能只會(huì)提供一部分?jǐn)?shù)據(jù)庫(kù)配置文件的修改權(quán)限,并不會(huì)允許修改全部配置,這是因?yàn)樵茷镈BA提供的是SLA,也就是說(shuō)云數(shù)據(jù)庫(kù)提供的是服務(wù)。針對(duì)于服務(wù)而言,不太可能允許DBA去對(duì)操作系統(tǒng)進(jìn)行改變,因?yàn)檫@樣可能會(huì)破壞HA,因此會(huì)有一些限制,但是對(duì)于數(shù)據(jù)庫(kù)操作而言,依舊是通過(guò)一個(gè)端口就連接進(jìn)去的。
除了數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)之外,傳統(tǒng)架構(gòu)和云架構(gòu)在做安裝配置的時(shí)候也會(huì)有所不同。在傳統(tǒng)架構(gòu)下,DBA需要去規(guī)劃數(shù)據(jù)庫(kù)所有的一切,包括操作系統(tǒng)、硬件以及各種安裝準(zhǔn)備以及驗(yàn)收、切換等一系列演練。在云架構(gòu)之下,整體的配置、安裝以及部署是不需要DBA敲各種命令或者安裝各種業(yè)務(wù)系統(tǒng)的,操作系統(tǒng)、參數(shù)優(yōu)化以及整體的HA只需要在云控制臺(tái)上點(diǎn)擊幾下就可以配置完成,無(wú)論使用阿里的公共云還是私有云都是這樣的狀態(tài)。這些就是在管理模式方面或者在系統(tǒng)創(chuàng)建過(guò)程中已經(jīng)能夠看到的變化。
二、云數(shù)據(jù)庫(kù)VS.自建數(shù)據(jù)庫(kù)
有很多人存在這樣一個(gè)疑問(wèn)。那就是“云數(shù)據(jù)庫(kù)和自建數(shù)據(jù)庫(kù)有哪些區(qū)別?”。這里首先澄清一個(gè)概念,在阿里巴巴看來(lái),真正云托管的數(shù)據(jù)庫(kù)才是云數(shù)據(jù)庫(kù),而如果只是使用ECS云服務(wù)器來(lái)自行搭建的數(shù)據(jù)庫(kù)并不算是真正的云數(shù)據(jù)庫(kù)。
實(shí)際上,云數(shù)據(jù)庫(kù)最終提供的是一個(gè)服務(wù),其包括了系統(tǒng)的可靠性、可用性、安全、備份等一系列的東西,當(dāng)建立完云數(shù)據(jù)庫(kù)這些都是配置完成的,無(wú)需DBA進(jìn)行二次配置。當(dāng)然,如果DBA有自己配置的需求,阿里云所提供的云數(shù)據(jù)庫(kù)服務(wù)也會(huì)提供API接口進(jìn)行調(diào)配,或者也可以通過(guò)阿里云的管理平臺(tái)進(jìn)行操作,而不像傳統(tǒng)情況下需要非常高的數(shù)據(jù)庫(kù)初始建設(shè)費(fèi)用。
成本模式的變遷
對(duì)于成本而言,傳統(tǒng)情況下自己建設(shè)數(shù)據(jù)中心需要規(guī)劃好未來(lái)3到5年到底需要多少資源,所以成本是一次性提供的。此外,對(duì)于DBA而言,一般將其分為業(yè)務(wù)DBA和運(yùn)維DBA,前者為數(shù)據(jù)庫(kù)業(yè)務(wù)解決問(wèn)題,發(fā)揮功用,后者純粹地負(fù)責(zé)運(yùn)維工作,比如安裝、部署、定期進(jìn)行各種類(lèi)型的巡檢。未來(lái),運(yùn)維DBA會(huì)因?yàn)樵萍軜?gòu)的體現(xiàn)慢慢地減少,而業(yè)務(wù)DBA卻不會(huì)消亡,因此DBA應(yīng)該更加關(guān)注于企業(yè)在做什么業(yè)務(wù),數(shù)據(jù)架構(gòu)應(yīng)該如何優(yōu)化,幫助企業(yè)改變本身的運(yùn)營(yíng)狀態(tài)。
以往成本的開(kāi)支,一下子就是一臺(tái)服務(wù)器,但是如今在云上或者互聯(lián)網(wǎng)上有很多的創(chuàng)業(yè)公司,所謂的“獨(dú)角獸”就是從很小規(guī)模開(kāi)始起步,突然之間變成很大。當(dāng)這些創(chuàng)業(yè)公司小的時(shí)候或許并不需要購(gòu)買(mǎi)一臺(tái)服務(wù)器,通過(guò)云架構(gòu),就可以從很小開(kāi)始,逐漸彈性上去,這樣的彈性能力使得IT實(shí)現(xiàn)資源的釋放。如果今天還在使用傳統(tǒng)的數(shù)據(jù)庫(kù)服務(wù)器購(gòu)買(mǎi)方式,而競(jìng)爭(zhēng)對(duì)手或許就能夠?qū)⒐?jié)省下來(lái)的資金用于技術(shù)人員或者業(yè)務(wù)上去,因?yàn)闆](méi)有了固定資產(chǎn)初期的開(kāi)銷(xiāo),對(duì)于創(chuàng)業(yè)公司而言,其運(yùn)行的資金鏈也會(huì)更加健康,發(fā)展的速度也會(huì)更快。
三、云DBA知識(shí)體系構(gòu)成
隨著數(shù)據(jù)庫(kù)技術(shù)的發(fā)展,企業(yè)對(duì)于DBA的需求也不斷提高。從對(duì)于OLTP這樣的SQL數(shù)據(jù)庫(kù)和NoSQL數(shù)據(jù)的掌握,進(jìn)一步演進(jìn),為了解決性能問(wèn)題可能需要Key-Value緩存數(shù)據(jù)庫(kù),之后建立OLAP數(shù)據(jù)倉(cāng)庫(kù),再之后實(shí)現(xiàn)大數(shù)據(jù)離線分析。
而對(duì)于初創(chuàng)公司而言,就會(huì)發(fā)現(xiàn)在最開(kāi)始可能三兩臺(tái)機(jī)器就搞定了,只需要一個(gè)兼職的DBA。
進(jìn)一步當(dāng)開(kāi)始使用Key-Value緩存數(shù)據(jù)庫(kù)之后,業(yè)務(wù)越來(lái)越重,單臺(tái)服務(wù)器無(wú)法搞定,需要實(shí)現(xiàn)HA。此時(shí)就比較困難了,因此需要一個(gè)比較神奇的DBA,需要DBA什么都懂。
當(dāng)企業(yè)進(jìn)一步發(fā)展到更大的時(shí)候,可能不僅僅需要解決一套系統(tǒng)的問(wèn)題,可能需要解決多套系統(tǒng)的問(wèn)題。此時(shí)可能需要一個(gè)DBA團(tuán)隊(duì),分工會(huì)變得更為細(xì)致,不僅有專(zhuān)業(yè)的DBA,還應(yīng)該有頂尖的架構(gòu)級(jí)別DBA來(lái)解決整體問(wèn)題。
更進(jìn)一步,可能需要做數(shù)據(jù)倉(cāng)庫(kù)和大數(shù)據(jù),那么整個(gè)DBA團(tuán)隊(duì)的分工就會(huì)更加明細(xì)。
在企業(yè)的實(shí)際運(yùn)行過(guò)程中,DBA需要做大量的工作,有的時(shí)候甚至是操作系統(tǒng)的各種細(xì)節(jié)都需要了解清楚才能將數(shù)據(jù)庫(kù)調(diào)優(yōu)好。
云數(shù)據(jù)庫(kù)的理論基礎(chǔ)
而當(dāng)進(jìn)入云數(shù)據(jù)庫(kù)時(shí)代,需要看到的是另外一種景象。這里有一些云計(jì)算的新名詞,比如Region地域、AZ可用區(qū)、VPC以及VSwith等,這些都是云DBA需要了解和掌握的。從數(shù)據(jù)庫(kù)的角度來(lái)看,云數(shù)據(jù)庫(kù)的確出現(xiàn)了很多新名詞,但是數(shù)據(jù)庫(kù)基礎(chǔ)理論依然是不變的,依然會(huì)有實(shí)例、高可用、分布式、SQL、ACID和CAP等理論。
運(yùn)維簡(jiǎn)化:自動(dòng)化部署
以往都會(huì)說(shuō)需要部署一個(gè)主備集群,而今天如果想要部署主備集群也會(huì)在一個(gè)IDC中心進(jìn)行部署。如果想要部署跨IDC的主備集群,在傳統(tǒng)架構(gòu)下往往需要購(gòu)買(mǎi)光纖、光纜,并且需要確定光纖、光纜的延遲情況,判斷其所造成的延遲是否能夠接受。而在云數(shù)據(jù)庫(kù)架構(gòu)之下,這些信息都不需要進(jìn)行管理,所需要管理的就是在購(gòu)買(mǎi)云數(shù)據(jù)庫(kù)時(shí)進(jìn)行選擇,比如選擇跨中心的主備就可以直接建立起來(lái),因此這種復(fù)雜架構(gòu)的構(gòu)建并不需要自己來(lái)規(guī)劃,可以節(jié)省DBA去做傳統(tǒng)底層業(yè)務(wù)處理的時(shí)間。
運(yùn)維簡(jiǎn)化:跨地域部署及切換
除了對(duì)于傳統(tǒng)架構(gòu)比較容易的同一個(gè)城市跨AZ之外,其實(shí)如果想要實(shí)現(xiàn)跨省就會(huì)變得非常復(fù)雜了。然而,在云上就會(huì)變得非常容易,如果想要實(shí)現(xiàn)跨Region的搭建就可以利用阿里云上的DTS工具將數(shù)據(jù)拉過(guò)去,需要進(jìn)行數(shù)據(jù)復(fù)制的時(shí)候才會(huì)收費(fèi),平時(shí)不用的時(shí)候甚至可以直接將其關(guān)閉掉。
當(dāng)搭建了跨Region的數(shù)據(jù)中心之后,后面就會(huì)有更多的事情。比如到底敢不敢進(jìn)行主備切換,以往做主備切換的時(shí)候都需要配置一大堆的DNS,自己寫(xiě)很多腳本做確認(rèn),而在云架構(gòu)底下,只需要通過(guò)一個(gè)按鈕就可以實(shí)現(xiàn)。因此,大家一定要清楚,作為云DBA應(yīng)該去學(xué)習(xí)哪些東西,同時(shí)需要放棄哪些東西的學(xué)習(xí)。因此當(dāng)有云架構(gòu)之后,DBA可以將重心放到學(xué)習(xí)如何優(yōu)化SQL以及各種不同的數(shù)據(jù)庫(kù)特性以及它們之間的組合架構(gòu)如何解決業(yè)務(wù)上的問(wèn)題,而底層的業(yè)務(wù)架構(gòu)可以交給云去做。
運(yùn)維簡(jiǎn)化:定期全/增量備份
在云上面,如果需要做定期增量備份也僅僅需要點(diǎn)擊幾個(gè)按鈕進(jìn)行構(gòu)建即可。
運(yùn)維簡(jiǎn)化:恢復(fù)到時(shí)間點(diǎn)
無(wú)論針對(duì)于哪個(gè)數(shù)據(jù)庫(kù),阿里云的服務(wù)都可以做到任意時(shí)間點(diǎn)的秒級(jí)恢復(fù)。這一功能并不只是為了幫助用戶找回?cái)?shù)據(jù),很多用戶的DBA和開(kāi)發(fā)的互動(dòng)越來(lái)越頻繁,如果開(kāi)發(fā)收到某個(gè)時(shí)間段系統(tǒng)運(yùn)行較慢的反饋,就可以直接克隆一個(gè)那個(gè)時(shí)間段的新實(shí)例出來(lái),并且只需要按需購(gòu)買(mǎi)即可,克隆出來(lái)實(shí)例調(diào)試完程序之后直接將其關(guān)閉掉即可,一切的成本都在DBA的掌握之中。
運(yùn)維簡(jiǎn)化:按需橫向擴(kuò)展
DBA對(duì)于數(shù)據(jù)庫(kù)的橫向擴(kuò)展也會(huì)做很多動(dòng)作,傳統(tǒng)的方式通過(guò)只讀實(shí)例可以做相應(yīng)的擴(kuò)展,同時(shí)還有像阿里云的DRDS分布式數(shù)據(jù)庫(kù)分片的運(yùn)行方案,也能夠比較容易地搭建出來(lái),進(jìn)一步地還可以走向PolarDB,通過(guò)分布式的一寫(xiě)多讀來(lái)簡(jiǎn)化業(yè)務(wù)規(guī)則。未來(lái),DBA需要重點(diǎn)關(guān)注的點(diǎn)在于什么時(shí)候使用什么樣的架構(gòu)。舉例而言,如果需要解決某個(gè)大促時(shí)間段大量的讀請(qǐng)求問(wèn)題,應(yīng)該通過(guò)只讀實(shí)例來(lái)實(shí)現(xiàn)。而如果老舊業(yè)務(wù)完全可以基于互聯(lián)網(wǎng)改寫(xiě),就可以選擇直接通過(guò)DRDS做整個(gè)系統(tǒng)的分庫(kù)分表操作。如果需要非常強(qiáng)的與關(guān)系型數(shù)據(jù)庫(kù)一致性的業(yè)務(wù),并且與此同時(shí)數(shù)據(jù)量非常大,可能需要選擇PolarDB的架構(gòu),因此DBA需要對(duì)于不同的數(shù)據(jù)庫(kù)架構(gòu)以及其背后原理有自己的理解。
運(yùn)維簡(jiǎn)化:自動(dòng)讀寫(xiě)分離
阿里云數(shù)據(jù)庫(kù)幫助用戶實(shí)現(xiàn)了讀寫(xiě)分離,DBA不需要再進(jìn)行應(yīng)用程序上的業(yè)務(wù)改寫(xiě),比如對(duì)于讀寫(xiě)分離的設(shè)置都可以實(shí)現(xiàn)自動(dòng)化。通過(guò)對(duì)于請(qǐng)求的分析來(lái)判斷應(yīng)該分發(fā)到讀實(shí)例還是寫(xiě)實(shí)例。
以上這些都是云數(shù)據(jù)庫(kù)能夠提供的能力,大家會(huì)發(fā)現(xiàn)以往的管理模型已經(jīng)都覆蓋到了。未來(lái)運(yùn)維方面的DBA工作可能減輕,因此DBA應(yīng)該跳到業(yè)務(wù)方向上進(jìn)行發(fā)展。
四、如何成為優(yōu)秀的云DBA
在云數(shù)據(jù)庫(kù)的背景下,DBA是否還需要學(xué)習(xí)每一部分的數(shù)據(jù)庫(kù)管理知識(shí)呢?因?yàn)槿说臅r(shí)間是有限的,未來(lái)除非真的要做類(lèi)似于阿里云的整體管控系統(tǒng)時(shí)需要深入底層進(jìn)行分析,而如果不是,那么這些數(shù)據(jù)庫(kù)管理就可以交給云管控平臺(tái)來(lái)實(shí)現(xiàn)。但是數(shù)據(jù)庫(kù)優(yōu)化卻需要DBA知道和掌握,這里并不是指修改哪些參數(shù)能夠優(yōu)化成什么樣子,因?yàn)檫@些在云平臺(tái)上就已經(jīng)配置好了,但是DBA需要知道的是針對(duì)于某個(gè)數(shù)據(jù)庫(kù),什么樣的索引對(duì)它更加有效,表與表之間的關(guān)系應(yīng)該如何建立才能使得數(shù)據(jù)庫(kù)性能更好。
云數(shù)據(jù)庫(kù)提供了很多的集群架構(gòu),也并不一定需要全部學(xué)習(xí)。無(wú)論是單節(jié)點(diǎn)、雙節(jié)點(diǎn)還是三節(jié)點(diǎn),通過(guò)阿里云都可以實(shí)現(xiàn)一鍵式部署。因此作為DBA更加需要了解不同的數(shù)據(jù)庫(kù)實(shí)例之間應(yīng)該如何進(jìn)行互動(dòng),從而產(chǎn)生對(duì)業(yè)務(wù)有效的架構(gòu)方案和規(guī)劃方案,這正是DBA需要深入思考的,而不是每天都在備份服務(wù)器,部署數(shù)據(jù)庫(kù),檢修各種硬件。
云服務(wù)支持邊界
基于云的運(yùn)行環(huán)境,云數(shù)據(jù)庫(kù)服務(wù)和DBA的邊界會(huì)發(fā)生改變。資源調(diào)度、基礎(chǔ)優(yōu)化、平臺(tái)能力以及準(zhǔn)確輸出都是由云來(lái)提供的,而企業(yè)的DBA需要做這樣幾件事情:對(duì)于表結(jié)構(gòu)需要花費(fèi)更多的時(shí)間來(lái)規(guī)劃,定義自己企業(yè)的SQL標(biāo)準(zhǔn)來(lái)規(guī)范開(kāi)發(fā)模型,對(duì)于SQL以及結(jié)構(gòu)進(jìn)行優(yōu)化來(lái)提升業(yè)務(wù)性能。此外,DBA不僅應(yīng)該關(guān)注于數(shù)據(jù)庫(kù),實(shí)際上也應(yīng)該做企業(yè)成本的控制,通過(guò)不同的數(shù)據(jù)模型組合來(lái)解決不同的業(yè)務(wù)問(wèn)題,也需要了解云數(shù)據(jù)庫(kù)日志的不同,并通過(guò)故障檢測(cè)自查或者發(fā)起服務(wù)需求。
性能問(wèn)題甄別
對(duì)于云DBA而言,如果出現(xiàn)了數(shù)據(jù)庫(kù)性能問(wèn)題應(yīng)該怎么做呢?其實(shí)任何的云廠商都會(huì)有自己成熟的一整套監(jiān)控以及性能分析方案,比如阿里云的方案就源自于阿里巴巴內(nèi)部的經(jīng)驗(yàn),能夠幫助DBA發(fā)現(xiàn)故障并提供解決方案,使用起來(lái)非常方便。
云服務(wù)支持邊界
此外,阿里云也提供了一種能力,就是阿里云后端的DBA會(huì)幫助用戶解決數(shù)據(jù)庫(kù)相關(guān)的問(wèn)題。以往情況下,如果數(shù)據(jù)庫(kù)出現(xiàn)了問(wèn)題,需要打電話給服務(wù)商來(lái)約時(shí)間解決,存在一定的延遲。而今天在阿里云上面,DBA隨時(shí)可以進(jìn)入。并且阿里云還提供了安全保障,具有完善的授權(quán)機(jī)制,只有用戶授權(quán)阿里云的DBA訪問(wèn)用戶數(shù)據(jù)庫(kù)或者進(jìn)行服務(wù)的時(shí)候,阿里云的DBA才有權(quán)限為用戶提供服務(wù),而如果沒(méi)有得到授權(quán),阿里云的DBA是不能夠進(jìn)入的。
高危SQL預(yù)防
阿里巴巴具有自己的一整套數(shù)據(jù)庫(kù)開(kāi)發(fā)規(guī)范,而用戶的DBA也可以自己定義一套數(shù)據(jù)庫(kù)開(kāi)發(fā)規(guī)范,比如可以定義某一個(gè)字段是否可以以某種方式編寫(xiě),這樣就從系統(tǒng)設(shè)計(jì)和規(guī)范的層面避免爛SQL進(jìn)入系統(tǒng),進(jìn)而造成系統(tǒng)故障。
跨云管理
今天,阿里云本身在運(yùn)營(yíng)云,而其實(shí)阿里云也會(huì)提供跨云的管理工具。無(wú)論用戶使用的是哪里的云,只要管理的是MySQL、MongoDB、Redis數(shù)據(jù)庫(kù)都會(huì)提供HDM工具來(lái)協(xié)助用戶管理跨云數(shù)據(jù)庫(kù)。
總結(jié)一下,云數(shù)據(jù)庫(kù)帶來(lái)了標(biāo)準(zhǔn)化部署、自動(dòng)化運(yùn)維、按需擴(kuò)容以及工具化調(diào)優(yōu)等優(yōu)勢(shì)。對(duì)于企業(yè)而言,不要再讓DBA為部署和備份等瑣碎的運(yùn)維工作所纏繞了,他們應(yīng)該將精力投入到優(yōu)化架構(gòu)、寫(xiě)好SQL以及做好數(shù)據(jù)庫(kù)的整體構(gòu)造上,進(jìn)而為企業(yè)輸出核心技術(shù)生產(chǎn)力。
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的把握数据库发展趋势 DBA应如何避免“踩坑”?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 运维编排场景系列----给实例加到SLS
- 下一篇: MySQL用户如何构建实时数仓