天天看點

DTCC 2019 | 雲時代資料庫遷移 & 容災技術新進展與應用

摘要:遷移&容災是資料庫的強需求,傳統的遷移&容災技術已經發展多年,随着雲時代的來臨,在遷移&容災的使用場景、網絡、技術都有很大的變化,如何在雲時代下更簡單的實作資料庫的遷移&容災,雲廠商如何通過新的技術實作彎道超車,本文中阿裡雲智能資料庫産品事業部進階技術專家付大超就為大家分享了阿裡雲在此領域的技術新進展和應用。

專家簡介:付大超(花名:千震),阿裡雲智能資料庫産品事業部進階技術專家,2012年加入阿裡巴巴,目前負責DTS&DBS團隊和研發,在阿裡雲提供遷移、同步和容災的服務,支援阿裡巴巴、螞蟻、阿裡雲等異地多活單元化架構,曾負責阿裡全球最大的HBase叢集的開發和維護工作,曾先後工作于IBM、Cisco。

直播回放

連結

https://yq.aliyun.com/live/1048

議題PPT下載下傳,戳這裡!

https://yq.aliyun.com/download/3564

本文将主要圍繞以下四個方面進行分享:

 現狀和問題

 雲時代的機會

 阿裡雲的新進展

 應用案例

遷移&容災現狀與問題

2014年,xx銀行核心資料庫出現故障,導緻存取款、網銀、ATM等業務全部中斷長達37小時。2017年,xx遊戲資料庫故障,30小時無法服務,資料丢失,導緻遊戲回檔。2018年,xx著名代碼托管服務商資料庫故障,24小時無法服務。以上這些問題的根源都是資料庫。而整體而言,資料庫的問題和程式開發是類似的,按照墨菲定律來講就是隻要有出現問題的可能,那麼問題就一定會出現。

我們不能和墨菲定律賽跑,是以需要做好資料的遷移和容災等工作。從業界的兩個公開報告分析了資料庫出現問題的一些原因。可以看到,在2015年,備份恢複軟體收入達到44.49億美元,這一市場的份額還是比較大的。

國家标準《資訊系統災難恢複規範》可以給大家一些參考,也就是說大家願意投入的成本和收益是正相關的,花費的錢越多,資料丢失的時間和恢複的市場就會越小。是以,需要在投入成本和資料丢失情況之間進行平衡。上圖中右側是國标中定義的一張表,雖然年代比較久遠,但是在今天仍舊有一定的參考意義。

資料複制技術現狀

對于遷移和容災本身而言,都是使用的資料複制技術,包括了邏輯複制和實體複制,這兩者之間各有優劣。兩者相比而言,邏輯資料複制對于資料庫的相容比較好,實時性好,目的庫基本都是可用的,而實體備份目的庫卻可能是不可用的。

雲時代的機會

這裡列出了三份涉及到資料庫遷移和容災的Gartner報告,不同報告的金額不同。但是總體來講,資料庫遷移和容災市場在不斷增大,而雲上市場更是在翻倍地增長。市場的現狀是資料庫多種多樣,所有的資料都存儲在各個資料庫系統或者其他存儲系統裡面,資料是企業的核心資産,一般而言,如果出現了問題都是最進階别的故障,是以可能會造成極大的影響。此外,災備事故本來發生的就比較多,可能出現資料無法恢複的情況,并且RPO、RTO也可能比較大。而新的變化在于,使用者在持續地上雲,對于阿裡雲而言,從2016年到如今,使用者處于爆發式增長。而雲廠商在快速推進雲上資料遷移和災備服務,而傳統軟體廠商仍屬于上司者,但都在快速雲化。

雲時代的變化

雲時代下,除了資料庫遷移和災備的市場發生了變化之外,其實玩法也變了。場景、網絡以及技術都發生了變化。對于場景而言,比如線下網絡是隔絕的,但是雲上就會出現一些問題,存在很多監管或着合規的要求。還有出海、混合雲、多活以及雲備份等,私有雲自己搭建是比較困難的,但是上雲之後可能就會容易很多,可能隻需要點選幾下滑鼠就好了。對于網絡而言比較複雜,因為要做網絡隔離來保證安全性,是以需要做VPC、專線以及網關等,實作每個使用者互不幹擾。對于技術而言,很多使用者從線下遷移上雲存在公網的問題,可能網絡品質不是特别好,并且需要解決使用者的秒級RPO問題和快照技術問題,還需要保證使用者的備份資料集能夠提供查詢。

雲時代的網絡架構

可以看到,雲服務與阿裡雲之間、使用者本地自建資料庫與阿裡雲之間以及訂閱消費與阿裡雲之間,可能的網絡類型包括了公網、私網、VPC、專線和VPN網關,這就為資料庫遷移備份帶來了很多困難,因為網絡是基礎設施,如果網絡存在很大問題,那麼整個服務的性能和穩定性就會遇到非常大的挑戰。對于資料遷移而言,最大的不可控因素就是源庫和網絡。

