手机
当前位置:查字典教程网 >编程开发 >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 清空删除日志文件(瞬间日志变几M)

SQL Server 2005 数据维护实务

如何创建SQL Server 2000故障转移群集

通过SQL Server 2008数据库复制实现数据库同步备份

SQL Server 动态行转列

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

SQL Server 2005与sql 2000之间的数据转换方法

SqlServer 2005 简单的全文检索

SQL Server 2008报表服务介绍

精品推荐
分类导航