原文地址:http://blogs.technet.com/b/azuretw/archive/2014/10/06/azure-sql-database-point-in-time-restore.aspx

本篇文章,将说明 Azure SQL Database 的时间点还原( Point in Time Restore )功能,这项功能在 Azure SQL Database BasicStandardPremium 版皆有提供。在先前的文章中,Azure SQL Database 团队已经介绍了 Azure SQL Database 多项新功能,其中也包含了时间点还原,您可以参考下列图表。在这份图表我们可以看到,时间点还原功能是使用最近的数据备份 ( backup ) 来还原受损或是遭到删除的数据库。

RTO ( Recovery Time Objective ) : 可忍受的数据遗失的时间长度

RPO ( Recovery Point Objective ) : 系统要在多少时间内回复正常

业务连续性与灾害复原( BCDR, Business Continuity and Disaster Recovery )相关功能

Basic

Standard

Premium

实时还原

( Point in Time Restore )

还原至过去7天内的某时间点

还原过去14天内的某时间点

还原过去35天内的某时间点

地理还原

( Geo-Restore )

RTO<24小时

RPO<24小时

RTO<24小时

RPO<24小时

RTO<24小时

RPO<24小时

标准异地数据复制备援

( Standard Geo-Replication )

不支持

RTO<2小时

RPO<30分钟

RTO<2小时

RPO<30分钟

主动式异地数据复制备援

( Active Geo-Replication )

不支持

不支持

RTO<1小时

RPO<5分钟

何谓时间点还原 ( Point in Time Restore ) ?

Azure SQL Database服务中的所有数据库,皆会受到自动备份系统( automated backup system )保护。备份的保留期限会随着订阅的 Azure SQL Database 层级而有所不同,Premium 版为 35 天、Standard 版为 14 天、Basic 版为 7 天。

时间点还原为一个自助式服务( self-service ),允许客户利用在保留期间所做的的备份来还原数据库。在使用时间点还原功能时,会重新建立一个新的数据库。

Azure SQL Database数据库备份采取自动备份,您不需要做设定而且也不会额外针对备份来作收费,您只需要在使用时间点还原功能时负担额外的费用。还原时所建立的新数据库,其收费标准跟平常的数据库收费标准一样。

总而言之,自动备份系统和时间点还原提供了零成本和零管理的方式来保护您的数据,无论任何原因损毁了数据库,您都可以在保留期间内任一时间点中回复。

了解何谓自动备份 ( Automatic Backups )

所有的Azure SQL Database数据库的 Basic、Standard、Premium 版都提供了自动备份的功能。 Azure SQL Database 会每周做一次完整备份 ( full backups ),每天做一次差异备份 ( differential backup ) 以及每五分钟进行事务历史记录备份 ( log backups )当数据库被建立完成后即会开始第一次完整备份,这通常要花费 30 分钟甚至更久的时间来完成备份。若该数据库生来规模就很大 ( born big ) (例如 : 建立的数据库为数据库副本或是从大型数据库还原所产生的数据库 )备份所需的时间会花费更久。在第一次备份完成之后,所有后续的备份会自动的由系统做安排,并且 "默默" 地在后端进行管理。

完整备份( full backups )和差异备份( differential backups )的确切执行之时间点,是由系统依据目前以系统负载量来做决定。而备份的档案储存在与目前数据库相同的数据中心内。

当您还原一个数据库时,还原所需的备份文件将从本地备援处( local redundancy )来获取。而每周和每日的最新备份也会复制到 Microsoft Azure 地理备援的配对数据中心 ( paired region ) 以便进行跨数据中心之灾难回复。关于地理备援的叙述,在 Azure SQL Database 团队之前发表的文章中有更详细的叙述。

对使用中的数据库 ( Live Database ) 作时间点还原

进入 Azure 管理入口网站,即可透过简单的操作将各版本之 Azure SQL Database ( Basic、Standard、Premium )数据库还原到任何的时间点 ( 但必需在备份的保留期限内 )。

您可以选择在数据库列表中选取需要还原的数据库,或是进入该数据库的仪表板内,并且点击"还原"选项。

您将会被提示要输入一个新的数据库名称,并且利用滑动组件来选取想要还原的时间点 ( 必需在保留期限内 ),同时也可以手动输入最接近的时间点。完成之后按下确认键,数据库便会开始还原到您所设定的时间点。

