博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【译】SQL Server误区30日谈-Day11-镜像在检测到故障后瞬间就能故障转移
阅读量:6258 次
发布时间:2019-06-22

本文共 1188 字,大约阅读时间需要 3 分钟。

  本系列文章是我在sqlskill.com的PAUL的博客看到的,很多误区都比较具有典型性和代表性,原文来自T-SQL Tuesday #11: Misconceptions about.... EVERYTHING!!,经过我们团队的翻译和整理发布在AgileSharp上。希望对大家有所帮助。
 
误区 #11:镜像在检测到故障后瞬间就能故障转移
错误
 
    数据库镜像的故障转移既可以自动发起,也可以手动发起。
    在自动发起的情况下,是由镜像服务器执行故障转移操作(你没有看错,并不是由见证服务器来做故障转移的决定),在见证服务器和镜像服务器都发现无法和主体服务器交换信息(这个过程被称为”形成仲裁”,译者注:也就是通过程序对集群进行监管,集群可用的依据来自监管程序的算法,比如根据:每个节点的配置,文件共享情况,磁盘访问情况,每个节点的可用性等来确定集群是否可用)并且镜像方式是同步时,可以进行故障转移。(译者注:所谓的同步指的是主体服务器必须等待镜像服务器的日志写入后,才能够提交事务。相对异步来说性能更差,但更安全,并且还不需要SQL Server是企业版)。
    手动故障转移是由你发起的,手动发起可能是由于不存在见证服务器(以至于无法“形成仲裁”),或是在主体服务器现在问题时镜像的运行模式不是“同步”。
    当主体服务器发生故障时,镜像服务器在日志队列Redo完成之前不会上线(所谓的日志队列就是由主体服务器传送到镜像服务器的日志,但还没有在镜像服务器Replay)。即使你镜像的运行模式是同步,也仅仅只能说明日志被写入镜像磁盘,但不能保证日志在镜像服务器被重放。而对于故障转移来说,镜像服务器必须经历Roll Forward阶段才能够上线.但Roll Back阶段是镜像上线后才会做的。
    在SQL Server标准版以及企业版所在的CPU低于5个内核,Roll Forward只有一个线程。对于企业版并且CPU多余5核,为每4个核分配一个Roll Forward线程。所以完全可以看出故障转移所需的时间取决于需要对日志进行Redo处理的队列大小,CPU的核数,以及镜像服务器的负载。
    由于大家都认为镜像工作在同步方式时可以迅速进行故障转移,所以很少有人检测日志Redo队列。但由于Redo队列的大小确定了故障转移时Downtime的大小,所以检测镜像服务器Redo队列变得十分重要。
    有关这里更细节的文章,你可以参看:Estimating the Interruption of Service During Role Switching
分类: SQL Server DBA误区
本文转自CareySon博客园博客,原文链接:http://www.cnblogs.com/CareySon/archive/2012/10/29/2744189.html如需转载请自行联系原作者
你可能感兴趣的文章
LCS记录
查看>>
C++开源跨平台类库集
查看>>
everything搜索工具小技巧
查看>>
一个 Sql语句优化的问题- STATISTICS 统计信息
查看>>
你不知道的KVO的内部实现
查看>>
转】MyEclipse10安装Log4E插件
查看>>
windows server2012r2 安装NET Framework 3.5
查看>>
vss整合配置连接到Myeclipse中以及中文配置
查看>>
[osg][osgEarth][原]基于OE自定义自由飞行漫游器(初级版)
查看>>
Java遇见HTML——JSP篇之JSP基础语法
查看>>
导出一个数据库中的表中的某一条数据
查看>>
JQuery初体验
查看>>
全球顶级黑客对决AI GeekPwn2017黑客大赛看点全面曝光
查看>>
浅析前端开发中的 MVC/MVP/MVVM 模式
查看>>
toString、equals和hashCode重写
查看>>
sizeof 和strlen的区别
查看>>
Python与C++引用分析
查看>>
误删一个用户 引起数据不准确问题
查看>>
一场失败的拔河比赛
查看>>
IOS开发工程师欢迎你加入宏略信息
查看>>