DTCC 2020 | 阿里云程实:云原生时代的数据库管理
摘要:隨著云原生技術的不斷發展,數據庫也逐漸進入了云原生時代。在云原生時代,如何高效、安全且穩定地管理云上與云下的數據庫成為擺在企業面前的一大難題。在第十一屆中國數據庫技術大會(DTCC2020)上,阿里巴巴數據庫生態工具團隊高級技術專家程實(花名:時勤)就為了大家分享了云原生時代的數據庫管理體系以及解決方案。
本文內容根據演講錄音以及PPT整理而成。
本次分享將為大家介紹如何組合使用阿里巴巴云原生數據庫管理體系產品為用戶打造完整的解決方案。
云原生的數據庫管理體系
 云原生時代的主要特征可以大致歸納為兩點,即硬件特征和軟件特征,前者指的是硬件資源池化所帶來的高可用和彈性等;后者指的是在云原生時代,很多工具無需企業自己研發,而可以通過API的方式調用軟件功能的組合,進而有機地組合成軟件生態。
那么,云原生時代的數據庫管理需要哪些技術呢?其實可以主要分為三類,即管理、遷移和備份。其中,管理需要安全、智能化以及面向混合云的能力;遷移主要面對的挑戰在于數據庫的異構;而對于備份而言,如今需要解決的并不是能否備份成功,而是如何激活數據價值。
阿里云數據庫工具體系
 如上圖所示的是阿里云數據庫工具體系。從圖中可以看到,首先,通過DBS、DTS數據遷移、數據庫備份這樣的工具可以打通從其他云或者云下到阿里云上的數據庫,并且還可以使得阿里云上的數據庫與阿里云上的計算平臺、流計算平臺以及數據分析平臺之間實現打通。其次,通過DMS這樣的數據庫管理服務可以管理云上和云下的計算型和分析型數據庫。再次,阿里云還提供了數據庫自治服務DAS,也就是用于優化數據庫管理相關服務的智能化自治平臺。
非云數據庫如何擁抱云原生?——云原生賦能
 接下來分析一個用戶常見的問題,就是對于用戶而言,如果其已有的大量數據庫是非云數據庫實例,應該如何擁抱云原生技術?我們當然可以為其介紹一款云原生數據庫產品,但是用戶所想要了解的其實是如何使用這款產品,如何將數據遷移過來,以及線下的數據庫實例如何與云原生數據庫共同發揮作用。也就是說,對于用戶而言,實際上需要的是一套解決方案。
阿里云數據庫為用戶提供了三種解決方案,可以適用于用戶不同的場景。
- 方案1是整體遷移到云數據庫。在這種方案中用戶最關心的是數據庫和應用的兼容性問題。很多情況下,用戶要從Oracle數據庫遷移到云數據庫或者從自己原有的歷史版本數據庫遷移過來,因此需要關心兼容性問題。此外,對這種方案而言,傳輸性能也需要關心。
 - 方案2是數據仍然在云下,但是要用云原生技術對云下數據進行管理,也就是“數據在云下,管理在云上”。對于這種方案而言,相當于在云上運行了一個數據庫管理軟件,可以幫用戶節省數據庫運維的各種人力成本,而對于用戶而言,做需要關心的是如何在云上管理服務與云下的數據之間建立安全通道。其次,還需要關注數據安全和效能問題。最后,還需要深入考慮智能化問題,因為這種方案并不是要把人的能力搬到云上去,把線下的人工操作變成了線上的操作這么簡單,而是云上的智能化管理,這將大大降低DBA和運維人員的負擔。
 - 方案3是生產數據在云下,二級數據在云上。如何理解生產數據和二級數據的關系呢?其實,生產數據就是業務所產生的數據,比如淘寶的交易所產生的數據,它就直接寫入到了阿里巴巴的買家庫或者生產交易庫,這樣的數據就叫生產數據。而二級數據則是生產數據的備份,將生產數據拷貝到像Hadoop平臺、Elastic平臺以及其他備份數據的地方,這些數據全部叫做二級數據。在Gartner最近的報告中提到在現在的互聯網業界中,二級數據和生產數據的比例已經達到了20:1,也就是說生產數據只占所有管理數據的一小部分,而二級數據反而成為大頭,甚至有可能是消耗資產的主要來源。
 