还原数据库所需的时间由很多因素决定,包含 : 数据库大小、选取时间点远近、要还原到选取时间点数据库需要重新架构的状态数量等,通常一个庞大的数据库,需要数个小时来还原。

还原的数据库将会被建立在与原始数据库相同的服务器上,也因此我们需要重新赋予数据库新的名称。而还原数据库的服务层级则是与还原时间点时数据库设定的服务层级相同。

您需要确认您的数据库有足够的数据库传输单位额度( DTU ),同时也要注意的是,还原时所建立的新数据库,其服务层级可能会与目前数据库的状态不同。

一旦完成了还原动作,还原的数据库收费标准与一般的数据库是相同的。

您可以将还原数据库来替换原本的数据库,或是利用还原数据库作为数据检索,再去更新原始的数据库。

若您还原数据库的目的是用来取代现有的数据库,您应该要验证服务层级与效能层级是否合适,并且在需要时进行扩充。透过更改原始数据库名称,再将还原数据库的名称利用 T-SQL 指令 ALTER DATABASE 将名称更改为原本数据库的名称,这样就可以完全取代原本的数据库了。

若您计划从备援数据库内读取数据,您将需要分别编写和执行您所需要回复数据相关之Script。

虽然还原数据库需要花费相当长的时间,但是在还原的过程时,还原数据库就会显示在数据库列表上。您可以在还原的过程中删除还原数据库,此时将会取消还原的动作,您将不需要付出任何费用。

还原最近删除的数据库

您能够将在其保留期限内不小心遭到删除的数据库还原到被删除的时间点,或更早的时间点。

您可以使用Azure管理入口网站来还原被删除的数据库,首先需要在 Azure SQL Database 的数据库列表中,选取"已删除的数据库"选项,将可以看到还在保留期限内遭到删除的数据库列表。

 

注意 : 若您重复使用太多次相同的数据库名称,则需要更加注意删除的时间,这样才不会还原到错误的数据库。

就如同先前还原步骤一样,您需要为还原数据库新增一个名称,而且您还原的数据库也只能够还原到与原始数据库相同的服务器上。比较特别的是,在这种情况下的还原步骤,只能够选取固定的时间点作还原。还有一点要注意的是,当您删除服务器(Server)之后,您将无法复原先前存放在该服务器的所有数据库。

备份 (Backup ) / 还原 ( Restore ) vs. 复制 ( Copy ) / 导出 ( Export ) / 汇入 ( Import )

时间点还原可以将数据损毁或是被删除的数据库重新复原。时间点还原并非使用先前 Azure SQL Database Web/Business 版数据库运用复制为技术基础,所实作出的导出 ( Export ) / 自动导出 ( automated export ) 方式 ( 此方式较为昂贵 ) 来回复数据库。单单这一改进就证明了新版 Azure SQL Database 的优势。

  • 新版的服务层备份和还原的费用相对的便宜 ( 就备份方面,如果没有要增加额外的备份,是不需要收费的,而需要收取的费用则是用来确保您的数据库副本导出的一致性还有储存BACPAC file )。
  • 零管理 ( Zreo Admin ) : 备份是由系统自动进行的,您只需要自行管理和安排导出的排程。
  • 更好的 RPO : 您可以还原到特定的时间点,并且时间可以使用到比使用导出汇入的方式更精细的刻度( 1分钟 )。
  • 更好的 RTP: 从备份复原的速度比汇入的方式还要快。

注意 : 虽然在保存期限内,利用备份方式回复数据库是相对便宜及快速的,而使用复制/导出/汇入方式仍适用于更长期数据库备份策略( long term archival )。

使用 APIs 还原数据库

除了透过 Azure 管理入口网站来还原数据库之外,您也可以使用 PowerShell ( Start-AzureSqlDatabaseRestore ) SQL Database management API 来还原数据库。

总结

自动备份与时间点还原(自助式服务)功能保护您的数据库,让其能够从数据损毁以及删除的状态下回复,这种零成本和零管理的方法,不管是在哪一种服务层BasicStandardPremium)的数据库都有提供。备份和还原功能在短期回复的需求下,性能较优于使用复制/汇入/导出的方式,因此就短期数据库回复而言,我们鼓励您使用这种方式来做为您的商业连续性对策,而仅在需要长期归档或数据转移时才使用导出/汇入的方式。