日期:2013-02-03  浏览次数:20550 次

  本文对SQL SERVER 2005数据库镜像进行了教程式的讲解,具体内容包括:引见、动态、可用性场景、实现和高可用性技术,供大家参考!

  概述

  数据库镜像是SQL SERVER 2005用于提高数据库可用性的新技术。数据库镜像将事务日志记录直接从一台服务器传输到另一台服务器,并且能够在出现毛病时快速转移到备用服务器。可以编写客户端程序自动重定向连接信息,这样一旦出现毛病转移就可以自动连接到备用服务器和数据库。

  自动进行毛病转移并且使数据损失最小化通常包括昂贵的硬件和复杂的软件。但是,数据库镜像可以在不丢失已提交数据的前提下进行快速毛病转移,无须专门的硬件,并且易于配置和管理。

  数据库镜像引见

  在数据库镜像中,一台SQL Server 2005实例连续不断的将数据库事务日志发送到另一台备用SQL Server实例的数据库副本中。发送方的数据库和服务器担当配角色,而接收方的数据库和服务器担当镜像角色。主服务器和镜像服务器必须是独立的SQL Server 2005实例。

  在所有SQL Server数据库中,在对真正的数据页面进行修正之前,数据改变首先都记录在事务日志中。事务日志记录先被放置在内存中的数据库日志缓冲区中,然后尽快地输出到磁盘(或者被硬化)。在数据库镜像中,当主服务器将主数据库的日志缓冲区写入磁盘时,也同时将这些日志记录块发送到镜像实例。

  当镜像服务器接收到日志记录块后,首先将日志记录放入镜像数据库的日志缓冲区,然后尽快地将它们硬化到磁盘。稍后镜像服务器会重新执行那些日志记录。由于镜像数据库重新使用了主数据库的事务日志记录,因此复制了发生在主数据库上的数据改变。

  主服务器和镜像服务器将对方视为数据库镜像会话中的伙伴。数据库镜像会话包含了镜像伙伴服务器之间的关系。一台给定的伙伴服务器可以同时承担某个数据库的配角色和另一个数据库的镜像角色。

  除了两台伙伴服务器(主服务器和镜像服务器),一个数据库会话中可能还包含第三台可选服务器,叫做见证服务器。见证服务器的角色就是启动自动毛病转移。当数据库镜像用于高可用性时,如果主服务器突然失败了,如果镜像服务器通过见证服务器确认了主服务器的失败,那么它就自动承担主服务器角色,并且在几秒钟之内就可以向用户提供数据库服务。

  数据库镜像中需求留意的一些重要事项:

  ◆主数据库必须为FULL还原模型。由于bulk-logged操作而导致的日志记录无法发送到镜像数据库。

  ◆初始化镜像数据库必须首先使用NORECOVERY还原主数据库,然后再按顺序还原著数据库事务日志备份。

  ◆镜像数据库和主数据库名称必须分歧。

  ◆由于镜像数据库处于recovering形状,因此不能直接访问。通过在镜像数据库上创建数据库快照可以间接读取某一个时辰点的镜像数据库。(参阅该白皮书后面“数据库镜像和数据库快照”部分)

  留意: 要想获取更多与数据库镜像术语有关的信息,请参阅SQL Server 2005 Books Online中关于“Overview of Database Mirroring”。

  操作模式

  数据库镜像会话有三种可能的操作模式。依据事务安全性的设置以及镜像会话中能否需求见证服务器来决定精确的操作模式。

  表1:数据库镜像操作模式

  操作模式

