硬盘故障造成数据库代理无法启动解决和思考

售后接到一个客户电话说是一个客户的数据库代理无法启动。客户:某私立医院HIS系统服务器: HPDL388Gen8  E5-2609*2 /64G内存/...


售后接到一个客户电话说是一个客户的数据库代理无法启动。

客户:某私立医院HIS系统

服务器: HPDL388Gen8  E5-2609*2 /64G内存/P410I 2G缓存阵列卡/1T SAS*3块 RAID5

问题表现:

agent 无法启动。

解决思路:

查看系统日志,提示有IO错误。

查看HP阵列管理程序,发现有1块硬盘有故障。

更换硬盘,阵列重组后,问题依旧。

查看数据库日志,看到提示 tempdb库和MSDB库文件内部不一致。

停止数据库服务,直接删除tempdb库文件。

(重新启动数据库服务,系统自动重建tempdb库)

msdb是系统库,不能直接删除,使用checkdb(msdb)报错,无法检查和修复。

看来只能重建msdb了。(计划任务肯定就丢了)

1、停止所有SQL 服务2.打开cmd, 第一行输入cd C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn后回车 再输入start sqlservr.exe -c -T 3608回车 接着输入sqlcmd回车3.在sqlcmd里输入下面内容 use master go sp_detach_db 'msdb'4.删除或重命名原msdb5.把C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data' directory) Run the instmsdb.sql 复制到sqlcmd里重建msdb6.关闭所有SQL服务(如果有)7.重新启动

至此,msdb重建完成,sql  agent启动正常。

(其他的数据库也发现有内部IO问题,用checkdb慢慢解决。)

1、密集型IO应用,当硬盘故障时有一定的几率会造成文件系统有故障。Raid 6+热备会不会减少造成文件系统故障的几率?

2、数据库的这种故障不适合用基于卷或磁盘的容灾方案来解决?

3、而存储几乎没有一块硬盘故障出现这种情况(非常低档的除外)。