技术开发 频道

详解SQL Server中的高可用性策略

  数据库镜像

  数据库镜像实际上是个软件解决方案,同样提供了数据库级别的保护,可提供几乎是瞬时的故障转移,以提高数据库的可用性。数据库镜像可以用来维护相应生产数据库(称为“主体数据库”)的单个备用数据库(或“镜像数据库”)。

  因为镜像数据库一直处于还原状态,但并不会恢复数据库,因此无法直接访问镜像数据库。但是,为了用于报表等只读的负载,可创建镜像数据库的数据库快照来间接地使用镜像数据库。数据库快照为客户端提供了快照创建时对数据库中数据的只读访问。每个数据库镜像配置都涉及包含主体数据库的“主体服务器”,并且还涉及包含镜像数据库的镜像服务器。镜像服务器不断地使镜像数据库随主体数据库一起更新。

  数据库镜像在高安全性模式下以同步操作运行,或在高性能模式下以异步操作运行。在高性能模式下,事务不需要等待镜像服务器将日志写入磁盘便可提交,这样可最大程度地提高性能。在高安全性模式下,已提交的事务将由伙伴双方提交,但会延长事务滞后时间。数据库镜像的最简单配置仅涉及主体服务器和镜像服务器。在该配置中,如果主体服务器丢失,则该镜像服务器可以用作备用服务器,但可能会造成数据丢失。高安全性模式支持具有自动故障转移功能的备用配置高安全性模式。这种配置涉及到称为“见证服务器”的第三方服务器实例,它能够使镜像服务器用作热备份服务器。从主体数据库至镜像数据库的故障转移通常要用几秒钟的时间。

  数据库镜像可用于做暖备份和热备份。

  复制

  复制严格来说并不算是一个为高可用性设计的功能,但的确可以被应用于高可用性。复制提供了数据库对象级别的保护。复制使用的是发布-订阅模式,即由主服务器(称为发布服务器)向一个或多个辅助服务器或订阅服务器发布数据。复制可在这些服务器间提供实时的可用性和可伸缩性。它支持筛选,以便为订阅服务器提供数据子集,同时还支持分区更新。订阅服务器处于联机状态,并且可用于报表或其他功能,而无需进行查询恢复。SQL Server 提供四种复制类型:快照复制、事务复制、对等复制以及合并复制。

  AlwaysOn可用性组

  AlwaysOn可用性组是SQL Server 2012推出的新功能。同样提供了数据库级别的保护。它取数据库镜像和故障转移集群之长,使得业务上有关联的数据库作为一个可用性组共同故障转移,该功能还拓展了数据库镜像只能1对1的限制,使得1个主副本可以对应最多4个辅助副本(在SQL Server 2014中,该限制被拓展到8个),其中2个辅助副本可以被作为热备份和主副本实时同步,而另外两个异步辅助副本可以作为暖备份。此外,辅助副本还可以被配置为只读,并可用于承担备份的负载。

  正因为如此,数据库镜像在SQL Server 2012中被标记为“过时”。

  高可用性策略设计

  在了解了高可用性基本的概念和SQL Server中提供的高可用性技术之后,我们再来看一下高可用性策略的设计。高可用性策略的规划可以分为四个阶段:

  收集需求

  决定高可用性策略的第一步无疑是收集业务需求来建立SLA。文中之前所述的RTO和RPO是最关键的部分,在此基础之上为可用性需求建立切实可行的期望,并基于该期望建立切实可行的高可用性策略。

  评估限制

  评估限制不仅仅指的评估是SQL Server中不同的高可用性技术中的限制,还包括那些非技术的限制。如果只有几万元的预算,却要做基于异地数据中心和SAN复制的高可用方案,那无疑是痴人说梦。另一个非技术限制是运维人员的水平,通常来说,复杂的架构意味着需要更高技能的运维人员。其它一些非技术限制包括数据中心的可用磁盘空间、电源供给和空调是否能满足需要,以及实现该可用性策略所需要的时间。

  技术限制则包括不同高可用性的功能与限制,不同SQL Server版本所支持的功能以及CPU个数以及内存大小等。强烈建议在实施高可用性策略之前,首先参阅微软MSDN网站上不同SQL Server版本和功能的限制。

  选择技术

  在收集完需求并评估限制之后,接下来就是选择本文前面所述的技术或技术组合来满足SLA的需求。如果所选技术无法满足SLA,则可以很容易的报告出是由于什么限制无法满足SLA,从而可以申请缺少的资源或在SLA上做出妥协。

  测试、验证并文档化

  在高可用性策略一开始实施的时候就需要经过严格的测试和验证,从而确保当前的可用性策略能够满足SLA。但当高可用性策略上线之后,也要定期进行测试和验证来确保当前的策略在数据增长、业务或需求变更的情况下依然可以满足SLA。同时,要把可用性解决方案的配置、故障转移的方法和灾难恢复计划同时文档化,以便于出现故障或是未来调整高可用性策略时有迹可循。

  小结

  本篇文章阐述了高可用性的基本概念、SLA的概念、SQL Server中所支持的不同种类的高可用性功能以及设计一个高可用性策略所需的步骤。值得注意的是,虽然本文仅仅讲述了数据库层面的高可用性,但高可用性不仅仅是DBA的事,还包括系统运维人员、网络管理人员、开发人员、管理人员等不同角色的共同协作,才能够更好的满足SLA。

0
相关文章