阿裡雲的思考

對于阿裡雲而言,首先需要考慮資料如何流動起來,通過阿裡雲資料傳輸服務DTS和資料庫備份能夠幫助使用者搞定遷移和備份問題。

資料高速公路—DTS

資料傳輸服務(Data Transmission Service,簡稱DTS) 支援以資料庫、大資料、檔案為核心的結構化存儲産品之間的資料傳輸,它是一種集資料遷移、資料訂閱及實時同步于一體的資料傳輸服務。DTS是支援增量資料傳輸的,其增量方法基于日志解析實作,并且支援Oracle、SQL Server、PG、Redis、MongoDB等資料庫,這項能力目前在全球都處于領先地位。阿裡雲DTS應該是公有雲上第一個資料傳輸服務,處于技術的領先地位。并且無論是源端資料庫還是目标資料庫,DTS都支援友商以及使用者本地的資料庫。如果使用者想要做訂閱,比如流計算、搜尋、廣告等資料庫下遊業務都需要通過DTS服務來解決問題。

DTS核心子產品

如下圖所示,DTS整體分為幾個子產品。為了解決資料同步或者遷移過程中,因為使用者的DDL而引起的資料庫表結構變更,此時就需要MetaBuilder進行解決。資料解析完成之後放入到DStore裡面,變成結構化的資料,其能夠支援索引,比如Tag或者Index,DStore類似于簡單的資料庫,因為其能夠支援快速查找。此外,在資料寫入的時候還實作了一些Bucket沖突算法等。

日志解析能力

這裡介紹一下DTS的DReader基本架構。DReader是插件化的,可插拔的架構,對于源端的各種資料庫開發一個插件,将這個插件放到DTS上去之後就能夠支援源端資料庫到目标資料庫的增量資料同步了。

日志解析DReader

對于日志解析而言,存在一定的問題,這裡選取幾個重點問題進行講解。第一個問題就是如何建構Schema快照,無論是什麼資料庫,在解析日志的時候如果源端資料表發生了變更,如何實作對于變更的解析,這就需要将源端資料庫的Schema資訊和本地适配起來,是以DReader需要Schema的構造和維護能力。第二個關鍵問題就是大事務、穿插以及復原事務的解析,這對于MySQL而言比較簡單,但對于Oracle而言就會存在很多的問題,而DReader很好地解決了這個問題。

因為Oracle有歸檔和Redo的功能,DReader可以同時支援這兩者,去解析日志的時候需要通過Extractor将其轉化成結構化的Record,進而按照事務進行聚合,再實作二進制轉化,最終還要做Update回查資料。上圖中下側講的是斷點續傳,這裡也存在幾個問題,當面對大事務的時候,資料存在交叉,正常的安全位點都是記錄Commit的位置。而在使用者資料庫的遷移和同步過程中發現有些任務很奇怪,可能并沒有業務資料但是延遲很大,分析其原因是使用者存在一些無操作的長事務,隻是開啟了Begin但是一直沒有Commit,這就導緻了幾方面的問題。一個就是延遲很大,就是一旦重新開機,因為安全位點很老舊,就會将資料拉倒老舊的安全位點,需要拉取很長一段時間的增量資料,使得資料同步的速度非常慢。另外一點就是很有可能redo等日志已經删除掉了,那麼此時就可能無法恢複資料了。是以DReader希望能夠判斷出來事務是不是一個無操作的事務,這樣就能将安全位點移動到合适的位置上來解決相應的問題。對于大事務問題,可能一個事務送出過來100G的資料,那麼就需要通過落盤操作将事務解析出來進行進一步處理。這裡還有一些其他的問題,比如SQL Server的堆表頁遷移和DDL支援問題、PostgreSQL的DDL日志問題以及Redis的resharding日志問題等,還有分布式事務解析問題以及反查對源庫影響問題。

幂等同步

幂等同步原理較為簡單,但是非常有用。主要就是Insert唯一性沖突的時候,進行Replace語義操作;Update不命中的時候,插入新鏡像值;Update唯一性沖突的時候,Delete舊鏡像值,插入新鏡像值。這一點在DTS中可以做到,資料随意回拉都能夠保持一緻性。

DTS Any To Any 架構

Any To Any的意思就是任何一個源端資料庫到任何一個目标端資料庫都隻需要開發一次即可。從源端資料到中間是确定的轉換,而從中間到目的端資料卻是不确定的轉換。阿裡雲DTS為使用者提供了轉換模型,但是使用者也可以自己選擇轉換邏輯。

分布式解析和同步

