手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >SQL Server误区30日谈 第11天 镜像在检测到故障后瞬间就能故障转移
SQL Server误区30日谈 第11天 镜像在检测到故障后瞬间就能故障转移
摘要:误区#11:镜像在检测到故障后瞬间就能故障转移错误数据库镜像的故障转移既可以自动发起,也可以手动发起。在自动发起的情况下,是由镜像服务器执行...

误区 #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误区30日谈 第11天 镜像在检测到故障后瞬间就能故障转移】相关文章:

解决SQL Server 表或索引的碎片问题

SQL Server 2008 维护计划实现数据库备份心得

SQL Server自动生成日期加数字的序列号

SQL Server 不存在或访问被拒绝(转)

例说SQLServer2012数学函数

SQL Server 2008 数据库镜像部署实例之二 配置镜像,实施手动故障转移

SQL Server 2008中的数据表压缩功能详细介绍

SQL Server 2005 数据维护实务

SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法

SQL Server日期计算第1/2页

精品推荐
分类导航