商用數(shù)據(jù)庫(kù)上云的方式與存在的問題
?熙熙攘攘的春節(jié)假期完完全全的結(jié)束了,因?yàn)閮鹤咏衲旮呖?,所以春?jié)只是窩在深圳。春節(jié)期間應(yīng)兒子的要求去看了一場(chǎng)電影-《流浪地球》,電視也沒啥可看的,只有一個(gè)更新速度像便秘的《三體》還值得一看。兩部片子看著看著就看岔了情節(jié)了,地球人駕駛著地球,跨越2500年時(shí)空去三體人的老家蹭太陽,而宇宙的那一端,三體人跨過茫茫宇宙要來搶劫地球,不知道那撥人出現(xiàn)了技術(shù)誤判。
我每天寫點(diǎn)東西,都是最近在思考的東西,春節(jié)假期放空自己,思考的問題不多,可寫的題材也不多。正好春節(jié)假期的最后幾天在編寫一篇調(diào)研報(bào)告的提綱,還算思考了一些技術(shù)問題,實(shí)際上在春節(jié)前我也寫過這方面的題材,那就是國(guó)產(chǎn)商用數(shù)據(jù)庫(kù)上云的問題,今天就從另外一個(gè)角度聊聊這個(gè)話題吧。
數(shù)據(jù)庫(kù)上云的方式一般數(shù)據(jù)庫(kù)服務(wù)器云納管、云主機(jī)部署、RDS服務(wù)、容器云這四種方式。云納管僅僅是一種最低程度的云管,實(shí)際上數(shù)據(jù)庫(kù)和云還是完全分離的。今天我們先來看看其他三種方式。
云主機(jī)部署數(shù)據(jù)庫(kù)是最早出現(xiàn)的數(shù)據(jù)庫(kù)上云的方式,利用云平臺(tái)的ECS與云主機(jī)模板,以及云平臺(tái)的資源編排能力,可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)在云上的快速部署與快速變更。數(shù)據(jù)庫(kù)的部署可以做成云主機(jī)模板,以小時(shí)級(jí)的速度交付使用。這對(duì)于以往以周為單位的交付效率來說,已經(jīng)是革命性提高了。不過這種部署模式存在很多問題,首先是交付與運(yùn)維還是脫離的,數(shù)據(jù)庫(kù)運(yùn)維的模式還是傳統(tǒng)的模式,自動(dòng)化程度不高;其次是部署在云主機(jī)上的數(shù)據(jù)庫(kù)性能還是有些問題的,大型數(shù)據(jù)庫(kù)往往還需要外接集中式存儲(chǔ)來解決IO性能的問題;第三是稍微關(guān)鍵一些的數(shù)據(jù)庫(kù)往往會(huì)受到云資源超配的干擾,需要通過獨(dú)立的安置組來做資源隔離,避免其他云組件對(duì)數(shù)據(jù)庫(kù)的性能影響;最后一點(diǎn)是交付效率還存在提升的需求。
RDS是數(shù)據(jù)庫(kù)上云目前最主要的方式之一,也是針對(duì)云主機(jī)部署的一種改良。RDS一般以裸金屬的方式部署,在一臺(tái)服務(wù)器上部署多個(gè)數(shù)據(jù)庫(kù)實(shí)例,通過資源管理的模式來限制其資源使用。RDS部署的數(shù)據(jù)庫(kù)以服務(wù)器的本地盤為存儲(chǔ)介質(zhì),可以使用SATA HDD、SAS HDD、SATA SSD、NVME SSD等多種形式的存儲(chǔ)介質(zhì),有些云廠商還提供高性能云存儲(chǔ)作為存儲(chǔ)介質(zhì)。這種采用裸金屬部署的模式,數(shù)據(jù)庫(kù)在性能方面損耗較少,因此在同樣的數(shù)據(jù)庫(kù)上,RDS的性能往往優(yōu)于云主機(jī)部署的數(shù)據(jù)庫(kù)。不過受限于單機(jī)容量,RDS的規(guī)模是受到PC服務(wù)器的物理限制的,CPU,內(nèi)存,存儲(chǔ)容量的擴(kuò)展都存在一定的限制,CPU、內(nèi)存的限制在其他模式的部署中也是如此,不過數(shù)據(jù)庫(kù)的容量受限是個(gè)比較麻煩的事情。不過裸金屬云也有一些突破容量限制的解決方案,比如通過INTEL的RSD可以動(dòng)態(tài)分配磁盤等資源給某臺(tái)服務(wù)器,實(shí)現(xiàn)分鐘級(jí)的資源調(diào)度,阿里的神龍就是一個(gè)類似的裸金屬云解決方案。RDS除了存儲(chǔ)容量的限制外,資源隔離方面也不是完美的,多個(gè)數(shù)據(jù)庫(kù)服務(wù)使用同一個(gè)OS,相互之間還是會(huì)有一定的干擾,因此有時(shí)候會(huì)出現(xiàn)一些莫名其妙的性能問題。
RDS數(shù)據(jù)庫(kù)的高可用、備份等可以使用數(shù)據(jù)庫(kù)原生的模式,比如通過MHA、MGR等構(gòu)建主從環(huán)境,或者利用云平臺(tái)的底層存儲(chǔ)快照、副本復(fù)制等技術(shù)來實(shí)現(xiàn)數(shù)據(jù)庫(kù)復(fù)制,也可以通過云平臺(tái)底層的CDP/CDM技術(shù)實(shí)現(xiàn)可持續(xù)的數(shù)據(jù)保護(hù),不過這些方式的實(shí)現(xiàn)成本都比較高,大多數(shù)用戶還是通過傳統(tǒng)的數(shù)據(jù)庫(kù)主從復(fù)制來獲得高可用能力。
第四種上云模式是近些年比較流行的容器云,在容器中跑數(shù)據(jù)庫(kù)目前已經(jīng)挺普遍了,一些企業(yè)已經(jīng)構(gòu)建起了DEVOPS的工具鏈,不僅僅可以快速交付數(shù)據(jù)庫(kù),還可以快速交付整個(gè)應(yīng)用。數(shù)據(jù)庫(kù)的容器云一般來說部署的數(shù)據(jù)庫(kù)規(guī)模都較小,支撐一個(gè)不太復(fù)雜的業(yè)務(wù)。如果一個(gè)企業(yè)有數(shù)百個(gè)規(guī)模類似,業(yè)務(wù)負(fù)載也差不多的數(shù)據(jù)庫(kù),或者一些大型業(yè)務(wù)可以拆分為數(shù)十個(gè)這樣類似的數(shù)據(jù)庫(kù),那么容器云可以節(jié)約大量的部署、運(yùn)維的成本。
大家要注意的是,里面我提到了一個(gè)“規(guī)模類似”,為什么要提這個(gè)詞呢,因?yàn)槿绻鄠€(gè)數(shù)據(jù)庫(kù)可以使用相同的容器鏡像來部署,那么容器云的成本是最低的,如果庫(kù)都要構(gòu)建數(shù)十個(gè)獨(dú)立的鏡像,那么其成本就不低了。另外一個(gè)要注意的問題是要有高水平的operator來支撐容器云,如果一個(gè)應(yīng)用拆分為數(shù)十個(gè)數(shù)據(jù)庫(kù),每個(gè)數(shù)據(jù)庫(kù)都還需要DBA來做精細(xì)的運(yùn)維,那么還不如把這幾十個(gè)數(shù)據(jù)庫(kù)合并為一個(gè)大型數(shù)據(jù)庫(kù),每個(gè)小庫(kù)作為這個(gè)數(shù)據(jù)庫(kù)的一個(gè)庫(kù)或者一個(gè)SCHEMA。容器云的大量小型數(shù)據(jù)庫(kù)應(yīng)該是90%以上甚至99%以上的運(yùn)維是通過過operator自動(dòng)化運(yùn)維的,這樣才能真正的節(jié)約運(yùn)維成本。我以前幫助用戶優(yōu)化過容器中的數(shù)據(jù)庫(kù),因?yàn)樗麄兊溺R像是從網(wǎng)上下載的,根本沒有根據(jù)他們的應(yīng)用的要求重新構(gòu)建,因此當(dāng)數(shù)據(jù)庫(kù)出問題的時(shí)候,很多指標(biāo)都采集不到,分析問題十分不便,這樣的容器中運(yùn)行的大型數(shù)據(jù)庫(kù),一旦出現(xiàn)一些問題,那么定位起來就好似大海撈針一樣。
今天時(shí)間關(guān)系,就先寫了這個(gè)問題的上半部分吧,今天實(shí)際上只是討論了數(shù)據(jù)庫(kù)上云的幾種方式。關(guān)于商用數(shù)據(jù)庫(kù)上云的方式以及存在的問題的討論本來是本文要討論的重點(diǎn),我們放在明天的下集里在討論吧。最后給廣大讀者拜個(gè)晚年。?