如果源端資料庫屬于分布式架構,采用了分庫分表的方式或者使用了叢集架構,這種情況下如何實作資料遷移呢?這裡支援分布式架構的資料遷移的最關鍵的問題就是做協同,比如有DDL該怎麼辦,DDL誰先做誰後做都存在很大的問題。阿裡雲DTS采用了分布式Raft算法來解決這樣的問題。

資料庫時光機—DBS

資料庫備份服務(Database Backup Service,簡稱DBS)是為資料庫提持續的、可靠的、低成本的備份服務。它可以為多種環境的資料提供強有力的保護,包括企業資料中心、其他雲廠商、混合雲及公共雲。備份主要包括幾種環境,公網自建、本地IDC以及ECS自建的資料庫,可以支援将資料備份到阿裡雲OSS和阿裡雲NAS上。

DBS核心子產品

DBS核心子產品如下圖所示,Full表示全量備份,Inc表示增量備份,這兩者都屬于邏輯備份,此外DBS還提供了實體備份。

DBS秒級備份

DBS能夠實作秒級備份,做到秒級RPO。在做資料庫恢複時需要知道想要恢複到哪個庫和哪個表,但是因為資料一直在變,難以知道恢複到哪個時間點,而DBS能夠幫助使用者恢複到任意時間點。

DBS實體備份

對于DBS實體備份而言,需要有一個Agent,比如使用者隻有本地IDC而沒有公網IP,當他想要進行資料備份隻需要下載下傳一個Agent即可。Agent能夠自動更新,并且一旦啟動之後就能夠自動彙報心跳,所有的操作都在阿裡雲上完成,隻需要點選幾下就能夠将全部資料備份或者恢複完成。

雙11大屏

下圖展示了雙11大屏的情況,大屏上展示了實時交易量,那麼2135億這個數字是怎麼計算出來的呢?因為全球的交易都發生在不同的地方,想要實時統計并展現這個數字就需要剛才講到的DTS技術,通過實時增量訂閱來擷取資料。

阿裡雲Region單元化

阿裡雲本身Region單元化的架構都是借助了DTS技術完成的,進而實作了全球同步。

案例1:基于DTS搭建的銀泰新零售混合雲

舉例而言,銀泰在全球有幾十個商場,之前其資料庫都是Oracle,而為了實作“去O”,銀泰基于DTS搭建了新零售混合雲架構。通過共享Store+源端過濾将銀泰專線帶寬占用從300Mb->30Mb每秒,源庫CPU從40%降低到10%,并且實作了雙副本實作秒級容災。

案例2:某新零售公司異地多活

對于傳統架構而言,異地多活是一件比較困難的事情,而如果今天在阿裡雲上做這件事情就會相對比較簡單了。該公司業務上在多地有多套服務,這些服務同時承擔業務流量,且服務之間互為備份。借助阿裡雲,通過雙向同步功能,進行各業務中心的資料同步,實作資料全局一緻。當某個節點出現異常時,業務秒級切換到其他節點。

案例3:某使用者備份資料線上查詢

資料庫備份DBS和Data Lake Analytics深度合作,釋出備份資料線上查詢能力,讓備份資料“活”起來。無需恢複,使用者可以通過SQL語句互動式查詢備份資料,查詢結果集立刻傳回給使用者。相對于傳統備份,資料在恢複後才有價值,DBS備份資料線上查詢對使用者最大的價值:快速,在備份驗證、歸檔查詢、資料訂正、資料提取等場景上,使用者可以快速擷取備份資料。

案例4:某內建商內建DBS

阿裡雲的某個使用者擁有幾十萬的SQL Server資料庫,想要為使用者提供SQL Server能力,這個廠商就将阿裡雲DTS封裝完成之後來提供服務。由此也可以看出,生态夥伴可以借助阿裡雲以很低的成本做很多事情,最終實作內建商、終端使用者、阿裡雲的三赢。

案例5:某網際網路公司-緩存更新業務解耦

使用者為了提升讀并發,在業務中引入緩存,業務更新請求落在DB,讀請求落在緩存。希望在不影響業務的情況下解決緩存更新問題。對于存在依賴關系的上下遊業務,希望不影響上遊穩定性的情況下,低成本得實作下遊業務通知機制。使用阿裡雲DTS的資料訂閱功能,實時擷取上遊業務的資料庫更新資料,更新緩存内容,解決緩存更新問題;觸發下遊業務邏輯。

案例6:某小視訊公司-業務資料實時分析

很多使用者會通過自己搭建的Flink叢集或者Storm叢集實作實時資料分析,想要将這些資料實作增量地寫入目的端資料庫,通過DTS就能輕松地完成。

案例7:城市大腦

城市大腦是阿裡雲樹立的很好的名片,通過城市大腦幫助很多城市減輕了交通擁堵問題,城市大腦也使用了阿裡雲的一系列産品,包括DTS、ADB、TSDB、DRDS、DMS等。