溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

從本地MySQL遷移到云數(shù)據(jù)庫(kù),為什么是Amazon Aurora?

發(fā)布時(shí)間:2020-08-08 23:20:23 來(lái)源:ITPUB博客 閱讀:170 作者:云編 欄目:MySQL數(shù)據(jù)庫(kù)

  近兩年,隨著云環(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)狀。

從本地MySQL遷移到云數(shù)據(jù)庫(kù),為什么是Amazon Aurora?

  老王的心路歷程

  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ù)到開源數(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),按照讀寫分離設(shè)計(jì),主庫(kù)承擔(dān)寫,從庫(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)買硬件設(shè)備來(lái)支撐核心業(yè)務(wù)。那時(shí),feed系統(tǒng)重度依賴MySQL,最高并發(fā)的時(shí)候,MySQL寫入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)題,老王開始研究云端遷移的問(wèn)題。

   自建云端MySQL,還是選擇成熟的云數(shù)據(jù)庫(kù)?

  為了保持?jǐn)?shù)據(jù)的一致性,老王最開始考慮的是在云服務(wù)器上自建MySQL數(shù)據(jù)庫(kù)。

  畢竟MySQL是一個(gè)有著20多年歷史的開源數(shù)據(jù)庫(kù),也是最流行的互聯(lián)網(wǎng)開源數(shù)據(jù)庫(kù)。尤其是MySQL升級(jí)到MySQL 8.0后,已經(jīng)做了很多優(yōu)化,有很多新特征。比如:支持了json的數(shù)據(jù)類型,實(shí)現(xiàn)了json數(shù)據(jù)類型的讀取和訪問(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ù)分表是反人類方案的根本原因。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也完勝同類解決方案。

  第五,在數(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。

從本地MySQL遷移到云數(shù)據(jù)庫(kù),為什么是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ù)寫入。

  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)求。

從本地MySQL遷移到云數(shù)據(jù)庫(kù),為什么是Amazon Aurora?

   性能表現(xiàn)

    自此,老王終于可以松一口氣了。未來(lái),他想把更多的關(guān)注點(diǎn)放在更有價(jià)值的業(yè)務(wù)上,而不是每天被各種紛繁復(fù)雜的瑣事,忙得焦頭爛額。

  寫在最后:

  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)。開發(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ū)域賬戶 >>

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI