错误
市面上大肆宣传数据库镜像技术可以在故障发生后,立即检测到错误并进行故障转移。
但事实并不是这样,检测到故障发生的速度要取决于故障的类型。
检测故障发生的最快的情况是,镜像中的主体实例崩溃,从而镜像服务器每秒一次的PING就无法返回值,从而知道主体服务器上不再有这个进程侦听相应的TCP端口,这种情况下,镜像服务器几乎瞬间就能发现故障。
检测到故障发生第二快的情况是主体服务器的操作系统崩溃。此时主体服务器不再响应镜像服务器的PING,从而在镜像服务器PING超时后发现错误。这个超时的阈值默认是10秒。但你也可以延长这个时间,这时,故障发生时间完全取决于PING的超时时间。
检测到故障第三快的情况是是主体的日志磁盘不可用,此时SQL SERVER仍然会发起IO请求,但20秒IO等待无法写入日志后发现日志磁盘不可用,最终40秒后宣告磁盘日志不可用,从而让镜像服务器上线。SQL SERVER是十分有耐心的,比如拿锁来说,SQL SERVER对于锁会无限等待,除非遇到死锁才进行干预。
还有,损坏页有可能完全不会引发故障,如果查询报了823或是824错误,镜像技术完全不会关注(SQL SERVER 2008之后这个问题得到修复: SQL Server 2008: Automatic Page Repair with Database Mirroring),如果数据回滚的过程中遇到823错误或是824错误,数据库立刻会变为质疑状态,也就是日志和数据不统一。这也会导致镜像失败。
你在圣经上学习到的那些教条也不是需要完全遵循的嘛:-)
您可能感兴趣的文章: 监视SQLServer数据库镜像[图文] SQL数据库与oracle数据库镜像有什么不同对比 MySQL 数据库双向镜像、循环镜像(复制) mssql2005数据库镜像搭建教程 SQL Server 2008 R2数据库镜像部署图文教程 SQL Server 2008 数据库镜像部署实例之一 数据库准备 SQL Server 2008 数据库镜像部署实例之二 配置镜像,实施手动故障转移 SQL Server 2008 数据库镜像部署实例之三 配置见证服务器 SQL Server 2005 镜像构建手册(sql2005数据库同步镜像方案) 利用SQL SERVER 2005数据库镜像实现可用性分析 简述SQL Server 2005数据库镜像相关知识
查看更多关于SQLServer误区30日谈第10天数据库镜像在故障发生后马上就能发现的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did33375