接下來介紹一些阿里云所提供的數據庫工具。
DMS數據管理——權限管理最佳實踐
 在DMS數據管理產品中存在“三權分立”的概念,這種概念也是數據庫管理在大型企業中的一個最佳實踐。這里大致介紹一下,首先要有管理員或超級管理員的角色,通常由運維Leader或者CTO擔任,其主要負責定義人員的角色和分配人員的權限。其次,通常要有DBA或者運維人員,其負責數據庫的實際操作運維,比如擴容、Schema的變更等。最后的也是現在比較關注的,叫做安全管理員,其負責制定數據操作規范,比如每天可以操作多少次,在什么樣的窗口可以完成這個操作,以及一次操作的范圍有多大等。安全管理員一方面約束DBA,另外一方面則約束第四種角色,即普通用戶,比如業務方的用戶只需要讀寫某個數據庫,而并不需要操作數據庫實例,則需要受到安全管理員的約束;再比如有些高風險業務或者高敏感業務,業務人員不希望運維人員看到具體數據,特別是對于云服務而言,因此也需要受到安全管理員的約束。安全管理員在DMS上可以約束每個類型的普通用戶,他可以看到甚至約束DBA所能夠看到的數據,還可以定義數據的脫敏處理,實現行級別的數據查詢約束。
DMS數據管理——與企業內部賬號SSO系統打通
 上述數據管理最佳實踐落地的最大阻礙在于人和權限的管理沒有到位。對于公司而言,必然存在人員的入職、離職、以及部門更換等流動性過程,因此一定要實現人員權限與其當前位置的強關聯,這樣才是有效的管理,否則權限體系就會崩塌掉。DMS通過提供OpenAPI體系可以支持與企業的單點登錄系統SSO,也就是企業的權限管理系統進行對接。無論是員工入職、更換部門還是崗位、職位調整,都可以通過在系統中聯動DMS的OpenAPI完成權限改變,使得員工權限始終與其崗位和部門保持一致。
DMS數據管理——變更安全/研發效能
 阿里云DMS所提供的功能還有很多,比如研發效能方面的變更工單系統、跨庫查詢等,變更安全方面的SQL審核、數據脫敏、日志追蹤和回滾以及不鎖表變更等。其中,DMS在數據脫敏方面能夠提供智能分析的能力,即便不告訴DMS哪些數據屬于敏感數據,其也能夠智能分析出來;在日志追蹤與回滾方面,DMS能夠從日志中分析出某行數據記錄歷史的修改情況,而不僅僅是展現最終的數據修改結果,并且能夠幫助用戶自動生成回滾SQL。在不鎖表變更方面,相當于把用戶提交的Schema或者批量的DML變更變成數據拷貝之后,在拷貝的副本上面進行變更,然后再完成替換操作。
DAS數據庫自治——自動優化參數
 DAS是一款數據庫自治產品,這里重點介紹DAS在去年和今年發表的兩篇VLDB論文。在2019年發表了題為《iBTune: Individualized Buffer Tuning for Largescale Cloud Databases》的論文,主要是利用機器學習技術智能地調整緩存大小。當DBA只管理10個以內的數據庫,可以用大腦進行記憶像每個數據庫所需要的緩存大小、緩存命中率以及業務RT要求等信息,而對于像阿里巴巴這樣的情況,需要少量的DBA應對上萬的數據庫。此外。在用戶并不具備數據庫調優知識時,人工調整緩存也非常困難。上面這篇論文就嘗試解決這樣的問題,它通過機器學習方法,預測將緩存降低到什么情況,緩存命中率和RT的值會發生什么變化,其中使用的是深度神經網絡技術。這樣的預測技術在阿里巴巴內部上萬個數據庫實例中使用得到的收益就是使得數據庫內存用量降低了12.44%。
DAS數據庫自治——自動優化SQL
 上圖展示的是阿里巴巴DAS在今年VLDB上發布的題為《Diagnosing Root Causes of Intermittent Slow Queries in Cloud Databases》 的論文,主要做的事情就是智能分析慢查詢,分析后的操作分別是自動對SQL進行限流、自動對SQL進行優化以及自動擴容。這樣的事情可能看上去是DBA拍腦袋能決定的事情,但是當面對成千上百個數據庫的時候,想要了解每個數據庫有哪些SQL,以及哪些SQL造成了哪些問題都是非常困難的,是人力無法做到的,一定需要借助機器學習的方法。
DAS數據庫自治——自修復、自安全、自運維
 對于數據庫自治而言,什么時候限流、什么時候擴容,這兩個場景其實是不一樣的。如果通過原有的流量預測,熬過了這段時間流量就會下來,那么此時不應該擴容,因為這是一個短暫的峰值流量,為了短暫突發的峰值流量而擴容是不合適的,那么此時可以對它進行限流。但是如果流量持續上漲,并且預測未來流量還會越來越高,那么就應該擴容。DAS可以自動化地完成預測,無需DBA人工決策。此外,DAS還提供了異常檢測、故障檢測、SQL審計、防注入、安全漏洞修復等一系列功能,詳情可以參考DAS官方文檔。
