标签:
原文: 第三篇——第二部分——第一文 SQL Server镜像简介
原文出处:http://blog.csdn.net/dba_huangzj/article/details/26951563
镜像是什么?说白了就是个镜子(没用过镜子?没镜子你总要小便吧?开个玩笑。。 ),这里镜子的含义主要有两个:1、一模一样,下面会详细介绍,包括库名、数据文件和日志文件的存放路径都要一样。2、看得到,却“用不了”,镜像库在没有做任何处理时是不可访问的。下面进入专业一点的解释:
数据库镜像(SQL Server Mirroring)从SQL Server 2005 SP2开始引入,虽然从2008开始被列为“将会被弃用”的功能,但是由于其有很多优势,一直被广泛使用至今。本文将介绍镜像的基础,也会介绍和其他SQL Server提供的高可用方案的对比。《SQL Server扫盲》系列将会单独介绍各种高可用方案,所以这里不会过多介绍,主要是进行对比。
本系列将会用到很多镜像甚至高可用的术语,所以这里先介绍相关概念:
从大层面来说,SQL Server镜像只有两种模式:高安全模式和高性能模式。两种模式的主要区别在于在事务提交后的操作。可以从图1-1中查看运行模式。
在高性能模式下,主体服务器不需要等待镜像服务器响应即可提交事务。
在高安全性模式,需要把事务同步到镜像并得到响应后才最终提交主体服务器的事务。
注意:不管使用何种模式,主体库都必须配置为完整恢复模式。
图1-1 SQL Server镜像运行模式
这种模式是同步模式,可以细分为带有自动故障转移(即有见证服务器)的高安全模式和不带自动故障转移(即没有见证服务器)的高安全性模式。如果没有配置见证服务器,那么【带自动故障转移功能的高安全性(同步)】选项将会为灰色,即不可选。
两者最大的区别在于是否引入见证服务器,前面提到过,见证服务器能作为仲裁,侦测主体服务器的状态,一旦见证服务器不能连接主体服务器,将把会话自动切换到镜像服务器,如果没有见证服务器,那么需要手动切换。
在高安全模式下,事务必须在镜像库上提交,才能在主体库提交,这也意味着整套程序都必须等待镜像提交事务后才能最终提交,如果在网络情况不理想,将影响整个运行过程。高安全模式支持标准版和企业版,并且主体和镜像服务器必须是相同版本,比如不能一个是标准版,一个是企业版。
如果需要最高级别的镜像安全性,可以使用见证服务器作为仲裁,见证服务器不是必须的,但是却是自动Failover(故障转移)功能必须的。见证服务器可以使用Workgroup(工作组版)或者Express版。
见证服务器用于检查镜像环境中,主体库和镜像库的联接是否正常。见证服务器并不实际执行Failover,仅仅是告知镜像服务器:“主体服务器宕机了”。即使见证服务器也宕机了,仅仅是不能自动Failover而已,不影响镜像环境。可以把见证服务器理解为,仅用于回答:主体服务器是否已经宕机了?图1-2 是带有见证服务器的高安全性模式的示意图
图1-2 带有见证服务器的高安全性模式
当出现性能问题的时候,可以根据图1-2的步骤来一步一步侦测。
这种模式是异步模式,只能手动Failover,所以没有必要设置见证服务器(实际上是可以设置,但是没有任何意义。)。这种模式会有数据丢失的可能。和高安全性模式相比,这种模式不需要等待镜像服务器的确认,所以在网络条件不理想的环境下,是不错的选择。图1-3是高性能运行模式的示意图。
图1-3 高性能运行模式
从图1-1 中可以看到,三种运行模式又可以分为两类处理,同步和异步。当镜像运行在同步模式下时,数据库的SAFETY选项为FULL。当镜像为异步时,数据库SAFETY的选项为OFF。两种高安全模式均为同步模式,高性能模式使用异步处理。表1-1 列出了两种模式的主要特点:
表1-1 同步和异步模式的特点:
模式
版本要求
数据丢失
SAFETY选项
性能影响
恢复速度
故障转移
同步
标准/企业
0丢失
FULL
网络可能影响性能
快
可自动
异步
企业版
有可能丢失数据
OFF
影响较小
根据需要提交的事务量而定
不可自动
图1-4 SQL Server镜像运行模式选择
SQL Server镜像的运行模式及其重要,直接影响到配置、预算及故障侦测和性能优化。需要在前期做好评估,并且选择满足当前SLA要求的模式。
在配置完数据库镜像之后,就可以开始镜像会话。在镜像环境的所有服务器交互过程中,都通过会话来维护对方的状态信息。开始会话本质上就是开始主体数据库和镜像数据库的同步进程。
当服务器出现性能问题时,暂停数据库会话可以临时停止因为镜像带来的压力,但是要注意,暂停会话会导致日志依旧活动,并且无法截断,如果时间持续太久,会引起日志文件的迅速增长,带来一系列的性能问题。日志相关问题可以查看《SQL Server扫盲》中关于日志备份的文章。地址:http://blog.csdn.net/dba_huangzj/article/details/26844859
可以通过图1-5中的方式暂时镜像会话
图1-5 暂停会话
可在主体库或者镜像库上执行下面的脚本暂停和恢复会话:
ALTER DATABASE AdventureWorks2008R2 SET PARTNER SUSPEND;--暂停会话 ALTER DATABASE AdventureWorks2008R2 SET PARTNER RESUME;--恢复会话
当数据库镜像会话启动后,主体服务器会发送事务给镜像服务器,所有未发送到镜像服务器的事务都被收集到发送队列(send queue)。在高安全性模式下,仅在镜像库处于暂停状态时才会建立send queue。如果是高性能模式,不仅镜像处于暂停,即使服务器处于高使用率、网络慢、镜像服务器上有一个大型redo 队列或者其他原因都会引起send queue。
在镜像库中,已经传送过来但是未被写入镜像库的事务日志的事务会存放到redo queue中。如果redo操作失败,镜像服务器会暂停会话直到问题解决。
关于队列的介绍,将会在本系列的第六篇《监控和优化SQL Server镜像》中介绍。http://blog.csdn.net/dba_huangzj/article/details/26846203
注意:一个数据库只能有一个镜像库,如果需要保持多个副本,可以借助日志传送加镜像。
SQL Server镜像状态可能包含下面几种:
可以使用sys.database_mirroring目录视图查看镜像信息。
相比其他高可用,镜像可以轻易切换角色,SQL Server镜像可以使用下面三种方式切换角色:
使用T-SQL语句:
Use master go ALTER DATABASE <DB> SET PARTNER FAILOVER--在主体服务器上执行
使用SSMS:
图1-6使用SSMS实现手动Failover
注意:高性能模式下不支持手动切换
带有见证服务器的高安全模式,当主体连接失败或者停止工作时,会自动切换到镜像服务器。当原主体服务器重新连机时,这台原主体服务器会变成镜像环境中的镜像服务器。
这种切换方式支持没有见证服务器的高性能和高安全模式,可以使用下面的T-SQL语句实现:
ALTER DATABASE <DB> SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS --在镜像库执行
由SQL Native Client(SNAC)提供,允许镜像环境下,应用程序自动重定向到镜像数据库中。通过在连接字符串加上Failover_Partner关键字来实现。应用程序需要添加重新尝试联接的功能。
基于最小化网络带宽带来的影响,2008引入了日志流压缩功能,但是需要注意压缩和解压功能天生就会增加CPU的开销。
在过去,页损坏是很头痛的事情,并且很难恢复。2008的镜像功能通过把镜像库的对应页恢复到主体库的页上,从而恢复数据。但是有些页镜像是不能回复的,比如文件头(page 0),数据库启动页(boot page,page 9),SGAM、PFS。但是对于下面的情况,镜像可以恢复:
一图抵千言,图1-7展示了SQL Server镜像中各个功能所需的版本支持:
图1-7 SQL Server镜像中各个功能所需的版本支持
截至SQL Server 2012为止,内置的高可用功能有集群(Cluster)、镜像(Mirroring)、复制(Replication)、日志传送(Log Shipping)和AlwaysOn(2012出现)。其中AlwaysOn基本上已经实现了集群、镜像的组合功能,所以本文不把镜像和AlwaysOn比较。仅对其他部分比较。详细信息可以看官方文档:
http://msdn.microsoft.com/zh-cn/library/ms190202(v=sql.105).aspx
下面简要介绍一下镜像和其他部分的对比:
Cluster有译成群集,不过这个无所谓,大家知道这个意思即可。我个人偏向使用英文。
复制天生就不是一种高可用技术,实际上是用来进行数据同步而已。如果单纯进行高可用方案,复制不是一个首选方案。
下面借用《SQL Server 2012 实施与管理实战指南》上的一个表格来总结一下:
下一篇:第三篇——第二部分——第二文 计划搭建SQL Server镜像
功能
Cluster
日志传送
镜像
复制
保护级别
实例
库
库
数据库对象
数据丢失
/
可能
同步模式下无
可能有
自动故障转移
是
否
高安全模式下是
否
对客户端是否透明
是
否
是,但需要设置字符串
否
停机时间
基于服务重启
长
等于恢复时间
长
多备用库
否
是
否
是
备用副本可读
/
是
否
是
抵御误操作
否
是
否
否
抵御磁盘故障
否
是
是
是
是否需要特定硬件
Windows集群
无
要求较好的磁盘和网络
无
对性能影响
低
中
中
高
版本支持
2000开始
2000开始
2005开始
2000开始
标签:
原文地址:http://www.cnblogs.com/lonelyxmas/p/4319791.html