总结:SQL Server 2008高可用性解决方案优劣分析

总结:SQL Server 2008高可用性解决方案优劣分析

5219发表于2016-04-07

最近在搞sql server 2008的高可用性和双机生产环境热备。其实sql 2005、sql 2008、sql 2012其实都差不多。无外乎就数据库镜像、日志传送或者复制、故障转移群集等等,sql server2012新增的Always on(据说很强大,还没时间研究)不在本文讨论。


在SQL Server 2008数据库中,本身就带有不少的高可用性解决方案。如可以采用故障转移群集、数据库镜像、日志传送或者复制等手段来提高数据库的高可用性。由于解决方 案多了,数据库管理员不得不掌握各个解决方案的优点与缺陷,然后根据企业的实际应用来选择合适的解决方案。其实,这不仅仅是在考验解决方案的优劣性,也是 在考验数据库管理员的能力。


一、数据库镜像的优劣分析。

数据库镜像是一个软件解决方案,可以提供几乎是瞬时的故障转移,以提高数据库的可用性。简单的说,数据库镜像解决方案就是设置多个数据库,在多个数 据库之间进行数据多同步。不同在同一个时间内,只有一个生产数据库(或者叫做主体数据库),而其他数据库都是备用数据库(又叫做镜像数据库)。当主体数据 库出现故障时,系统会自动切换到镜像数据库上。此时这个镜像数据库就变为了主体数据库。由于主体数据库与镜像数据库之间数据进行了实时的同步,所以对于用 户访问来说,基本不受影响。


镜像服务器解决方案最大的优点就是可以提供几乎是瞬时的故障转移。不过所采用的数据库镜像的方案不同,对于这个“瞬时”的影响也是不同的。数据库镜 像可以具体分为高安全模式与高性能模式。在高安全模式下,主要体现“安全”两个字,已提交的事务会交给伙伴双方提交,此时虽然比较安全,大那时会延长事务 滞后的时间。而在高性能模式下,事务部需要等待镜像服务器将日志写入到硬盘中便可以提交,为此可以最大程度的提高数据库数据不同的性能。


不过这个解决方案也有一定的缺陷,最主要是其限制条件比较多。如只能够使用标准服务器;只能够使用数据库快照对镜像服务器进行有限的报告;只能够使 用数据库单一、重复的副本。如果需要其他的副本的话,在可以在使用数据库镜像的同时,采用数据库的日志传送功能。可见几个不同的解决方案可以一起结合使 用,吸长补短,以提高数据库的性能与高可用性。


二、日志传送的优劣分析。

跟数据库镜像一样,日志传送也是数据库级别的操作。通常情况下,可以使用日志传送来维护相应生产数据库的一个或者多个备用数据库。在日志传送中,这 个生产服务器叫做主数据库服务器,备份服务器叫做辅助数据库。而在数据库镜像解决方案中,这个生产服务器也叫做主数据库服务器,不过这个辅助数据库则叫做 镜像数据库。虽然他们的名字相同,但是实际上代表着同一种含义。日志传送配置包括一个主服务器(包含主数据库),一个或多个辅助服务器(每个服务器包含一 个辅助数据库)和一个监视服务器。每个辅助服务器从主数据库的日志备份按设置的时间间隔更新其辅助数据库。日志传送涉及到主服务器创建主数据库日志备份和 辅助服务器还原日志备份之间用户可修改的延迟。发生故障转移之前,必须通过手动应用全部未还原的日志备份来完全更新辅助数据库。


日志传送的优势也很明显,如最大的优势可以根据需要来定义数据同步的时间,如可以将延迟的时间定义为从主服务器备份主数据库日志到辅助服务器必须还 原日志备份之间的时间。在某些特定的应用环境中,这个特性会非常的有用。而且,针对单个主数据库可以在多个服务器实例上支持多个辅助数据库等等。


不过在有些情况下,这个日志传送解决方案往往不单独使用。例如将日志传送解决方案与数据库镜像结合使用。如此的话,这两个解决方案就能够各自发挥彼 此的优势,以实现互补的目的。如日志传送具有支持多个备用数据库的灵活性。如果需要多个备用数据库,可以单独使用日志传送或将其作为数据库镜像的补充。当 这些解决方案一起使用时,当前数据库镜像配置的主体数据库同时也是当前日志传送配置的主数据库。


三、故障转移群集的优劣分析。

故障转移群集由具有两个或多个共享硬盘的一个或多个节点或服务器组成。各应用程序将安装到一个称为资源组的群集服务群集组中。在任何时候,每个资源 组都仅属于群集中的一个节点。该应用程序服务具有一个与节点名称无关的虚拟名称,称为故障转移群集实例名称。应用程序可以通过引用故障转移群集实例名称与 故障转移群集实例连接。应用程序不必知道哪一节点承载该故障转移群集实例。跟上面两个解决方案相比,这个故障转移群集解决方案可以说是一个基于硬件的解决 方案。


