高可用性—Always On 技术
SQL Server 技术文章
作者: Geoff Allix (内容主管)
技术审查: Michael Raheem
项目编辑:Joanne Hodgins
发布日期:2007年11月
适用产品:SQL Server 2008
摘要:Microsoft® SQL Server® 2008 通过提供各种高可用性解决方案,缩短了业务关键型数据库的停机时间。这些解决方案使用户和企业职员每天24小时、每周7天都可以访问数据,且仍能提供经济有效的高性能。SQL Server 2008 中的 Always On 功能增强了对系统和硬件的保护,减少了计划中或计划外停机的次数和恢复时间,并减少了由于大量用户同时访问同一数据库而导致的冲突。
版权
这是一份预备文档,在本文档中所述软件的最终商业版本发布之前,该文档的内容可能会发生重大变化。
本文档中提供的信息代表了 Microsoft Corporation 当前(软件发布之前)对所讨论问题持有的观点。因为 Microsoft 必须响应不断变化的市场条件,所以其当前的观点不应被解释为是一种承诺,软件发布之后,Microsoft 不能保证现在所提供的所有信息准确无误。
这份白皮书仅供参考。 Microsoft 对本文档中提供的信息不做任何担保、明示、暗示或法律方面的承诺。
用户有责任遵守所有适用的版权法。在版权权利限制下,未经 Microsoft 公司明确的书面许可,本文档的任何内容不能被复制、存储或放进检索系统,或者以任何形式或任何手段(电子、机械、复印、录制或其他)或为达到任何目的进行转换。
Microsoft 对本文涵盖的主题内容可能拥有专利、专利申请、商标、版权或其他知识产权。没有来自 Microsoft 的任何书面许可协议的明确表示,本文不赋予您对这些专利、商标、版权或其他知识产权的任何许可。
除非另有说明,否则本文提及的示例公司、组织、产品、域名、电子邮件地址、徽标、人物、地点和事件皆属虚构,与任何真实的公司、组织、产品、域名、电子邮件地址、徽标、个人、地点或事件无关。
Ó 2007 Microsoft Corporation。保留所有权利。
Microsoft、Windows、Office 和 SQL Server 是 Microsoft Corporation 在美国和/或其他国家/地区的商标或注册商标。
本文中提及的真实的公司名称和产品名称可能是其各自所有者的商标。
目录
简介 1
可用性应用场景 1
提高可用性 2
数据库镜像 2
日志传送 2
故障转移群集 3
地理分散故障转移群集 3
对等复制 3
缩短停机时间 4
快速数据库恢复 4
备份和还原 4
数据页上的校验和 5
在线索引操作 5
在线、段落和页级还原 5
部分数据可用性 6
快照隔离 6
动态配置 6
增强的可管理性 6
数据库快照 6
表和索引分区 7
备份和还原 7
专用管理员连接 7
资源调控器 7
结束语 7
导言
任何应用程序的停机时间都会给企业带来负面影响,导致收入损失、客户满意度下降并损害企业的信誉。许多数据库应用程序,尤其是企业业务应用程序,要求系统停机时间尽可能缩短。系统停机时间的产生有多种原因,如人为失误、自然灾害、硬件或软件故障以及应用程序升级。Microsoft SQL Server 2008 Always On 技术提供了各种选项,可将停机时间降至最低,且保持适当级别的应用程序可用性。
可用性应用场景
对许多业务而言,获得高可用性是一种常见需求。解决方案是否适用于特定的应用场景取决于很多因素,在一种场合下表现最佳的解决方案在另一种场合下不一定是最适合的。例如如下应用场景:
基于 Internet 的运动商品零售商想为其客户提供近似连续的可用性。Web 服务器已加到 Web 场中,但数据库故障会产生错误,这些情形大多数时候会使公司失去客户。该公司已经拥有经核准的标准服务器版本,希望能够避免花费大量资金、更改基础结构或重写应用程序。
猎头公司很关注其用户使用客户数据库时遇到的错误。虽然没有必要立即执行故障恢复,但该公司还是希望拥有一台可以快速在线获得的温备用服务器。
保险公司想为其索赔数据库提供近似连续的可用性。该系统的性能一定不能受到影响,而且当前存储在文件系统中用以支持索赔的文档也必须可用。
管理培训公司有三个站点,每个站点都有一支销售团队。销售团队将各自站点的记录输入 Orders 数据库中。为提高性能,要求每个站点能够在本地服务器上访问公司的所有订单。当出现故障时,为提供可用性,每个站点都必须能够切换到另一个站点的服务器。
会计公司希望在出现故障时(如自然灾害)也能为其客户提供可用性。信息不一定要立即可用,但应该在数小时而不是数天内可供使用。该公司还想每天都保存数据库中的信息,以满足法规要求。拷贝的数据不需要立即可用,但必须在许多年内都可供使用。
玩具制造商想根据销售数据库编制报告,但由于该数据库一直处于使用状态,因此编制报告的过程通常会被当前正在执行的交易打断。该公司希望能够针对未提交的交易编制报告,但这会产生不正确的结果,因为有些交易并不完整。
房地产公司想在用户操作错误时保护系统,希望能够恢复前一天的记录值。该公司还想能够根据前一天的数据编制报告,因为它们不会受到当天交易的影响。在理想情况下,该公司希望实施一种磁盘开销最小的解决方案。
根据各种可用性要求,企业需要一种能为高可用性解决方案提供灵活选项的数据库平台。本白皮书中,可以看到 SQL Server 2008 Always On 技术如何为高可用性提供灵活选项,以使企业能够根据特殊需求实施最佳解决方案。
提高可用性
许多数据库应用程序都是任务关键型的,因此要求停机时间尽可能短,并在发生灾难时能够迅速恢复。SQL Server 2008 提供了各种 Always On 技术,可以使停机时间减至最少及获得适当级别的可用性。
数据库镜像
“Database Mirroring(数据库镜像)”是一种可提高数据库可用性的技术。当主体数据库发生更改时,这些更改也将自动应用到镜像数据库中。当主体服务器发生故障时,客户机应用程序可自动重定向到镜像服务器,而应用程序无需进行任何改动。
可以对 Database Mirroring 进行配置,以对镜像服务器实时应用更改,称为“同步”;或者近乎实时应用更改,称为“异步”,因此可以在系统中指定保护级别和性能开销。
有了 SQL Server 2008 Enterprise Edition 之后,镜像保护就可扩展到数据页。如果发现主体服务器或镜像服务器上的数据页损坏,将从伙伴服务器上检索对应的数据页,而数据操作也会平稳地继续执行。SQL Server 2008 还改善了数据库镜像,它将压缩主体服务器与镜像服务器之间的数据流,而且在手动执行故障恢复时,无需重启数据库。
在基于 Internet 的运动商品公司的案例中,当出现服务器、数据库或页级故障时,Database Mirroring 将提供非常迅速的故障恢复能力。虽然必须购买新服务器,但无需重写应用程序,备用服务器是标准设备,不需要 SQL Server 许可证。
日志传送
“日志传送”是一种高可用性技术,它提供了温备用服务器。备份是在主服务器上执行的,而还原是在一个或多个辅助服务器上执行的。然后,“日志传送”将定期日志备份应用于辅助服务器。虽然数据库镜像只能有一台镜像服务器,但“日志传送”可以有许多辅助服务器,这可以提高保护级别。
“日志传送”是按照时间表执行的,因此在主服务器上的数据更改与这些更改传输到辅助服务器上之间有时间延迟。这种延迟会导致数据损失,但在许多应用场景下,这些延迟可用作还原用户错误的一种方法,因为可以延迟日志数据在辅助服务器上的应用(从而保留辅助服务器上的原始数据)。
为降低主服务器的工作负荷,辅助服务器可用作只读报告服务器,但在应用日志备份时无法运行报告。
在猎头公司的案例中,可利用日志备份与备用服务器执行还原之间的延迟应用“日志传送”。这可以扭转由用户导致的错误情形,因为如果主服务器发生故障,可以直接应用日志以减少数据损失。
故障转移群集
“故障转移群集”是一种 Windows 功能,可对整个服务器提供保护,而不只是保护数据库。多台服务器(称为“节点”)共享磁盘阵列,因此如果一个节点发生故障,则可在集群中的另一个节点上启动它的服务。该解决方案可以防止任何数据损失,并提供自动的客户机重定向服务,但从主服务器到辅助服务器的故障恢复操作没有数据库镜像那样快,而且需要专门的硬件。
Windows Server 2008 扩展了旧版 Windows 的群集功能,它降低了对硬件和基础结构的要求,且在一个群集中支持16个节点。此外,由于不要求所有节点都驻留于同一个子网中并支持 OR 依赖关系(例如,当两个 IP 地址资源中的任何一个可用时,可确保网络名资源也可用),因而强化了群集功能。从总体上讲,在 Windows Server 2008 中可以更容易地设置和管理群集,而引进的群集验证工具有助于确保群集解决方案有足够的硬件资源。通过利用 Windows Server 2008 中的群集增强功能,SQL Server 2008 为整个 SQL Server 实例提供了健壮的高可用性解决方案。SQL Server 2008 还改善了旧版的群集功能,它不要求每个 SQL Server 实例都要有一个盘符,这提高了群集解决方案可以支持的实例数量。
在保险公司案例中,“故障转移群集”可用于提供近似连续的可用性。“故障转移群集”不会影响系统性能,因为它是一种服务器级解决方案,能够为服务器上的其他资源提供可用性。如果担心共享磁盘阵列不能提供足够的冗余,则可使用“地理分散群集”。
地理分散故障转移群集
“地理分散故障转移群集”按照认证的 Microsoft Geographically Dispersed Cluster Services 配置提供服务器级冗余,该配置要求每个站点拥有一个或多个存储阵列。如果站点、服务器节点或磁盘发生故障,系统和磁盘的完整冗余将使故障转移群集能够处理另一站点上的后续活动。该配置可避免共享磁盘阵列发生故障的风险,这将阻止标准群集配置发挥作用。
对等复制
“对等复制”使多个数据库能够相互复制。可以对任何数据库执行更改,而且能以接近实时的方式将这些更改应用于复制拓扑中的其他节点。应用程序的设计要求是,如果主体服务器不可用,应用程序必须能够连接拓扑中的其他节点。
SQL Server 2008 强化了对等复制功能,它可在复制解决方案中增加节点,同时保持复制流程处于在线状态。在旧版的 SQL Server 中,要增加新节点,必须在离线状态下执行复制流程。此外,SQL Server 2008 可以直接利用图形化 Topology Viewer 对对等复制进行设置、监督和管理。SQL Server 2008 还引进了冲突检测机制,可以防止多个复制节点更新同一行时产生的偶然冲突。
在管理培训公司的案例中,对等复制可以从本地访问整个订单数据库,如果另一站点的数据库不可用,则每个站点都可以用于故障恢复。
缩短停机时间
系统停机时间会威胁到任何企业的成功。系统停机时间可能是意外产生的,也可能是为维护任务而预先安排的,例如重建索引或执行应用程序或系统升级。
要使系统避免产生意外停机很困难,因为对于企业而言,意外的硬件或网络故障、人为失误、自然灾害或盗窃都可能会带来灾难性后果。SQL Server Always On 提供了可从计划外停机状态中迅速恢复的技术。此外,通过适当地实施 Always On 技术,任务关键型应用程序平稳运行所需的系统维护和操作流程将使停机时间降至最低。
快速数据库恢复
SQL Server 2008 Enterprise Edition Database Engine 能够在崩溃恢复和数据库镜像故障转移期间提供快速恢复。快速恢复功能使数据库在恢复流程的还原阶段即可使用,它在还原操作期间、数据库页校验以及备份媒体镜像期间均可提供部分可用性。通过支持快速恢复,SQL Server 2008 将在最短的时间内使数据库处于在线状态,因此用户很快就能使用数据库,这要快于如下方法:等整个恢复流程全部完成后,用户和应用程序才可以执行连接。
备份和还原
在高可用性解决方案中,备份至关重要,它要定期提供数据快照,并在出现大范围故障或缺少其他高可用性解决方案时,作为数据源用以还原数据。
SQL Server 的备份媒体镜像功能使用户能够将数据库通过镜像备份复制到多个备份设备上,当媒体出现故障或备份设备丢失时,这将极大提高备份的可靠性。SQL Server 2008 支持在磁盘和磁带上执行镜像备份,但所用的设备必须类似,以避免产生设备不匹配错误的风险。备份镜像集中的所有设备在备份过程中都必须可用,但数据库可从镜像集中的任何单独备份中还原。要利用 Transact-SQL 执行镜像备份,必须使用 BACKUP 命令的 MIRROR TO 子句,如下例所示。
BACKUP DATABASE AdventureWorks
TO TAPE = '.tape0', TAPE = '.tape1'
MIRROR TO TAPE = '.tape2', TAPE = '.tape3'
WITH
FORMAT,
MEDIANAME = 'AdventureWorksSet1';
GO
SQL Server 的另一个备份可靠性特性是,在备份操作期间可以生成校验和,然后校验和可用于验证还原后的数据库。
SQL Server 2008 支持备份压缩,最多可使备份大小减小50%。容量的减小使用户能够更频繁地备份数据,同时也会缩短还原时间。在 BACKUP 命令中,备份压缩可设为 ON 或 OFF,并且可以利用 sp_configure 定义默认的压缩值(on 或 off),以确定在执行 BACKUP 命令时,是否需要制定压缩选项。
数据页上的校验和
“校验和”可比较写入磁盘的值与后续读取的值。如果这些值不一致,则该页将被标记为 suspect(可疑),然后要么手动还原,要么利用 SQL Server 2008 自动从伙伴服务器中还原。
在线索引操作
可用性会受到标准维护操作以及故障的影响。在早期 SQL Server 版本中,索引维护会使受影响的数据变为不可用,但从SQL Server 2005 开始,数据在“在线索引操作”期间均可保持可用性,这些可用的操作包括创建、放置或重建索引。
在执行索引维护时,“在线索引操作”可提高所有系统的可用性,因此也能提高职员的工作效率,并改善客户使用系统时的体验。
在线、段落和页级还原
SQL Server 2008 Enterprise Edition 支持“在线还原”,使用户能够访问数据库被还原的部分,即使数据库的其他部分还不可用,因此这会提高恢复速度、缩短停机时间和提高可用性。此外,可以利用“段落还原”策略还原各阶段的数据库。例如,可以还原包含当前活动数据的文件组,并且可先使数据库处于在线状态,然后还原包含较旧的归档数据的文件组。在灾难恢复应用场景下,段落还原策略可缩短任务关键型应用程序处于离线状态的时间。
由于少量数据页发生损坏而需要恢复数据库时,SQL Server 2008 支持页级还原操作。用户可从许多源数据库的可疑页中识别页 ID,包括 msdb 数据库中的 suspect_pages 表、SQL Server 错误日志以及 DBCC CHECKDB 命令。识别出任何有可能损坏的数据页之后,就可以在 RESTORE 语句的 PAGE 从句中指定页 ID,从而还原数据页。从备份中还原单张页的能力极大地缩短由于数据库损坏导致的停机时间。
部分数据可用性
有了“部分数据可用性”功能,即使数据库的一部分由于隔离硬件或磁盘故障而遭破坏,数据库也能维持在线状态和可用性。如果辅助的非主要数据文件损坏,则数据库未损坏的部分仍将保持在线状态和可用性。因此,即使整个系统不可用,但有些客户和职员仍可访问数据,这会减轻由问题导致的后果,同时另一个可用性解决方案将进入在线状态。
快照隔离
在SQL Server的早期版本中修改数据时,被修改的数据将处于锁定状态,因此其他应用程序和用户就无法使用这些数据。替代方法是读取数据的当前状态(即使这些值尚未被提交)或者当交易未成功完成时回滚数据。
“快照隔离”功能扩展了 SQL Server 2008 中的锁定框架,它使应用程序能够在发生任何数据修改之前查看值。这可防止应用程序被锁定,同时仍将提供真正已提交的数据。例如,在本文开头介绍的玩具制造商案例中,“快照隔离”功能使报告能够运行,并提供精确的交易结果。“快照隔离”使报告更及时、更精确。
动态配置
“动态配置”是 SQL Server Always On 技术之一,利用该技术可以更好地访问硬件特性,如执行热升级,同时系统仍可运行。如果硬件支持“热添加内存”,则在增加系统内存时就不会产生中断,而且 SQL Server 将通过动态内存或者故障移动群集的动态
“地址窗口化扩展插件(AWE)”自动使用这些内存。
SQL Server 2008 还支持“热添加CPU”,因此可为受支持的硬件添加处理器,而且不会使操作中断。
对于任何需要增加处理器或内存资源的系统而言,“动态配置”功能可缩短停机时间,并提高职员工作效率和客户满意度。
增强的可管理性
SQL Server 2008 针对简化恢复操作提供了强大且高效的管理工具,它提供了用于调查、监督以及恢复企业中受损数据的各种工具。
数据库快照
无论是由维护操作还是由终端用户交互导致,人为失误是导致停机的最常见原因。SQL Server Always On 提供了“数据库快照”功能,可用于快速调查人为失误并从之恢复。“数据库快照”就是创建快照时数据库的只读、静态视图。“数据库快照”也可用于编制报告,而且不影响源数据库的可用性。
在房地产公司的应用场景中,“数据库快照”提供了一种将当前值向前一天回滚的方法,还为前一天的数据提供了只读的报告解决方案。由于“数据库快照”仅存储将应用于活动数据库的更改数据,因此它们很节省存储空间。
表和索引分区
“表和索引分区”功能可提高大表的可用性和可管理性,它将大表划分为较小的、更易管理的单元,这种单元称为“分区”。可以独立访问各个分区,因此减轻了 I/O 密集活动产生的影响,如数据加载、备份和还原、索引重建以及索引碎片整理。
SQL Server 2008 使行锁数和页锁数升级为分区锁数,因此提高了分区表的并行性。这种升级减少了应用的锁数,因此加快了跨越查询。在旧版本中,行锁数和页锁数只能升级为表锁数,这会导致应用不必要的大锁,而且会妨碍其他用户。
对于包含大表和大量用户的任何系统而言,提高并行性并减少竞争可改善可用性,而且能够提高职员工作效率和客户满意度。
备份和还原
除了“段落还原”和“在线还原”技术外,备份和还原操作还在恢复方面提供了更多灵活性。SQL Server 使用户能够还原只读数据库文件组,而且无需应用事务日志。它还允许同时执行数据库备份和事务日志备份。
专用管理员连接
“专用管理员连接(DAC)”是一种与服务器之间的高优先级连接,当服务器似乎要停机以及不接受新连接时,它有助于排除故障。
资源调控器
在使用频繁的数据库中,不同的工作负荷可能会为了可用的系统资源而展开竞争,例如 CPU 线程和内存。在某些情形下,这种资源竞争可能会使任务关键型工作负荷受到数据库中其他活动的不良影响。SQL Server 2008 提供“资源调控器”,它根据登录、应用程序和其他因素,为不同的工作负荷指定优先级,从而能够主动管理工作负荷资源利用情况。为工作负荷指定优先级的能力使性能更具可预测性,有助于确保任务关键型应用程序总有数据库服务器资源可以使用。
结束语
当客户或职员无法使用企业中的任何关键系统时,这都会立即影响到企业的利润率。可用性问题和需求千差万别,一种解决方案无法解决所有的问题。
SQL Server 2008 提供了多种解决方案以改善可用性,这种可用性至少在性能和多样性方面能够媲美主流数据库厂商提供的任何类似产品,而且 SQL Server 2008 继续在可管理性和资金价值方面居于领先地位。
获取更多信息:
http://www.microsoft.com/sql
本文对您有帮助吗?请告诉我们您的感受。如果从1(差)到5(极好)的分值中进行选择,您认为本文应该打几分?原因是什么?例如:
您是否认为由于提供了很好的例子、精美的屏幕截图、清晰的文字描述或其他原因而应该给它高分?
您是否认为由于用例不当、屏幕截图模糊、文字描述含混不清而应该给它低分?
您的意见将有助于我们改善所发布白皮书的质量。提交意见。