近兩年,隨著云環(huán)境的成熟,很多企業(yè)的業(yè)務(wù)都在向云端遷移。于是,“云數(shù)據(jù)庫(kù)”成為最時(shí)髦詞匯之一,被AWS、微軟、阿里、華為等大廠推崇。那么,對(duì)于用戶來(lái)說(shuō),他們?nèi)绾慰创茢?shù)據(jù)庫(kù)的發(fā)展現(xiàn)狀,到底哪些因素才是他們選型的關(guān)鍵點(diǎn)?老王的經(jīng)歷,或許能從一定程度上說(shuō)明中國(guó)云數(shù)據(jù)庫(kù)發(fā)展現(xiàn)狀。
十年的平和網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)整合營(yíng)銷(xiāo)推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整平和建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“平和網(wǎng)站設(shè)計(jì)”,“平和網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。老王的心路歷程
A網(wǎng)站,是國(guó)內(nèi)大型社交媒體之一,老王是這家網(wǎng)站的DBA。像很多人說(shuō)的一樣,好的架構(gòu)從來(lái)都不是設(shè)計(jì)出來(lái)的,而是演進(jìn)出來(lái)的,數(shù)據(jù)庫(kù)也是如此。從商業(yè)數(shù)據(jù)庫(kù)到開(kāi)源數(shù)據(jù)庫(kù),再到云數(shù)據(jù)庫(kù),老王是數(shù)據(jù)庫(kù)變革的最直接見(jiàn)證者和推動(dòng)者。
起初,A網(wǎng)站日活躍用戶達(dá)到1.5個(gè)億。用戶注冊(cè)時(shí),需要給每一個(gè)用戶分配獨(dú)立的ID,并保存用戶名、密碼、出生日期、單位等信息。另外,登錄后要對(duì)消息、關(guān)注、查找、評(píng)論、轉(zhuǎn)發(fā)等進(jìn)行管理。這家網(wǎng)站的數(shù)據(jù)庫(kù)采用的是標(biāo)準(zhǔn)結(jié)構(gòu),按照讀寫(xiě)分離設(shè)計(jì),主庫(kù)承擔(dān)寫(xiě),從庫(kù)承擔(dān)訪問(wèn),如果訪問(wèn)壓力過(guò)大,就通過(guò)擴(kuò)容從庫(kù)的數(shù)量獲得擴(kuò)展能力。并且,所有業(yè)務(wù)按照用戶、內(nèi)容和關(guān)系進(jìn)行垂直劃分,使用單獨(dú)的數(shù)據(jù)庫(kù)。
之后,隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,A網(wǎng)站注冊(cè)用戶數(shù)也跟著瘋漲,原有的數(shù)據(jù)庫(kù)呈現(xiàn)前所未有的壓力。為了支持業(yè)務(wù)高速發(fā)展需求,只能采購(gòu)性能更好的硬件設(shè)備,對(duì)各功能模塊分別獨(dú)立存儲(chǔ),并對(duì)海量業(yè)務(wù)數(shù)據(jù)進(jìn)行二次拆分。由于沒(méi)有時(shí)間進(jìn)行架構(gòu)改造,只能通過(guò)購(gòu)買(mǎi)硬件設(shè)備來(lái)支撐核心業(yè)務(wù)。那時(shí),feed系統(tǒng)重度依賴MySQL,最高并發(fā)的時(shí)候,MySQL寫(xiě)入QPS飚到過(guò)4W。由于數(shù)據(jù)庫(kù)性能問(wèn)題,直接導(dǎo)致網(wǎng)站癱瘓,用戶流失,當(dāng)時(shí)的場(chǎng)景,老王至今記憶猶新。為了保障查詢的性能指標(biāo),老王及其團(tuán)隊(duì)成員對(duì)索引和內(nèi)容進(jìn)行了拆分,各自分了很多端口,每個(gè)端口分出了很多的DB。
經(jīng)過(guò)改造后的數(shù)據(jù)庫(kù),已經(jīng)逐步趨于穩(wěn)定,但是當(dāng)峰值出現(xiàn)的時(shí)候,MySQL依然有查詢慢的問(wèn)題。并且,對(duì)于運(yùn)維人員來(lái)說(shuō),運(yùn)營(yíng)維護(hù)不夠自動(dòng)化。為了解決這些問(wèn)題,老王開(kāi)始研究云端遷移的問(wèn)題。
自建云端MySQL,還是選擇成熟的云數(shù)據(jù)庫(kù)?
為了保持?jǐn)?shù)據(jù)的一致性,老王最開(kāi)始考慮的是在云服務(wù)器上自建MySQL數(shù)據(jù)庫(kù)。
畢竟MySQL是一個(gè)有著20多年歷史的開(kāi)源數(shù)據(jù)庫(kù),也是最流行的互聯(lián)網(wǎng)開(kāi)源數(shù)據(jù)庫(kù)。尤其是MySQL升級(jí)到MySQL 8.0后,已經(jīng)做了很多優(yōu)化,有很多新特征。比如:支持了json的數(shù)據(jù)類(lèi)型,實(shí)現(xiàn)了json數(shù)據(jù)類(lèi)型的讀取和訪問(wèn),支持NoSQL接口等。
自建云端MySQL,便擁有了云的特征,包括:高可用,可彈性擴(kuò)展,可簡(jiǎn)化運(yùn)維等。但是,自建云端MySQL的弊端也非常明顯:首先,云服務(wù)器成本太高,需要做軟、硬件的配置。其次,自建數(shù)據(jù)庫(kù)需要DBA自己來(lái)維護(hù),安全性很難保證。尤其是由硬件故障導(dǎo)致的安全隱患,很難控制。還有,DBA的水平問(wèn)題,也決定了數(shù)據(jù)庫(kù)的穩(wěn)定性。其三,部署周期太長(zhǎng),需要采購(gòu)硬件,找機(jī)房托管,重新部署。對(duì)于老王來(lái)說(shuō),他們沒(méi)有更多的人力、物力來(lái)解決這些問(wèn)題。自建云端MySQL,無(wú)異于在給自己“挖坑”。
所以,老王決定還是直接選用成熟的解決方案。于是,“云數(shù)據(jù)庫(kù)”跳入他的眼簾。
放眼望去,市場(chǎng)上可選的“云數(shù)據(jù)庫(kù)”有很多。包括:AWS的Amazon Aurora,阿里的PolarDB、華為的云數(shù)據(jù)庫(kù)MySQL等。如何去選型?
老王綜合評(píng)估了下,認(rèn)為有幾點(diǎn)很重要:
第一,必須選擇大品牌。A網(wǎng)站是大型社交網(wǎng)站,數(shù)據(jù)庫(kù)就是企業(yè)的全部?jī)r(jià)值,老王不能拿網(wǎng)站的命運(yùn)和自己的職業(yè)生涯做賭注。所以,云數(shù)據(jù)庫(kù)產(chǎn)品必須位列前三。而AWS是全世界第一大云計(jì)算提供商,占據(jù)了大部分市場(chǎng)份額。
第二,必須選擇成熟的解決方案。選擇把數(shù)據(jù)庫(kù)遷移到云端,就是為了獲得更好的性能,但是更高的性能要是以可靠性為代價(jià),老王寧愿保持現(xiàn)狀。況且,云數(shù)據(jù)庫(kù)在中國(guó)畢竟是一個(gè)新概念,如果沒(méi)有成熟的案例,老王不能去當(dāng)這個(gè)“小白鼠”。從這點(diǎn)考慮, Amazon Aurora無(wú)疑最占優(yōu)勢(shì)。Amazon Aurora發(fā)布于2015年,經(jīng)過(guò)三年的驗(yàn)證,已經(jīng)得到了Autodesk、TIBCO、亞利桑那州立大學(xué)、通用電氣、BMC、每日新聞等諸多客戶的肯定。
第三,要在具備更高性能的基礎(chǔ)上,兼容MySQL。Aurora的性能,毋庸置疑,作為云數(shù)據(jù)庫(kù)領(lǐng)域的頂級(jí)代表作,其吞吐能力無(wú)人能及。很多數(shù)據(jù)庫(kù)產(chǎn)品都把Aurora當(dāng)做標(biāo)桿,參考Aurora的架構(gòu)去做。另外,做數(shù)據(jù)庫(kù)大的挑戰(zhàn)就是兼容性。如果兼容性差,會(huì)讓遷移成本高出很多倍,這也是為什么說(shuō)中間件和分庫(kù)分表是反人類(lèi)方案的根本原因。Aurora恰好具備兼容性特點(diǎn),完全可以覆蓋MySQL和PostgreSQL。
第四,可托管。老王希望使用云數(shù)據(jù)庫(kù)以后,可以減輕數(shù)據(jù)庫(kù)維護(hù)壓力。無(wú)需擔(dān)心硬件、軟件補(bǔ)丁、設(shè)置、配置或備份等數(shù)據(jù)庫(kù)管理任務(wù)。并且,云數(shù)據(jù)庫(kù)解決方案能提供自動(dòng)監(jiān)控功能,能夠自動(dòng)持續(xù)監(jiān)控并將其備份到存儲(chǔ)服務(wù)中,可以實(shí)現(xiàn)更精細(xì)的時(shí)間點(diǎn)恢復(fù)。在這一點(diǎn)上,Amazon Aurora也完勝同類(lèi)解決方案。
第五,在數(shù)據(jù)庫(kù)遷移過(guò)程中,不能影響業(yè)務(wù)運(yùn)行。Amazon Aurora能快速啟動(dòng),可直接連接到源數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)庫(kù),能把停機(jī)時(shí)間縮到最短。用戶可通過(guò)AWS DMS 創(chuàng)建表、加載數(shù)據(jù)并使其保持同步,隨時(shí)將應(yīng)用程序切換到目標(biāo)。
如何遷移?
從本地MySQL到云Amazon Aurora,老王是如何遷移的呢?
從Amazon官網(wǎng)的遷移手冊(cè)來(lái)看,Amazon Aurora有多種不同的遷移方法。A網(wǎng)站選擇的是Percona XtraBackup備份工具,能支持全備及增量備份等。對(duì)比MySQLdump,XtraBackup 備份的是數(shù)據(jù)庫(kù)的二進(jìn)制數(shù)據(jù)及日志,并且文件可壓縮得更小。這樣,無(wú)論是備份和還原,速度都更快。
安裝完備份工具后,再備份MySQL數(shù)據(jù)庫(kù),然后將備份 MySQL 文件上傳到 Amazon S3。最后,在 Aurora Console 中還原備份文件到 Amazon Aurora。
數(shù)據(jù)庫(kù)實(shí)例和實(shí)例監(jiān)控
為了進(jìn)一步優(yōu)化成本并滿足多個(gè)應(yīng)用程序的額外要求,A網(wǎng)站執(zhí)行了以下步驟:
1,根據(jù) CPU 利用率自動(dòng)調(diào)整 Aurora 副本的數(shù)量。不再持續(xù)運(yùn)行多個(gè)副本,僅在需要時(shí)增加副本。
2,為所有集群部署Aurora快照工具,從而自動(dòng)復(fù)制快照并實(shí)施30天的快照保留規(guī)則。使用控制臺(tái)操作快照注入,Binlog復(fù)制的只讀副本,DMS也可以訪問(wèn)數(shù)據(jù)庫(kù),并設(shè)置為源或者目標(biāo)。
3,采用全量MySQLdump加增量Replication方式。但是,在 MySQLdump 導(dǎo)出數(shù)據(jù)并復(fù)制到目標(biāo)數(shù)據(jù)庫(kù)這段時(shí)間內(nèi),主庫(kù)要設(shè)置為只讀,避免新數(shù)據(jù)寫(xiě)入。
4,啟用 CloudWatch Logs,創(chuàng)建 CloudWatch 指標(biāo)和警報(bào),從而持續(xù)監(jiān)控 Aurora 數(shù)據(jù)庫(kù)集群中的活動(dòng)。
5,在決定遷移前,要做兼容性測(cè)試。我們可以定義Aurora的Master節(jié)點(diǎn)容量大小,臨時(shí)測(cè)試環(huán)境可以使用t系列的機(jī)型,生產(chǎn)環(huán)境可以使用r系列的機(jī)型??筛鶕?jù)生產(chǎn)的壓力選擇合適大小的機(jī)型。
最終,A網(wǎng)站非常成功地把MySQL上的數(shù)據(jù)遷移到了Amazon Aurora。綜合來(lái)看,在性能上高于原來(lái)的5倍,的確不只是傳說(shuō)。Amazon Aurora大大提高了原有數(shù)據(jù)庫(kù)的性能和可擴(kuò)展性,并且優(yōu)化了成本。在峰值期間,系統(tǒng)能收到高于原來(lái)至少10倍的請(qǐng)求。
性能表現(xiàn)
自此,老王終于可以松一口氣了。未來(lái),他想把更多的關(guān)注點(diǎn)放在更有價(jià)值的業(yè)務(wù)上,而不是每天被各種紛繁復(fù)雜的瑣事,忙得焦頭爛額。
寫(xiě)在最后:
Amazon Aurora,一個(gè)最有魅力的極光女神,創(chuàng)造了全球云數(shù)據(jù)庫(kù)之最。對(duì)于中國(guó)用戶來(lái)說(shuō),很多人可能不懷疑他的技術(shù)能力,但是對(duì)于本地服務(wù)是否給力,心存疑慮。其實(shí),AWS早已在布局中國(guó)市場(chǎng),由光環(huán)新網(wǎng)運(yùn)營(yíng)的AWS中國(guó)(北京)區(qū)域和西云數(shù)據(jù)運(yùn)營(yíng)的中國(guó)(寧夏)區(qū)域提供與全球各地的其他 AWS 區(qū)域相似的技術(shù)服務(wù)平臺(tái)。開(kāi)發(fā)人員可以在中國(guó)境內(nèi)輕松、高效地部署基于云的應(yīng)用程序,使用相同的 API、協(xié)議和與 AWS 全球客戶無(wú)差別的操作標(biāo)準(zhǔn)。
如今,AWS正在向中國(guó)用戶大力推廣Amazon Aurora,如果您想體驗(yàn)云數(shù)據(jù)庫(kù)帶來(lái)的極致體驗(yàn),點(diǎn)擊這里即可 申請(qǐng)AWS 中國(guó)區(qū)域賬戶 >>