故障转移群集解决方案也有不少的限制条件。有些限制条件跟数据库镜像的解决方案是相同的。如两个方案都只能够利用数据库的单个副本;需要在服务器实 例范围内进行方案的实施(在镜像解决方案中比较确切的说法是需要在服务器作用范围内进行实施)。另外对于股指群集解决方案中,还有另外的一些限制。如是因 为基于硬件的解决方案,为此对于硬件有比较特殊的要求,如要求硬件必须是签名的硬件等等;另外也不能够防止磁盘故障等等。其次就是在报告功能上的限制。由 于故障转移群集不致此后备用部分的报告功能,这或多或少让一些数据库管理员感到遗憾。


不过与其他解决方案相比,这个故障转移群集也有很大的优势。如具有自动监测和故障转移的特性如在当前节点不可用时,这个解决方案可以自动监测到这 种故障,并可以自动在节点之间进行故障转移。假设在发生操作系统故障、非磁盘硬件故障或者对操作系统或者数据库系统进行升级时,可以在故障转移群集的一个 节点上配置 SQL Server 实例,使其故障转移到磁盘组中的任意其他节点。不仅可以自动监测和故障转移,有时候出于特定的目的,还可以进行手动故障转移。如对数据库服务器进行升级 时,可以手动的启动另外一个节点等等。另外最重要的一点就是可以透明客户端重定向


四、复制解决方案的优劣分析。

在SQLServer数据库中,复制也是提高可用性的一个常用的解决方案。复制使用发布-订阅模式。这样,主服务器(称为发布服务器)便可向一个或 多个辅助服务器(即订阅服务器)分发数据。复制可在这些服务器间提供实时的可用性和可伸缩性。它支持筛选,以便为订阅服务器提供数据子集,同时还支持分区 更新。订阅服务器处于联机状态,并且可用于报告或其他功能,而无需进行查询恢复。SQL Server 提供三种复制类型:快照复制、事务复制以及合并复制。这里需要注意一点,在写项目文档的时候,需要注意不同解决方案中对于主服务器与备份服务器的称呼都是 不同的。如果数据库管理员在制作文档时发生张冠李戴的情况,虽然他们只是叫法不同,其代表的含义基本上相同。


笔者认为,采用复制这个解决方案,相比其他方案来说,主要的优势有两个。一个是可以实现数据刷选,即可以决定在订阅服务器中保存发布服务器中的哪些 数据。订阅服务器可以使发布服务器的子集,包含其部分数据,而不是全部数据。数据同步的效率就会比较高,因为可能不需要对全部数据进行同步。另外一个优势 就是复制这个解决方案,数据滞后的时间最短,即数据同步最及时。

缺点:不支持dml操作(数据结构更改同步),数据同步有延迟,发布中的数据库表不能要更改表结构,要改要停止发布,之后要重建发布订阅。


=====================

SQL Server 2008 联机丛书(2009 年 7 月)

Sql Server 2008高可用性解决方案概述

本节介绍了几个提高服务器或数据库可用性的 SQL Server 高可用性解决方案。高可用性解决方案可减少硬件或软件故障造成的影响,保持应用程序的可用性,尽可能地减少用户所感受到的停机时间。

SQL Server 提供了几个使服务器或数据库具有高可用性的可选方案。高可用性可选方案包括:


一、故障转移群集

故障转移群集可对整个 SQL Server 实例的高可用性提供支持。故障转移群集由具有两个或多个共享磁盘的一个或多个节点或服务器组成。各应用程序将安装到一个称为“资源组”的 Microsoft 群集服务 (MSCS) 群集组中。在任何时候,每个资源组都仅属于群集中的一个节点。该应用程序服务具有一个与节点名称无关的虚拟名称,称为故障转移群集实例名称。应用程序可以通过引用故障转移群集实例名称与故障转移群集实例连接。应用程序不必知道哪一节点承载该故障转移群集实例。
SQL Server 故障转移群集实例将像单台计算机一样显示在网络中,不过它具有一种功能,即在当前节点不可用时,可以在节点之间进行故障转移。例如,在发生非磁盘硬件故障、操作系统故障或进行计划的操作系统升级时,可以在故障转移群集的一个节点上配置 SQL Server 实例,使其故障转移到磁盘组中的任意其他节点。
故障转移群集不能防止磁盘故障。您可以使用故障转移群集来减少系统停机时间,提高应用程序可用性。SQL Server Enterprise 和 SQL Server Developer 均支持故障转移群集,SQL Server Standard 也支持故障转移群集,但有一些限制。有关故障转移群集的详细信息,请参阅SQL Server 2008 故障转移群集入门安装 SQL Server 2008 故障转移群集