DG數據庫網關——打通私網、本地IDC和他云
 DG的主要作用是打通線上云數據庫和線下,前面提到一種方案是管理在線上,用戶數據在線下,用戶很容易覺得不安全,可能認為需要在線下開放一個數據庫的公網端口來便于管理。但是阿里云提供的方案并不是這樣的,不用暴露任何的對外的端口,通過反向建立TCP通道的方式,把DG的一端連接到線下數據庫,另一端連到線上管理服務,比如DMS和DAS服務來完成對數據庫的管理,而它的通道是加密的。
DTS數據傳輸——整體架構
 其實,阿里巴巴是最早做數據傳輸服務的,在阿里云誕生之前,DTS的前身DRC就是在阿里內部做數據傳輸的,而阿里早期引以為傲的技術,比如異地多活等都是靠點對點數據同步完成的。現在的DTS作為云服務,其核心競爭力就是支持非常多的源庫和目的庫類型,而這一點的實現并不簡單,因為不同數據庫的日志結構和分布式架構都不一樣,想要支持這些數據庫往往需要經過大量的探索,因此在技術上有相當高的門檻。此外,DTS除了支持從數據庫向數據庫進行遷移之外,還支持向一些分析平臺進行遷移,或通過訂閱方式向一些流計算平臺進行遷移,訂閱接口也兼容Kafka的SDK。
DTS數據傳輸——核心技術:事務級實時同步
 DTS具有事務級別并發的同步。阿里云DTS其實是最早開始研究事務級實時同步的,甚至比MySQL官方更早。此外,在高可用情況下需要防止雙寫,在多活狀態下需要防止循環,并且需要應對數據回放時可能會產生錯誤的問題。
ADMA專業遷移——整體流程
 ADAM是一個專家的數據遷移服務,之所以在前面加了“專家”這樣的形容詞,是因為其不僅僅是對數據進行異構遷移和解決數據在兩端的存儲問題,更多的是幫助用戶進行數據庫選型。ADAM會嘗試去分析用戶線下使用的數據庫,比如ADAM可以幫助用戶分析使用的SQL、存儲過程等,可以分析出線上某個數據庫是否支持這些,如果不支持又可以使用其他什么方案,這也是數據庫架構師或者DBA需要解決的問題,而目標數據庫的選型在ADAM中得到了很好的解決。其次,ADAM能夠實現兼容性分析和自動SQL改造,這是因為數據庫與數據庫之間,即使是寫入的SQL也是不同的,更何況還有查詢的SQL和Join查詢等,雖然都遵循SQL 99規范,但是都有各自方言的SQL語法。最后是自動數據訂正,甚至可以指導應用來修改應用配置和參數來適配新的數據庫,因此叫做專家服務。ADAM即將要推出數據遷移實驗室,用戶將可以在不真正動數據的情況下進行數據遷移嘗試,以此分析SQL以及數據庫管理有何不同。
ADAM——核心技術:SQL語法轉換
 上圖展示的是ADAM關于SQL語法轉換的技術示意圖。ADAM將源SQL通過標記AST語法樹的方式轉化成目標SQL,并針對于轉換中出現的問題輸出轉換報告。
DBS數據庫備份——整體架構
 DBS數據庫備份是阿里云目前正在重點研發的產品,上圖展示了其技術整體架構。
DBS數據庫備份——核心技術:物理全量PIT拷貝、物理增量CBT
 簡單分享一下DBS備份所使用的核心技術,首先是物理備份技術,也就是讓用戶在無感知的情況下高速完成數據備份。目前,業界在物理備份主要需要面對兩個主要技術問題,一個是全量備份的PIT拷貝(Point-in-time Copy)問題,面對這一問題業界提出了五種技術方案,即Copy with Lock、Copy with Log、Copy on Write、Copy on Redirect和Mirror Split。Copy with Lock方案最為簡單,就是加一把鎖,比如拷貝MySQL數據庫,可以將其全部鎖住,并將文件拷貝出來,這樣拷貝出來的文件一定是一致的。所謂Copy with Log就是邊拷貝數據邊拷貝日志,之后將這段時間拷貝的日志進行回放,MySQL使用Xtrabackup,而Oracle使用RMAN,也都是基于這種方案。而SQL Server數據庫所依賴的VSS機制就是使用的Copy on Write方案,可以沒有日志,而是在業務和存儲層接口部分有一層約定來實現一致性拷貝。Mirror Split方案主要用于專用設備。第二個問題就是增量備份CBT(Changed Block Tracking),在增量備份時需要發掘哪些數據塊從上一次到這一次是被修改過的,這樣的發掘能力對于不同的數據庫而言,所使用的技術也是不一樣的,比如Oracle使用RMAN和SBT。Windows使用VSS,而MySQL方面,官方的Percona的XtraDB提供了CBT功能,對于不是這樣的MySQL,則必須要通過掃描方式將更改的數據塊找出來,因此在使用Xtrabackup備份數據的時候開銷很大,而阿里云DBS在這些方面做了大量的優化工作。
