第一文 SQL Server镜像简介

原文出处:http://blog.****.net/dba_huangzj/article/details/26951563

  镜像是什么?说白了就是个镜子(没用过镜子?没镜子你总要小便吧?开个玩笑。。第一文 SQL Server镜像简介 ),这里镜子的含义主要有两个:1、一模一样,下面会详细介绍,包括库名、数据文件和日志文件的存放路径都要一样。2、看得到,却“用不了”,镜像库在没有做任何处理时是不可访问的。下面进入专业一点的解释:

  数据库镜像(SQL Server Mirroring)从SQL Server 2005  SP2开始引入,虽然从2008开始被列为“将会被弃用”的功能,但是由于其有很多优势,一直被广泛使用至今。本文将介绍镜像的基础,也会介绍和其他SQL Server提供的高可用方案的对比。《SQL Server扫盲》系列将会单独介绍各种高可用方案,所以这里不会过多介绍,主要是进行对比。

 

术语:

本系列将会用到很多镜像甚至高可用的术语,所以这里先介绍相关概念:

  • 主体服务器,Principal:在镜像环境中,包含活动库的源服务器,可以理解为主服务器。
  • 镜像服务器,Mirror:在镜像环境中,包含目标数据库的服务器,即镜像环境中的目标服务器。
  • 见证服务器,Witness:可选的一个服务器,用于监控主体服务器和镜像服务器,最主要的作用是进行自动故障转移(automatic Failover)。
  • 伙伴服务器,Partner:相对于镜像环境而言,镜像服务器就是主体服务器的伙伴服务器,而主体服务器也是镜像服务器的伙伴服务器。
  • 端点,Endpoint:绑定到网络协议中的对象,允许SQL Server通过端点在网络间交互。
  • 会话,Session:活动于镜像环境中,用于维护服务器之间的状态信息和关系。简单来说就是镜像环境中各个伙伴服务器之间信息的传递者。
  • 运行模式,Operating Mode:表示镜像环境的安全级别,镜像的运行模式有三种:带有自动故障转移的高安全性模式(带有见证服务器的同步模式),不带有自动故障转移的高安全性模式(没有见证服务器的同步模式),高性能模式(没有见证服务器的异步同步)。
  • 角色,Role:在镜像环境中的功能,同一时刻,一个特定的服务器只能是三种角色中的其中一种:主体、镜像或见证。

 

运行模式:

  从大层面来说,SQL Server镜像只有两种模式:高安全模式和高性能模式。两种模式的主要区别在于在事务提交后的操作。可以从图1-1中查看运行模式。

  在高性能模式下,主体服务器不需要等待镜像服务器响应即可提交事务。

  在高安全性模式,需要把事务同步到镜像并得到响应后才最终提交主体服务器的事务。

 

注意:不管使用何种模式,主体库都必须配置为完整恢复模式。

 第一文 SQL Server镜像简介

图1-1 SQL Server镜像运行模式

高安全模式,High-Safety Mode:

 

  这种模式是同步模式,可以细分为带有自动故障转移(即有见证服务器)的高安全模式和不带自动故障转移(即没有见证服务器)的高安全性模式。如果没有配置见证服务器,那么【带自动故障转移功能的高安全性(同步)】选项将会为灰色,即不可选。

  两者最大的区别在于是否引入见证服务器,前面提到过,见证服务器能作为仲裁,侦测主体服务器的状态,一旦见证服务器不能连接主体服务器,将把会话自动切换到镜像服务器,如果没有见证服务器,那么需要手动切换。

  在高安全模式下,事务必须在镜像库上提交,才能在主体库提交,这也意味着整套程序都必须等待镜像提交事务后才能最终提交,如果在网络情况不理想,将影响整个运行过程。高安全模式支持标准版和企业版,并且主体和镜像服务器必须是相同版本,比如不能一个是标准版,一个是企业版。

  如果需要*别的镜像安全性,可以使用见证服务器作为仲裁,见证服务器不是必须的,但是却是自动Failover(故障转移)功能必须的。见证服务器可以使用Workgroup(工作组版)或者Express版。

  见证服务器用于检查镜像环境中,主体库和镜像库的联接是否正常。见证服务器并不实际执行Failover,仅仅是告知镜像服务器:“主体服务器宕机了”。即使见证服务器也宕机了,仅仅是不能自动Failover而已,不影响镜像环境。可以把见证服务器理解为,仅用于回答:主体服务器是否已经宕机了?图1-2 是带有见证服务器的高安全性模式的示意图

 第一文 SQL Server镜像简介

 

图1-2 带有见证服务器的高安全性模式

  当出现性能问题的时候,可以根据图1-2的步骤来一步一步侦测。

高性能模式,High-Performance Mode:

 

  这种模式是异步模式,只能手动Failover,所以没有必要设置见证服务器(实际上是可以设置,但是没有任何意义。)。这种模式会有数据丢失的可能。和高安全性模式相比,这种模式不需要等待镜像服务器的确认,所以在网络条件不理想的环境下,是不错的选择。图1-3是高性能运行模式的示意图。

第一文 SQL Server镜像简介

图1-3  高性能运行模式

 

同步、异步处理:

 

  从图1-1 中可以看到,三种运行模式又可以分为两类处理,同步和异步。当镜像运行在同步模式下时,数据库的SAFETY选项为FULL。当镜像为异步时,数据库SAFETY的选项为OFF。两种高安全模式均为同步模式,高性能模式使用异步处理。表1-1 列出了两种模式的主要特点:

表1-1 同步和异步模式的特点:

模式

版本要求

数据丢失

SAFETY选项

性能影响

恢复速度

故障转移

同步

标准/企业

0丢失

FULL

网络可能影响性能

可自动

异步

企业版

有可能丢失数据

OFF

影响较小

根据需要提交的事务量而定

不可自动

 第一文 SQL Server镜像简介图1-4 SQL Server镜像运行模式选择

                SQL Server镜像的运行模式及其重要,直接影响到配置、预算及故障侦测和性能优化。需要在前期做好评估,并且选择满足当前SLA要求的模式。

会话:

 

  在配置完数据库镜像之后,就可以开始镜像会话。在镜像环境的所有服务器交互过程中,都通过会话来维护对方的状态信息。开始会话本质上就是开始主体数据库和镜像数据库的同步进程。

暂停和恢复会话:

 

  当服务器出现性能问题时,暂停数据库会话可以临时停止因为镜像带来的压力,但是要注意,暂停会话会导致日志依旧活动,并且无法截断,如果时间持续太久,会引起日志文件的迅速增长,带来一系列的性能问题。日志相关问题可以查看《SQL Server扫盲》中关于日志备份的文章。地址:http://blog.****.net/dba_huangzj/article/details/26844859

SSMS暂停会话:

  可以通过图1-5中的方式暂时镜像会话

 第一文 SQL Server镜像简介

图1-5 暂停会话

T-SQL暂停、恢复会话:

  可在主体库或者镜像库上执行下面的脚本暂停和恢复会话:

ALTER DATABASE AdventureWorks2008R2 SET PARTNER SUSPEND;--暂停会话