事务安全性传输机制需求Quorum见证服务器毛病转移类型
高可用FULL同步YY自动或者手动
高保护FULL同步YN只能手动
高功用OFF异步NN/A只能forced

  如果safety设置为FULL,那么通过同步方式传输数据,并且需求一台镜像服务器才能提供数据库服务。quorum投票表决要求至少两台服务器的参与才能够决定两个伙伴服务器各自承担什么角色,配角色还是镜像角色。

  为了更深入研讨这三种操作模式,首先来更进一步研讨一下事务安全性和quorum的角色。

  事务安全性

  If 事务安全性(或者'safety')设置为FULL,那么主服务器和镜像服务器任务在同步传输模式下。当主服务器硬化其主数据库日志记录到磁盘时,也同时将日志发送到镜像服务器。然后主服务器等待镜像服务器的回答。镜像服务器将那些相反的日志记录硬化到镜像日志所在磁盘后,对主服务器进行答复。当safety设置为OFF时,主服务器不会等待来自服务器的确认,因此主数据库和镜像数据库可能不是完全同步的(也就是,镜像可能滞后于主数据库)。

  同步传输方式保证镜像数据库事务日志中所有事务与主数据库事务日志中的事务同步,因此可视为事务是安全传输的。要将safety设置为FULL,使用

ALTER DATABASE [<dbname>] SET SAFETY FULL;

  当safety设置为OFF,主服务器和镜像服务器之间的通信是异步的。主服务器不会等待镜像服务器已将事务记录硬化的确认信息。镜像服务器通过尽快记录事务日志的来试图保持与主服务器同步,但是如果主服务器突然失败同时强制镜像服务器提供服务,那么某些事务还是有可能丢失(参阅SQL Server Books中的'Forced Service')。

  Quorum和见证服务器

  当safety设置为FULL,数据库镜像需求quorum才能提供数据库服务。quorum是在同步数据库镜像会话中要求的所有连接起来的服务器之间的最小关系。由于一个quorum至少需求两台服务器,因此当safety为FULL时,主服务器必须和其他某至少一台服务器组成quorum才能够提供数据库服务。

  见证服务器协助主服务器或者镜像服务器组成quorum。如果存在见证服务器,那么主数据库或者镜像数据库失败时,其余两台服务器还可以组成quorum。如果主服务器无法看到镜像服务器,那么它可以和见证服务器组成quorum,并保持提供数据库服务。类似地,如果镜像服务器和见证服务器看不到主服务器,那么这两台服务器可以组成quorum,镜像服务器担当新主服务器的角色。

  见证服务器失败不被视为数据库镜像绘画中的单点失败。由于如果见证服务器失败了,那么主服务器和镜像服务器还可以组成quorum(更多信息请参阅SQL Server Books Online中的“Quorum in Database Mirroring Sessions”主题)。

  高可用操作模式

  高可用操作模式支持最大程度的数据库可用性,如果主数据库失败将自动转移到经销数据库。它要求将safety设置为FULL并且定义一台见证服务器作为数据库镜像会话中的一员。

  高可用操作模式最适合于那些服务器之间具有高速且可靠的通信线路,同时要求在单一数据库上实现自动毛病转移的场景。当safety为FULL时,主服务器必须短暂等待来自镜像服务器的回答,主服务器功用也因此遭到镜像服务器能力的影响。由于单数据库失败将导致自动毛病转移,因此如果有多数据库使用程序,那么就应该考虑其他操作模式(参阅该白皮书中实现数据库镜像部分引见的“多数据库问题”)

  高可用模式中数据库镜像是自监视的。如果主数据库突然不可用,或者主服务器停机,那么见证服务器和镜像服务器将组成quorum,然后镜像的SQL Server将进行自动毛病转移。此时,竞相服务器实例将其角色转换为新主服务器并恢复数据库。由于镜像数据库曾经重新执行了主数据库的事务日志并且其事务日志也与主数据库同步,因此镜像服务器可以快速提供数据库服务。

  此外,SQL Server 2005可以在数据库恢复前就向用户提供数据库服务。SQL Server数据库恢复包括三个阶段:分析阶段、redo阶段、以及最后的undo阶段。在SQL Server 2005中,只需redo阶段完成,新恢复的数据库就可以让用户访问。因此如果数据库镜像毛病转移发生,新恢复的主数据库只需完成了redo阶段就可以向用户提供服务了。由于镜像数据库自始至终都在重新执行事务日志记录,因此所有镜像服务器只须完成redo过程就可以了,通常几秒钟就可以完成。

  高保护操作模式

  高保护操作模式中事务安全性设置为FULL,但是镜像会话中没有见证服务器。主服务器必须组成quorum,可是没有见证服务器,因此只能和镜像服务器配合在一同。这种模式