SQL Server误区30日谈 第11天 镜像在检测到故障后瞬间就能故障转移
发布时间:2024-01-22 13:13:00
误区 #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


猜你喜欢
- 发现问题一个作业报错,报错信息如下,从错误信息根本看不出为什么出错,手工运行作业又成功了。一时不清楚什么原因导致作业出错。MessageEx
- 微信小程序官方给了十分详细的登陆时序图,当然为了安全着想,应该加上签名加密。微信小程序端1).调用wx.login获取 code 。 2).
- 本文研究的主要是Python中optparser库的相关内容,具体如下。一直以来对optparser不是特别的理解,今天就狠下心,静下心研究
- 如下所示:import numpy as np# 等差数列print(np.linspace(0.1, 1, 10, endpoint=Tr
- 环境配置1:安装mysql,环境变量添加mysql的bin目录环境配置2:python安装MySQL-Python请根据自身操作系统下载安装
- 在PCA中有遇到,在这里记录一下计算矩阵的特征值个特征向量,下面给出几个示例代码:在使用前需要单独import一下>>>
- 通用用法但上图的字段名,类型需要根据不同接口填写,如某服务接口:因而对应的上传代码如下:# 输出参数:请求响应报文import reques
- 代码import turtleturtle.bgcolor("black")turtle.pensize(2)sizeh
- 下面两个函数的使用和FIND_IN_SET一样,使用时只需要把FIND_IN_SET换成FIND_PART_IN_SET或FIND_ALL_
- 超级简单实现iframe框架滚动控制,前提要会简单修改原代码。step1:插入iframe标签在你想要的位置。<iframe 
- 前言栈、队列和优先级队列都是非常基础的数据结构。Python作为一种“编码高效”的语言,对这些基础的数据结构都有比较好的实现。在业务需求开发
- 如下所示:import urllib,json,requestsurl = 'http://127.0.0.1:8000/accou
- splinter介绍 Splinter是一个使用Python测试Web应用程序的开源工具,可以自动化浏览器操作,例如访问URL和与它们的项
- 在看本篇文章前我们需要了解阻塞的概念在执行过程中暂停,以等待某个条件的触发 ,我们就称之为阻塞在Go中我们make一个channel有两种方
- --语 句 功 能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库
- 使用python实现双向循环链表,供大家参考,具体内容如下双向循环链表: 将所有的数据存放到节点中,每一个节点相连接,首尾链接,每一个节点中
- 一、问题的提出随着互连网的发展,网站的数量以惊人的数字增加。网站的作用除了给广大网友们提供信息资讯服务外,还应该成为网友们上传与下载文件的场
- 本文实例讲述了Python实现求两个数组交集的方法。分享给大家供大家参考,具体如下:一、题目给定两个数组,编写一个函数来计算它们的交集。例1
- 最近,使用 golang 去管理本地应用的生命周期,期间有几个有趣的点,今天就一起看下。场景一我们来看看下面两个脚本会产
- 1、实例 DELIMITER // DROP PROCEDURE IF EXISTS `test`.`p_getvalue` // CREA