由于云计算技术已向专业领域发展,除了使用虚拟软件化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能力线性的横向扩展。
作者:黄史浩
往期回顾