DBS數據庫備份——核心技術:數據湖分析
 前面提到希望將二級數據放在云上并發揮數據價值,上圖所示的是將數據備份到對象存儲之后,直接建一個數據湖,然后實現對于數據提交SQL查詢的分析,這意味著數據并不需要再恢復到某個數據庫了,可以直接對備份數據進行SQL查詢,這對用戶是非常友好的,比如對于歷史數據的查詢只需要在備份數據上就可以完成。
DBS數據庫備份——核心技術:CDM沙箱
 前面所提到的方案實際上會涉及到對象存儲接口的多次調用,因此其性能不如原生數據庫,但阿里云提供了更好的方案。如果做物理備份,那么可以運用物理備份技術加存儲虛擬化技術,再加上云原生技術,幫助用戶直接在線上以秒級速度創建一個新的實例,而且創建的數量沒有限制。這項技術在業界叫做Copy Data Management,最近在數據備份的專業領域比較流行。而阿里云能夠實現在任何一個時間點都可以秒級速度拉起一個新的沙箱實例,該實例可以作為應急容災對象,也可以用于做開發測試。
最后針對前面所提到的三個問題給出相應的解決方案。
解決方案1:DTS+ADAM——整體遷移上云
 第一種方案是整體上云,阿里云給出的就是ADAM+DTS的技術組合方案。ADAM完成數據庫畫像分析和云數據庫選型,生成遷移計劃并進行結構的遷移和訂正,DTS對于數據進行全量和增量的遷移,最后ADAM還要對于線下應用進行畫像評估。第一個方案所需要解決的最主要問題就是數據庫異構問題,并打通異構通道。
解決方案2:DMS+DAS+DG——云下數據+云上管理
 第二種解決方案是針對云下數據、云上管理的情況,首先通過DG實現安全網絡打通,然后通過DMS管理線下的數據庫并通過DAS智能運維線下數據庫。而不同身份的數據庫使用者面向不同平臺來使用不同的數據服務。
解決方案3:DBS+DMS+DAS:云下生產數據+云上二級數據
 第三種方案是云下生產數據+云上二級數據,首先通過DBS將數據備份到云上,通過CDM技術生成沙箱實例,既可以滿足應急讀寫需求,也可以面向開發測試秒級提供數據庫副本,并且可以通過DAS實現對于數據庫沙箱實例的運維管理。
點擊這里下載本場演講PPT
相關閱讀
DTCC 2020 | 阿里云李飛飛:云原生分布式數據庫與數據倉庫系統點亮數據上云之路
https://developer.aliyun.com/article/781040
【內含干貨PPT下載】DTCC 2020 | 阿里云葉正盛:數據庫2025
https://developer.aliyun.com/article/780725 
【內含干貨PPT下載】DTCC 2020 | 阿里云趙殿奎:PolarDB的Oracle平滑遷移之路
https://developer.aliyun.com/article/780749 
【內含干貨PPT下載】DTCC 2020 | 阿里云朱潔:NoSQL最新技術發展趨勢
https://developer.aliyun.com/article/780746
【內含干貨PPT下載】DTCC 2020 | 阿里云王濤:阿里巴巴電商數據庫上云實踐
https://developer.aliyun.com/article/781001 
【內含干貨PPT下載】DTCC 2020 | 阿里云張鑫:阿里云云原生異地多活解決方案
https://developer.aliyun.com/article/781031
DTCC 2020 | 阿里云梁高中:DAS之基于Workload的全局自動優化實踐
https://developer.aliyun.com/article/781036 
【內含干貨PPT下載】DTCC 2020 | 阿里云吉劍南:在線分析進入Fast Data時代的關鍵技術解讀
https://developer.aliyun.com/article/780747
原文鏈接:https://developer.aliyun.com/article/780992?
版權聲明:本文內容由阿里云實名注冊用戶自發貢獻,版權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。總結
以上是生活随笔為你收集整理的DTCC 2020 | 阿里云程实:云原生时代的数据库管理的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: DTCC 2020 | 阿里云梁高中:D
 - 下一篇: DTCC 2020 | 阿里云张鑫:阿里