Windows Azure SQL 数据库介绍系列 (3)
我们知道对于本地的传统SQL Server数据库,数据灾备和高可用方案是非常重要的,那么当数据库运行在云中时,我们应该对灾备和高可用性有哪儿些考虑和方法呢?本文将介绍WindowsAzure SQL 数据库提供的灾备和高可用性功能。
首先,Azure SQL 数据库有内置的高可用性的子系统可以在数据中心的个别服务器或设备失败时保护你的数据库。 Azure SQL数据库将数据的多份备份维护在不同的物理节点,这些物理节点的物理位置都是完全独立的子系统,以减少由于单个服务器组件,比如硬件,网络接口适配器或是整个服务器发生故障造成的停机。在任何时间,至少三个数据库的副本——一个主库,两个或多个副库在运行。数据会通过基于仲裁的提交机制,在事务提交之前写入主库和一个副库。如果主库上的硬件出现故障,Azure SQL数据库会检测到这个故障,并自动故障转移到副库中。另外以防一个副库的物理损失,Azure服务会自动创建一个新的副库。因此在数据中心至少会有两个物理和事务一致性的数据库副本存在。
除了内置的系统能使用户的数据库具有高可用性之外,Azure SQL数据库还提供了额外的业务连续性功能。
您可以使用Standard geo-replication 或者 Active geo-replication。
Standard geo-replication :
用于标准和高级数据库的Standard geo-replication会扩展本地的HA系统,在配对的数据中心里创建和维护额外的数据库副本。这些副本都是离线且不可访问的,但如果出现了数据中心的损坏,它们的状态会变成在线以便于应用连接。以下是关于Standard geo-replication的更多介绍:
- 一个副数据库被创建于Microsoft定义的“DR paired” (成对的)Azure区域内。比如澳洲东南数据中心和澳洲东部数据中心成对。
- 副数据库在master数据库中是可见的,但是在故障转移完成前不能直接连接(离线数据库)。
- 副数据库由于不可读,所以收费上是有折扣的。
- 当主数据库所在的数据中心出现长时间的停机,用户可以启用故障转移功能。这可能需要在事件发生时至多一个小时来完成数据库启用。在管理门户上会显示受到影响的服务器为“degraded”.
- 在停机情况下,如果应用或者用户没有启动故障转移或者主数据中心区域没有在24小时内从事件中恢复,所有standard geo-replication的数据库将会自动故障转移到副数据库所在的数据中心。
Active geo-replication :
用于高级数据库的Active geo-replication,提供了最小化数据丢失风险和最快恢复时间的丰富解决方案。Active Geo-Replication功能实现了一种机制可以在Microsoft Azure中的同一区域或者不同区域(地理冗余)中提供数据库的冗余。Active Geo-Replication异步地将数据库中已提交的事务复制至最多4个拷贝中。最初的数据库会变成连续数据库拷贝中的主数据库。其余的每个数据库拷贝会变成在线的副数据库。主数据库中已提交的事务异步地复制到每个在线的副数据库中。在特定的时刻,在线副数据库中的数据可能会比主数据库中的数据陈旧,但是在线数据库总会与主数据库保持事务一致性。Active Geo-Replication支持至多四个在线副数据库或者至多三个在线副数据库和一个离线副数据库。副本数据库可以用于负载平衡 (比如reporting服务)或者提供延迟的访问。
其他Active Geo-Replication使用的情境包括:
- 数据库迁移:您可以使用Active Geo-Replication在最短停机时间内将数据库从一台服务器迁移到另一台在线服务器上。
- 应用更新:您可以把在线副数据库当做一个故障恢复的选项。
启用geo-replication的最简单方法是使用Azure 管理门户的geo-replication键,如下图所示:
在上图设置中:
- OFFLINE选项是Standard geo-replication,它表明副数据库是不可访问的。
- ONLINE选项是Active geo-replication。它表明副数据库是只读的。
对于备份/恢复策略,我们提供了时间点恢复(Point-in-time restore) 和地理恢复(Geo-restore) 功能。
Point-in-time restore :
Azure SQL数据库提供自动免费的备份服务。备份的保存时间为:基本版(Basic):7天,标准版(Standard): 14天和高级版(Premium): 14天。Point-in-time restore可以允许用户在备份的保存时间里将数据库还原到任意时间点。Point-in-time restore总会创建一个新的数据库。具体使用方法如下图,点击数据库名后选择restore.
在Restore的设置的中,用户可以指定新数据库名称和还原时间点。
另外,如果有数据库误删除,用户可以在如下菜单中将删除的数据库还原。
Geo-restore :
在区域性灾难的情境下,您可能会需要使用geo-restore.
Geo-restore 提供了使用地理冗余性的备份来恢复创建一个新的数据库的功能。新的数据库可以在Azure的任何区域内创建。由于它的数据源是地理冗余性的备份,因此它可以用来恢复一个数据库即使该数据库已经因为断电或停机而不可访问。Geo-restore 在所有的服务层中都是自动启用的,没有额外花费。
Geo-restore, Standard-restore与Active geo-replication的组合可以提供给您广泛的选择来满足您的应用与业务连续性需求。您的选择将会决定启用什么样的业务连续性场景。下表总结了这些不同之处:
场景 |
Geo-restore |
Standard Geo-replication |
Active Geo-replication |
区域性灾难 |
Yes |
Yes |
Yes |
灾难恢复演习 |
Yes |
Yes |
Yes |
在线应用升级 |
No |
No |
Yes |
在线应用迁移 |
No |
No |
Yes |
负载平衡(只读) |
No |
No |
Yes |
下表显示了不同服务版本的业务连续性功能的不同点:
BCDR 功能 |
基本版 |
标准版 |
高级版 |
Point In Time Restore |
任何时间点 <7 天 |
任何时间点 <14 天 |
任何时间点 <35 天 |
Geo-Restore |
RTO<24h* RPO<24h |
RTO<24h* RPO<24h |
RTO<24h* RPO<24h |
Standard Geo-replication |
不包括 |
RTO<2h RPO<30m |
RTO<2h RPO<30m |
Active Geo-replication |
不包括 |
不包括 |
RTO<1h RPO<5m |
附注:
- 灾难恢复(DR):恢复应用的正常业务功能的过程
- 时间点恢复(Point In Time Restore):恢复数据库到过去的某一特定时间点的能力(在备份保留期限内),为了从由人为错误或编程错误而造成的数据损坏中恢复
- 恢复时间目标(RTO: Recovery Time Objective):应用从发生故障到完全从故障中恢复所需的最大停机时间。
- 恢复点目标(RPO: Recovery Point Objective ):应用从发生故障到完全从故障中恢复之间所丢失的数据更新(时间期限内)的最大数目。
这就是今天的分享,更多Windows Azure SQL 数据库介绍请持续关注本博客的更新。
参考信息:
Azure SQL Database Standard Geo-Replication
https://azure.microsoft.com/blog/2014/09/03/azure-sql-database-standard-geo-replication/
Spotlight on SQL Database Active Geo-Replication
https://azure.microsoft.com/blog/2014/07/12/spotlight-on-sql-database-active-geo-replication/
Azure SQL Database Point in Time Restore
https://azure.microsoft.com/blog/2014/10/01/azure-sql-database-point-in-time-restore/
Azure SQL Database Geo-Restore
https://azure.microsoft.com/blog/2014/09/13/azure-sql-database-geo-restore/