由於雲計算技術已向專業領域發展,除了使用虛擬軟體化Hypervisor技術實現基礎設施雲化外,基於容器的虛擬化技術在作業系統、資料庫平臺雲化等領域也得到了很大的發展與應用。資料庫即服務 (DBaaS)也在這樣的技術背景下應運而生。
資料庫即服務Database As Services
資料庫即服務 (DBaaS) 是一種資料庫平臺建設架構和數據管理運營方法,在雲計算的框架下,能夠將資料庫功能作為服務提供給一個或多個應用使用。所以資料庫即服務必須支持以下功能:
不同應用租戶共享資料庫平臺的計算、存儲、網絡資源;並且支持這些資源的靈活調配及資源隔離。以按需、自助式方式供應資料庫服務,包括數據實例分配、存儲空間分配等能力的供應和管理。基於資料庫雲平臺,提供不同等級的服務保障。結合已有的定級標準,對不同的IT系統實施差異化的等級服務保障體系。以細粒度方式計量不同資料庫服務租戶的使用情況,可為各獨立資料庫租戶提供計量、計費功能。
在技術實現上可以有兩種技術選擇實現資料庫即服務:
基於IaaS層提供的基礎設施,在不同的虛擬機中部署相關資料庫平臺軟體服務。直接通過資料庫軟體平臺的容器技術來實現資料庫軟體、硬體(伺服器、存儲)的統一管理、部署、資源分配和回收。
目前,第一種方式在實際應用中會存在管理的複雜性、兼容性問題,甚至還可能存在嚴重的性能瓶頸和整體運行風險的問題。例如,某業務系統在基於X86伺服器上通過VM虛擬化技術來實現IaaS層資源池,再部署Oracle資料庫和業務應用,通過實際測試發現, 性能損耗超過40%以上;而且還存在Oracle RAC資料庫沒有在VMWare平臺得到廠商官方支持的問題,一旦遇到系統問題,診斷、問題解決都存在很大的潛在運行風險。
所以,通過資料庫平臺自身容器技術形成資料庫PaaS層服務,是目前核心資料庫系統、特別是Oracle資料庫用戶進行資料庫雲建設的主要技術選擇。通過Oracle資料庫軟體平臺結合相關的硬體基礎設施,形成資料庫共享資源池,然後按照各個應用需求在資料庫資源池中申請硬體資源、獲得資料庫服務,而且支持不斷部署不同的業務應用在雲平臺中,實現系統的集中化整合。
這樣可以有效的節省計算和存儲資源、機房空間、耗電和配套、人力維護,提高系統的可靠性、擴展能力、計算能力,避免出現業務要求和的系統支撐能力不匹配問題。
Oracle 資料庫服務的四種部署模式
▲ Oracle資料庫服務的四種部署架構
1. 基於虛擬機部署資料庫(IaaS模式)
第一種方式是在虛擬機上部署Oracle資料庫,這種模式共享的是物理伺服器,在物理伺服器上增加了hypervisor虛擬化層,虛擬化層之上的每個虛擬機都會運行單獨的作業系統,之上再部署獨立的資料庫實例。
優勢:
資源隔離性好,作業系統級別的隔離。伺服器虛擬化技術較成熟。
劣勢:
只共享物理伺服器,資源共享度不高,且伺服器虛擬化的CPU和IO損耗很大。IaaS層伺服器虛擬化只能實現計算資源「大分小」 。只支持資料庫單實例運行,性能擴展能力差,高可用切換慢。虛擬化軟體需要共享單臺存儲盤陣,導致I/O性能不佳。
部署定位:
這種方式適合提供對可用性、性能要求不高的小型資料庫服務 。
2. 基於共享伺服器集群部署多個資料庫實例(PaaS模式)
在一組共享的物理伺服器集群上部署Oracle資料庫,這樣的一組物理伺服器需要採用同構的伺服器和同版本的作業系統,部署運行Oracle的Grid Infrastructure集群軟體,在此集群之上可以部署一個或多個資料庫實例(可以是單節點/實例的資料庫,也可以是多節點RAC資料庫),這種模式共享的是物理伺服器和作業系統,但每個應用還是有獨立的資料庫實例,從而有各自獨立的SGA內存管理、後臺進程等等。
優勢:
資源共享度、整合密度高於虛擬機模式。每個應用系統有自己獨立的資料庫實例,很好的資源隔離性。良好的性能,支持伺服器計算能力和存儲容量及IO能力的橫向擴展。
劣勢:
共享了物理伺服器和作業系統,但每個資料庫實例仍獨享自己的內存、後臺進程,當整合資料庫數量較多時,這些重複的基礎功能造成CPU和內存重複開銷,資源共享度、整合密度仍有待改善。
部署定位:
這種方式適合提供整合資料庫數量不是特別多、或是規模較大的資料庫服務。
3. 共享一個資料庫實例部署多個Schema(PaaS模式)
在共享的一個資料庫實例內,通過開通多個schema及其關聯對象提供資料庫服務,資料庫實例和其後的作業系統、伺服器硬體平臺均為共享的。
優勢:
資源共享比例高,CPU內存使用更高效,性價比好。資料庫服務開通速度快。良好的性能,支持伺服器計算能力和存儲容量及IO能力的橫向擴展。非常適合不同用戶間需要大量數據共享的場景。
劣勢:
隔離程度低,只能做到資料庫用戶Schema級別隔離,訪問不同Schema的對象只需要授權就可以。每個資料庫用戶不能獨立進行資料庫管理,只能一起進行資料庫備份和恢復。
部署定位:
這種方式適合對資料庫隔離性要求不高、或是用戶間需要大量數據共享的場景。
4. 使用DB 12C多租戶功能,通過可插拔資料庫提供資料庫服務(PaaS模式,12C新特性)
Oracle 資料庫12c版本,新增多租戶功能,使用這個特性,可以將Oracle資料庫按照一個統一的容器資料庫CDB + 多個可插拔資料庫PDB的方式進行部署。
容器資料庫層統一包含了SGA內存管理、後臺進程、資料庫啟動參數文件/redo log/Undo 等公用功能(之前的獨立資料庫實例,每個資料庫有獨立的SGA區、後臺進程,現在不再需要了),可插拔資料庫PDB則管理自己的一組表空間,其中包括 SYSTEM 和 SYSAUX、以及用戶業務表空間。
採用Oracle 資料庫12c部署資料庫雲,用戶的資料庫可以採用可插拔資料庫PDB進行供應,這些PDB部署在統一的容器資料庫CDB之上,共享一個資料庫實例,也共享了後臺的物理伺服器和作業系統,資源共享程度很高。
同時用戶的PDB之間還保持了很好的隔離性,從用戶的使用來看,PDB和傳統獨立實例的資料庫是沒有區別的,應用無需改造。相對於獨立的資料庫實例,12c的多租戶模式架構的資源共享程度很高,節約了重複的資料庫系統開銷。
優勢:
資源共享比例最高,CPU和內存使用更高效,整合密度和投資性價比最佳。資料庫服務開通速度最快。良好的性能,支持伺服器計算能力和存儲容量及IO能力的橫向擴展。資源隔離性好(用戶使用感受和獨立實例資料庫一致)。
額外工作:
資料庫升級/遷移到12c版本,原有應用功能需要進行測試驗證。
部署定位:
適用於靈活提供各種規模、可用性、安全等級的資料庫服務。
部署模式推薦
在條件允許的情況下,將資料庫升級到Oracle 12C以上或者直接部署Oracle 12C以上版本,採用DB 12C部署資料庫,DB 12C的多租戶特性可以很好的和RAC集群進行結合,12C的容器資料庫CDB能夠部署在一臺或多臺物理伺服器節點構成的集群上,可以靈活控制每個PDB的服務運行在集群一個或多個節點上。
同時集群伸縮性(可擴展性)也非常好,當整個集群的負荷較高時,可以在線為集群增加物理伺服器節點,並方便的調整各個PDB服務的運行節點,進行負載均衡,降低整個集群的負荷。
資料庫雲的所有PDB的數據可以均勻打散分布在資料庫存儲資源池的所有存儲設備上,並且支持跨存儲設備的鏡像。當添加/刪除新存儲設備時、或是硬體出故障時(單塊磁碟損壞/單臺存儲設備損壞),可以進行在線數據自動重分布,使負載均衡和跨存儲設備的數據鏡像保護仍然得以保持,重分布的過程中數據可正常讀寫訪問,對上層的資料庫和應用透明。
通過添加新存儲設備、在線數據自動重分布,可以使資料庫存儲集群整體容量和IO能力線性的橫向擴展。
作者:黃史浩
往期回顧
如何改善監控問題,試試打造企業統一監控平臺體系!
雲計算|數據在雲上安全嗎?DDoS攻擊怎麼辦?
如何基於TAPD實踐Scrum的敏捷開發?
嘉為藍鯨出席全球運維大會:運維巔峰時代,研運中臺或是唯一選擇
錯誤提示:網絡連接問題?試試用netstat監控網絡連接!