【问题】:
应用系统无法连接数据库,无法读取存取资料库的共享磁盘
【原因】:
DB服务器HA集群故障,集群无法启动
【应急方案】:
1.尝试恢复集群;
2.建立单机DB服务器,并恢复备份资料到新建DB服务器;
3.恢复DB集群共享磁盘最新数据库文件,处理因集群故障lock共享磁盘无法读取的问题
【收集Log信息,分析问题】:
1.检查DB服务器 Eventlog,查看错误信息:
【FailoverClustering错误】:无法卸载故障转移群集数据库。如果重新启动群集服务没有解决此问题,请重新启动计算机。
【Service Control Manager错误】: Cluster Service 服务意外地终止,这种情况已经出现了 2451 次。以下的修正操作将在 960000 毫秒内运行: 重新启动服务。
【Service Control Manager错误】: Cluster Service 服务因 系统找不到指定的文件。 服务特定错误而停止。
2.打开集群管理器,验证配置,查找问题:
先借个图,我的集群出故障后就出现如下界面,集群服务启动,强制重启也管用...
根据验证结果发现验证存储时出错,检查共享磁盘的挂载情况。(下图为后补,和实际验证结果有出入,仅供参考)
3.检查共享磁盘:
打开磁盘管理器,看到集群磁盘状态异常:由于管理员的策略 ,该磁盘处于脱机状态
两台集群节点服务器实际看到为如下情况,磁盘都被锁定,无法访问(从网上借用一个参考图):
根据由于管理员的策略 ,该磁盘处于脱机状态关键字串在网上查了一些资料,都是利用DISKPART命令解除策略,尝试过后发现不行。
顺便熟悉一下DISKPART命令:
1.运行:cmd
2.输入:DISKPART.exe
3.DISKPART> san
4.DISKPART> san policy=onlineall
5.DISKPART>list disk
6.DISKPART> select disk 1
7.DISKPART>attributes disk clear readonly
8.DISKPART>online disk
这里可以确认磁盘是否为集群盘:
找一台Win2008的服务器,尝试把集群的共享磁盘挂载上,看看能否把资料读出来:
1). 我这里存储设备为NetApp的NAS,把这台服务器加到lun的启动程序组中
2). 配置iscis,连接存储设备
3).连接成功后,打开磁盘管理器查看是否已经挂载上磁盘
不过我挂载起来后发现不能读取磁盘,点击挂载的磁盘会提示要格式化硬盘!
4).再尝试在NAS上使用snapmirror复制卷,然后挂载复制出来的盘,结果和上面一样,仍然无法访问。
看起来此方法行不通,应该是集群失败导致共享磁盘被锁定,无法存取。
4.尝试修复或重建集群相关方法:
查了一些方法,根据这两篇blog的做法,解决了问题!
https://blogs.technet.microsoft.com/askcore/2010/06/08/windows-server-2008-and-2008r2-failover-cluster-startup-switches/
http://jackprivate.blog.51cto.com/77144/1114650
解决方法:
1).执行命令:cluster node /force
参考信息:
cluster 清除节点:
当集群出现故障时,Cluster Service 服务无法启动,可以重建集群,但需要将集群环境恢复到初始状态,否则无法重建成功。
就可以使用如下命令
cluster node /force
/force[cleanup] [/wait[:Timeout_in_Seconds]] 手动将指定节点的群集服务配置恢复到初始状态。
2). 执行完后,Cluster 服务将被禁用:
3).重启服务器,启动后到磁盘管理器或直接打开资源管理器看看共享磁盘是否已经出现了,赶快把资料拷出来吧!
4). 剩下就是尝试恢复集群的工作了,暂时还没时间继续尝试,我主要是要把最新的资料从共享磁盘拷出来,放到新建的单机服务器上使用,并且我已经决定放弃集群架构改用单机。
等我抽空测试过再把集群重建后的结果贴上来。