SQLServer误区30日谈第10天数据库镜像在故障发生后马上就能发现
2023-06-13 09:14:43 时间
误区10.数据库镜像在故障发生后,马上就能发现
错误
市面上大肆宣传数据库镜像技术可以在故障发生后,立即检测到错误并进行故障转移。
但事实并不是这样,检测到故障发生的速度要取决于故障的类型。
检测故障发生的最快的情况是,镜像中的主体实例崩溃,从而镜像服务器每秒一次的PING就无法返回值,从而知道主体服务器上不再有这个进程侦听相应的TCP端口,这种情况下,镜像服务器几乎瞬间就能发现故障。
检测到故障发生第二快的情况是主体服务器的操作系统崩溃。此时主体服务器不再响应镜像服务器的PING,从而在镜像服务器PING超时后发现错误。这个超时的阈值默认是10秒。但你也可以延长这个时间,这时,故障发生时间完全取决于PING的超时时间。
检测到故障第三快的情况是是主体的日志磁盘不可用,此时SQLSERVER仍然会发起IO请求,但20秒IO等待无法写入日志后发现日志磁盘不可用,最终40秒后宣告磁盘日志不可用,从而让镜像服务器上线。SQLSERVER是十分有耐心的,比如拿锁来说,SQLSERVER对于锁会无限等待,除非遇到死锁才进行干预。
还有,损坏页有可能完全不会引发故障,如果查询报了823或是824错误,镜像技术完全不会关注(SQLSERVER2008之后这个问题得到修复:SQLServer2008:AutomaticPageRepairwithDatabaseMirroring),如果数据回滚的过程中遇到823错误或是824错误,数据库立刻会变为质疑状态,也就是日志和数据不统一。这也会导致镜像失败。
你在圣经上学习到的那些教条也不是需要完全遵循的嘛:-)
错误
市面上大肆宣传数据库镜像技术可以在故障发生后,立即检测到错误并进行故障转移。
但事实并不是这样,检测到故障发生的速度要取决于故障的类型。
检测故障发生的最快的情况是,镜像中的主体实例崩溃,从而镜像服务器每秒一次的PING就无法返回值,从而知道主体服务器上不再有这个进程侦听相应的TCP端口,这种情况下,镜像服务器几乎瞬间就能发现故障。
检测到故障发生第二快的情况是主体服务器的操作系统崩溃。此时主体服务器不再响应镜像服务器的PING,从而在镜像服务器PING超时后发现错误。这个超时的阈值默认是10秒。但你也可以延长这个时间,这时,故障发生时间完全取决于PING的超时时间。
检测到故障第三快的情况是是主体的日志磁盘不可用,此时SQLSERVER仍然会发起IO请求,但20秒IO等待无法写入日志后发现日志磁盘不可用,最终40秒后宣告磁盘日志不可用,从而让镜像服务器上线。SQLSERVER是十分有耐心的,比如拿锁来说,SQLSERVER对于锁会无限等待,除非遇到死锁才进行干预。
还有,损坏页有可能完全不会引发故障,如果查询报了823或是824错误,镜像技术完全不会关注(SQLSERVER2008之后这个问题得到修复:SQLServer2008:AutomaticPageRepairwithDatabaseMirroring),如果数据回滚的过程中遇到823错误或是824错误,数据库立刻会变为质疑状态,也就是日志和数据不统一。这也会导致镜像失败。
你在圣经上学习到的那些教条也不是需要完全遵循的嘛:-)
相关文章
- sqlserver 视图创建索引_数据库视图可以建立索引吗
- SQLServer管理器:轻松管理SQLServer数据库(sqlserver管理器)
- 使用SQL Server管理汉字数据库:优化性能与数据交互(sqlserver汉字)
- 利用微型SQLServer提升企业的数据库运算能力(微型sqlserver)
- 统一的SQLServer数据库管理大变革(ue sqlserver)
- MySQL数据库管理员的SQLServer靶机挑战(sqlserver靶机)
- SQL Server 数据库遭遇锁死阻碍(sqlserver 锁死)
- SQL Server脚手架:构建你的数据库专业解决方案(sqlserver脚手架)
- SQLServer数据库表设计:主键分析(sqlserver的主键)
- SQL Server收缩表:让数据库保持紧凑的姿势(sqlserver收缩表)
- 妙用SQLserver控制数据库表的收缩(sqlserver收缩表)
- 撤回数据库——SQL Server 的操作指南(sqlserver 撤回)
- SQL Server数据库拆分实战指南(sqlserver 拆分)
- SQLServer数据库扩展功能探索(sqlserver扩展库)
- 如何利用SQLServer命令集轻松搞定数据库操作(sqlserver命令集)
- 获取SQLServer数据库字段的长度(sqlserver取长度)
- 如何为SQLServer中的表加以区分?(sqlServer区分表)
- 基于SQL Server实现数据库分片技术(sqlserver 分片)
- SQL Server出栈,推动数据库行业新变革(sqlserver出栈)
- 如何在SQLServer中查找表名(sqlserver中表名)
- SQLServer数据导入技巧(sqlserver导数据)
- SQLServer数据库恢复:现在开始!(sqlserver恢复数据库)
- 借助SqlServer快速构建安全可靠的镜像库(镜像库sqlserver)
- 使用计算机SQL Server实现数据库管理(计算机sqlserver)