云模式下共享模型的数据备份与恢复策略研究
2016-09-23陈俊志白尚旺张少波
陈俊志,白尚旺,张少波
(太原科技大学计算机科学与技术学院,太原 030024)
云模式下共享模型的数据备份与恢复策略研究
陈俊志,白尚旺,张少波
(太原科技大学计算机科学与技术学院,太原030024)
0 引言
软件即服务[1](Software as a Service,SaaS)是云计算发展环境下一种新兴的商业模式。它基于互联网平台,将软件产品做为服务放到云平台上。SaaS最大的特征就是单实例多租赁,即多个租户租赁一个应用服务,并且支持租户按需定制。
SaaS服务面向互联网上的所有租户,每个租户根据自身的实际情况,所要求的数据结构各不相同,SaaS软件开发商们在搭建基于共享模型的SaaS架构时就不得不考虑各租户之间数据结构的差异性问题。同时,为租户提供的数据备份与恢复策略也是一个无法避免需要解决的问题。
1 SaaS数据模型
在设计基于SaaS模式的系统数据模型时,出于降低开发成本和接受服务的租户量等考虑,在数据的隔离、共享之间取得一定的平衡是一个必须考虑的重要因素。就一般而言,SaaS系统的数据模型有如下三种形式[2]:
(1)独立数据库。
在此数据模型中,每个租户单独享有一套数据库系统,这些数据可以布置在独立的服务器中,也可以部署在同一个服务器中,无论哪种情况,租户之间的数据都是高度隔离的,如图1所示。
图1 独立数据库模型
这种数据模型有一个明显的缺点就是物理资源共享程度很低,有多少个租户就要安装多少个独立的数据库,随之带来的就是增加了购置成本和维护成本,这对于一般的SaaS服务提供商来说是无法承受的。
(2)共享数据库、独立Schema。
共享数据库独立Schema模型,即多个租户共同使用一个数据库,但独立使用自己的数据模式集,各租户各自有一套独有的数据表来存放各个租户的数据,如图2所示。相比于独立数据库架构,这在各租户数据的隔离和共享之间采取了折中的方法。
图2 共享数据库独立Schema模型
(3)共享数据库、共享Schema。
共享数据库共享Schema模型,即多个租户不但共用同一个数据库,还共享数据表,如图 3所示。这种模式下多个租户的数据放在一个表里,通过租户编号“租户ID”来区分不同租户的数据。相对于前两种数据库架构,这种模式下的数据隔离性程度最低,共享程度最高,相同规模的硬件设备下,支撑的租户数量最大,最节省设备成本和运维开支。
图3 共享数据库共享Schema模型
2 共享数据库共享Schema
共享数据库共享Schema模型,不仅具有投入成本低等特点,而且每台数据库服务器可以支持最大的租户量;但是由于数据共享程度高,所以要实现租户数据间的隔离和安全需要更加复杂的系统设计和实现。多个租户的数据都放在同一个表里面,但是在任何情况下,即使系统出现异常和故障,租户间的数据都是彼此透明的,一个租户不能访问操作其他租户的数据。这对系统的数据存储和安全来说是巨大的挑战。
从独立数据库,独立Schema模式,到共享Schema模式,数据共享程度越来越高,相应的,数据备份恢复的操作复杂度也越来越高。因为所有租户的数据都放在一起,数据备份和恢复操作都不能针对某一租户而是所有租户。而且进行大量数据修改操作时会影响其他租户的事务处理相应速度,降低系统性能。但是这种架构在租户量大的时候,资源的重用导致成本降低,非常符合SaaS软件的优势,是SaaS成熟度模型中最高一级成熟度模型的数据库架构。
使用共享数据库共享Schema模式,就不得不面对一个问题——数据备份和恢复操作的问题,当系统出现异常情况需要将历史备份数据重新恢复的话,流程将变得相对复杂。因为如果每个租户拥有独立数据库的话,那么只需恢复该租户最近的数据库备份即可。但在独立模式的情景下,如果简单的恢复数据库备份,那就意味着数据库内所有租户的数据将一同被恢复,无论该租户是否数据受损或需要做数据恢复与否。因此,在共享模式下,如果系统管理员希望恢复某个特定租户的数据,就需要采取一些必要的处理操作,然而这是相对复杂、受多方面因素影响的。
3 数据备份与恢复方案
(1)完全备份
完全备份[3],就是复制指定的文件数据或数据库数据,不管其是否改变都进行备份。对当前系统范围内所有的数据文件进行备份,它不依赖于文件的备份标记,并在备份的文件重新加上备份标记。这样,在完全备份之后,所有的文件的都会具备备份标记。当下次完全备份时,并不会检查备份标记,它只是机械性地对当前备份范围内所有的数据文件进行备份,而备份标记是为了增量备份和差异备份准备的,其目的是用于确定备份哪些文件。
优点是:数据恢复速度快。每次备份就包含了所有的数据文件,只要进行一次恢复操作就可以全部恢复,多以恢复速度会很快。
缺点是:浪费磁盘空间,加大备份成本。由于每次是备份所有数据,而没有改变的数据也会备份,产生了大量重复的数据。重复的数据备份文件对用户毫无意义,只会占用磁盘空间,加大备份成本。随着数据文件的增多,每次备份时间会越来越长。
(2)增量备份
增量备份,备份在前一次备份后有所变动的数据。可以多级增量备份,每次备份都源自前一次备份后的改动部分。增量备份同样会增加备份标记,备份前都会对上次的备份标记进行判断,对不同于上次备份标记的进行备份。
优点是:缩短了备份时间,提高了备份效率。由于增量备份只备份变动的数据,这样就解决了完全备份的缺点。
缺点是:数据恢复时间增长,可靠性降低。每次恢复数据前,要将之前的所有增量备份进行依次恢复。多次的增量备份文件如果不慎丢失一两个,就无法全部还原,所以可靠性降低。
(3)差异备份
差异备份,是对完全备份后有所改动的数据部分。如果完全备份后存在一次增量备份和一次差异备份,那么这两次备份的内容是一样的。差异备份以完全备份为分界线,每次的差异备份都是针对上次完全备份后数据的改动部分,直到下次完全备份,差异备份才会终止。差异备份是一个累积的过程,在数据库中叫做累计备份。虽然差异备份的备份时间也会随着数据文件的不断变大而不断增加,但是却比完全备份的时间要短,而且恢复起来较增量备份简单,只需恢复一次完全备份和一次差异备份即可。总之,从空间和时间上来看,差异备份介于增量备份与完全备份之间,在两者之间取得了一定的平衡。
(4)混合搭配应用策略
在理解上面的三种备份方式后,可以根据需要选择合适的备份类型。每种备份方式都有优缺点,如果想要节省备份时间和空间就要牺牲恢复的速度,如果想要恢复的速度,就不得不牺牲备份资源。因此,在实际情况中,很少有单一使用的情况,将不同的备份类型结合起来才是比较符合实际需求的备份策略。在实际备份中,采用的备份策略经常是一下三种模式:
(1)完全备份+增量备份
(2)完全备份+差异备份
(3)完全备份+增量备份+差异备份
以第三种备份策略为例,一个数据库的备份任务可以做如下的安排,如表1所示。
表1 数据库备份周期表
这样的备份模式,第二周重复这一周的安排。假设在第七天,数据库出现异常,维护人员按照顺序,先恢复A,然后恢复E,再恢复F,这样就能够回到出现异常的前一天的情况了。相比于单一的备份方式,这种混合策略既节省了空间资源,也在备份时间和恢复时间上都有所改善,是一种相对最优的策略。
4 基于共享Schema模型数据备份和恢复方案
云环境下的SaaS理念强调的是多租户,为多租户提供相同的基础服务下满足每个租户的个性化业务需求。SaaS其本质是为租户提供个性化服务,决定了SaaS的应用系统对用户的各种业务需求。当然,这其中也包含数据备份和恢复数据的服务。采用共享数据库共享Schema模型的云平台当提供单一用户的数据备份和恢复策略时候,已存在的备份方案无法满足要求。因此,下面给出针对这一问题的解决方案。
基于共享Schema模型数据的存储方式以租户ID来标识每个租户的数据,这是唯一区分多租户数据的方式。提供单一租户的备份和恢复方案,首先要区分租户的数据,同样也是根据租户ID来区分。其思想如图4所示,将租户A的数据首先从数据库中提取出,然后存入到备份数据库中。
基于共享Schema模型备份和恢复策略方案存在两种情况:
(1)当数据备份和恢复的操作是云平台的维护人员操作时。备份数据库不需要实时存在,当需要恢复某单一租户的数据时,再根据备份文件构建备份数据库,然后将备份数据库中需要恢复数据的租户的数据存入到数据库中,在此之前需要将数据库中该租户的数据删除干净。这种情况的备份操作可以采用第三节提到的混合备份策略,将整体的数据备份,当需要恢复某一租户的数据时,备份库中的数据存入到数据库中即可。这种备份恢复策略在已有的备份策略基础之上,构建数据库,然后恢复数据是比较容易想到的。在云平台以服务提供给租户时,备份和恢复的功能作为一种服务提供给租户时,就不能使用这种方法了。
(2)租户使用备份和恢复功能服务。其作为一种服务实时提供给租户,因此需要云平台使用的数据库之外,还需要一个备份数据库。这个备份数据库是实时存在的,云平台提供备份和恢复两种操作,都是将数据存入到备份库中。备份的实现方法可以采用存储过程,使用游标将租户A的数据提取出来,然后使用循环和插入操作将数据备份到备份数据库。恢复的方法类似备份的方法,只是从备份库中提取数据,将提取的数据存入到数据库中,如图5所示。
图4 基于共享Schema模型数据备份示意图
图5 租户自己进行备份和恢复示意图
5 实现与分析
某珠宝店业务管理云平台使用的是Oracle数据库,以此为例实现上述的两种备份与恢复策略,并分析其优缺点。Oracle数据库是一个优秀而且功能强大的数据库,其对数据备份和恢复策略的实现有很好的支持[4]。
(1)当数据备份和恢复的操作是云平台的维护人员操作时,其实现方案如下:
第一步,实现数据备份,使用混合备份模式。其脚本如下:
第二步,当需要进行恢复时,构建备份数据库。
第三步,假如是第七天数据库发生异常,需要恢复某单一租户的数据。
第四步,创建恢复数据的存储过程(不是备份库,而是使用的数据库中)
完成以上四步,即可恢复某一租户的数据。
(2)当数据备份和恢复操作作为功能服务由租户使用时,其实现方案如下:
第一步:前提条件。创建一个和云平台使用的数据库一样大的空间的备份库。
第二步:创建备份存储过程。
第三步,借助云平台的程序端调用该存储过程,完成数据备份。
第四步,同上面(一)的第四步。
第五步,借助云平台的程序端调用该存储过程,完成数据恢复。
通过将两种方案实现并测试发现,第一种方案在备份和恢复的整个过程中,其缺点是步骤繁琐,维护人员的工作量相对较大;优点是服务器不需要同时运行两个数据库,服务器负载小。第二种方案,其最大优点是数据备份和恢复过程操作简单,但其也有缺点,服务器同时负载两个数据库,当备份操作密集时,云平台性能有所降低;当数据表过多,且表之间关联较多,采用此方案,需要考虑数据存入表的先后顺序,将关联度的影响降到最低。
6 结语
总而言之,两种方案各有优势,没有哪个完全优于另一个,各有其适合的环境。在云平台发展初期,可以采用上面第二种备份与恢复策略。由于其发展初期,租户较少,且其数据库结构相对不复杂,而且成本较低,操作相对简单,适合云平台的起步发展阶段。当云平台发展到一定程度,租户较多,不同的租户需求不同,可以根据实际情况选择适当的备份与恢复方案。
[1]叶伟.互联网时代的软件革命——SaaS架构设计[M].电子工业出版社,2009:6-9.
[2]唐圣潘,周肆清,丁长松.基于SaaS模式的共享模型的数据扩展技术研究[J].计算机技术与发展,2011,27(No.8):63-70
[3]刘淑艳,鲁小利.数据库灾难备份与恢复技术分析与研究[J].电子技术与软件工程,2013,16:233-234
[4]李峰,刘晓洁,林翰融.基于Oracle数据库的容灾系统[J].计算机工程与设计,2011,32(No.11):3573-3577
Cloud Mode;Shared Schema;Data Backup and Recovery;SaaS
Research on Data Backup and Recovery Strategies Based on Shared Schema Model in Cloud Mode
CHEN Jun-zhi,BAI Shang-wang,ZHANG Shao-bo
(College of Computer Science and Technology,Taiyuan University of Science and Technology,Taiyuan 030024)
1007-1423(2016)02-0052-06
10.3969/j.issn.1007-1423.2016.02.013
太原科技大学校研究生创新基金资助项目(No.20145023)
陈俊志(1990-),男,天津宝坻人,硕士,研究方向为软件工程技术
白尚旺(1964-),男,山西文水人,硕士,教授,从事领域为数据库与软件工程技术、信息管理与决策支持等方面的科研与教学工作
张少波(1989-),男,河北石家庄人,硕士,软件工程专业,研究方向为软件分析与建模
2015-12-01
2015-12-23
对云模式下共享模型的数据备份与恢复策略进行研究,解决多租户应用中单一租户数据恢复难的问题。首先,简单地描述了SaaS及其数据模型,分析共享数据库共享Schema模型,提出采用该模型下不得不面对的数据备份和恢复的问题。根据数据备份和恢复的操作者不同,给出两种解决方案,并在实际的云平台中应用实现,最后对两种解决方案进行对比分析,给出分析结果。
云模式;共享模型;备份与恢复;SaaS
To solve a single tenant's difficulty of data recovery in multi-tenant application,studies the data backup and recovery strategies based on the shared schema in cloud mode.Describes SaaS and its data model,and mainly analyzes the shared database sharing schema model, proposes to solve the issue of data backup and recovery under the model.According to different data backup and recovery of the operator, are gives and realizes two solutions in the actual application in the cloud platform.Compares and analyzes the results,and presents the analysis.