二、数据库镜像

数据库镜像实际上是个软件解决方案,可提供几乎是瞬时的故障转移,以提高数据库的可用性。数据库镜像可以用来维护相应生产数据库(称为“主体数据库”)的单个备用数据库(或“镜像数据库”)。
通过还原但不恢复主体数据库的数据库备份可创建镜像数据库。这使客户端不能访问镜像数据库。但是,为了进行报告,可通过创建镜像数据库的数据库快照间接使用镜像数据库。数据库快照为客户端提供了快照创建时对数据库中数据的只读访问。
每个数据库镜像配置都涉及包含主体数据库的“主体服务器”,并且还涉及包含镜像数据库的镜像服务器。镜像服务器不断地使镜像数据库随主体数据库一起更新。
数据库镜像在高安全性模式下以同步操作运行,或在高性能模式下以异步操作运行。在高性能模式下,事务不需要等待镜像服务器将日志写入磁盘便可提交,这样可最大程度地提高性能。在高安全性模式下,已提交的事务将由伙伴双方提交,但会延长事务滞后时间。
数据库镜像的最简单配置仅涉及主体服务器和镜像服务器。在该配置中,如果主体服务器丢失,则该镜像服务器可以用作备用服务器,但可能会造成数据丢失。高安全性模式支持具有自动故障转移功能的备用配置高安全性模式。这种配置涉及到称为“见证服务器”的第三方服务器实例,它能够使镜像服务器用作热备用服务器。从主体数据库到镜像数据库的故障转移通常需要几秒钟的时间。
自 SQL Server 2005 Service Pack 1 (SP1) 起,SQL Server Standard 和 SQL Server Enterprise 已经开始支持数据库镜像伙伴和见证服务器了。但各伙伴都必须使用相同的版本,只有 SQL Server Enterprise 支持异步数据库镜像(高性能模式)。SQL Server Workgroup 和 SQL Server Express 也支持见证服务器。
有关数据库镜像的详细信息,请参阅数据库镜像


三、日志传送

与数据库镜像一样,日志传送是数据库级操作。可以使用日志传送来维护相应生产数据库(称为“主数据库”)的一个或多个温备用数据库。备用数据库也称为“辅助数据库”。通过还原或使用备份但不恢复主数据库的数据库备份创建每个辅助数据库。使用备份还原可以将生成的辅助数据库用于有限的报表。
日 志传送配置包括一个主服务器(包含主数据库),一个或多个辅助服务器(每个服务器包含一个辅助数据库)和一个监视服务器。每个辅助服务器从主数据库的日志 备份按设置的时间间隔更新其辅助数据库。日志传送涉及到主服务器创建主数据库日志备份和辅助服务器还原日志备份之间用户可修改的延迟。发生故障转移之前, 必须通过手动应用全部未还原的日志备份来完全更新辅助数据库。
日志传送具有支持多个备用数据库的灵活性。如果需要多个备用数据库,可以单独使用日志传送或将其作为数据库镜像的补充。当这些解决方案一起使用时,当前数据库镜像配置的主体数据库同时也是当前日志传送配置的主数据库。
SQL Server Enterprise Edition、Standard Edition 和 Workgroup Edition 均支持日志传送。有关日志传送的详细信息,请参阅日志传送概述日志传送管理

四、 复制
复制使用发布-订 阅模式。这样,主服务器(称为发布服务器)便可向一个或多个辅助服务器(即订阅服务器)分发数据。复制可在这些服务器间提供实时的可用性和可伸缩性。它支 持筛选,以便为订阅服务器提供数据子集,同时还支持分区更新。订阅服务器处于联机状态,并且可用于报告或其他功能,而无需进行查询恢复。SQL Server 提供三种复制类型:快照复制、事务复制以及合并复制。事务复制的滞后时间最短,常用于要求高可用性的情况。有关详细信息,请参阅改善伸缩性和可用性
SQL Server 的所有版本都支持复制。SQL Server Express 或 SQL Server Compact 3.5 SP1 不提供复制发布。

重要提示:

完善地设计与实施备份和还原策略对任何高可用性解决方案都十分重要。有关详细信息,请参阅在 SQL Server 中备份和还原数据库备份和还原复制的数据库

五、可伸缩共享数据库

使 用可伸缩共享数据库功能可以扩展专门为报表生成的只读数据库。报表数据库必须驻留在一组专用的只读卷上,这些卷主要用于承载数据库。使用商用服务器硬件和 商用卷硬件,您可以扩展报表数据库,使之在多台报表服务器上提供相同的报表数据视图。此功能还允许报表数据库使用平稳的更新路径。有关详细信息,请参阅可缩放共享数据库概述


参考:

Sql Server 2008高可用性解决方案概述

SQL Server 2008高可用性解决方案优劣分析



小编蓝狐