SQLServer Always On FCI 脑裂及可疑状态修复
FCI 双节点集群,因为晚上集群节点间的网络中断过。两个节点都觉得还有一个节点宕机,在各节点的集群管理中都看到对方已宕机。
连接到集群IP。提示 msdb 数据库有问题:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2sxODU4MDA5NjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
发现MSDB数据库 “可疑”
msdb 损坏了,mssql 错误日志和代理日志也无就法查询,从windows查看到信息例如以下:
SQL Server 断言: 文件: <xdes.cpp>,行=3785 失败的断言 = 'curr->GetXdesId () == m_xdesId'。 此错误可能与时间有关。假设又一次执行该语句后错误仍然存在,请使用 DBCC CHECKDB 来检查数据库的结构是否完整,或又一次启动server以确保内存中的数据结构未破坏。 在数据库 'msdb' 中撤消日志记录下的操作时。在日志记录 ID (106502:3622:2) 处出错。通常。这一特定故障曾经在 Windows 事件日志服务中会记录为错误。请利用备份还原数据库或文件,或者修复该数据库。 处理数据库 'msdb' 的日志时出错。假设可能,请从备份还原。假设没有可用备份,可能须要又一次生成日志。 因为在例程 'XdesRMReadWrite::RollbackToLsn' 中错误发生 3314。数据库 msdb 已关闭。在与该数据库的全部连接都中止后,将尝试又一次启动非快照数据库。 在数据库 'msdb' 中撤消日志记录下的操作时,在日志记录 ID (106502:3614:1) 处出错。通常,这一特定故障曾经在 Windows 事件日志服务中会记录为错误。 请利用备份还原数据库或文件,或者修复该数据库。 传递给数据库 'msdb' 中的日志扫描操作的日志扫描号 (106502:3144:155) 无效。此错误可能指示数据损坏,或者日志文件(.ldf)与数据文件(.mdf)不匹配。假设此错误是在复制期间出现的。请又一次创建公布。否则。假设该问题导致启动期间出错。请从备份还原。 恢复期间出错,导致数据库“msdb”(4:0)无法又一次启动。请诊断并纠正这些恢复错误,或者从已知的正确备份中还原。假设无法更正错误,或者为意外错误,请与技术支持人员联系。
可疑推断 msdb 数据库日志有损坏。
sql server 还有自己主动监控的一些跟踪。主要系统错误和连接错误等其它重要性错误信息,查看例如以下:
DECLARE @path NVARCHAR(1000)
SELECT @path =PATH FROM sys.traces WHERE id = 1
SELECT * FROM ::fn_trace_gettable(@path, 0)
2017-04-07 01:21:36.05 spid95 错误: 3624,严重性: 20,状态: 1。
2017-04-07 01:21:36.05 spid95 A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a QFE from Technical Support.
2017-04-07 01:21:36.07 spid95 错误: 3314,严重性: 21,状态: 3。
2017-04-07 01:21:36.07 spid95 During undoing of a logged operation in database 'msdb', an error occurred at log record ID (106502:3622:2). Typically, the specific failure is logged previously as an error in the Windows Event Log service. Restore the database or file from a backup, or repair the database.
2017-04-07 01:21:37.59 spid95 错误: 9004,严重性: 23,状态: 6。 2017-04-07 01:21:37.59 spid95 An error occurred while processing the log for database 'msdb'. If possible, restore from backup. If a backup is not available, it might be necessary to rebuild the log.
2017-04-07 01:21:39.11 spid95 错误: 9004,严重性: 23。状态: 6。
2017-04-07 01:21:39.11 spid95 An error occurred while processing the log for database 'msdb'. If possible, restore from backup. If a backup is not available, it might be necessary to rebuild the log.
2017-04-07 01:21:40.64 spid95 错误: 9004,严重性: 23,状态: 6。
2017-04-07 01:21:40.64 spid95 An error occurred while processing the log for database 'msdb'. If possible, restore from backup. If a backup is not available, it might be necessary to rebuild the log.
2017-04-07 01:21:40.66 spid95 错误: 3314,严重性: 21,状态: 5。
2017-04-07 01:21:40.66 spid95 During undoing of a logged operation in database 'msdb', an error occurred at log record ID (106502:3614:1). Typically, the specific failure is logged previously as an error in the Windows Event Log service. Restore the database or file from a backup, or repair the database.
2017-04-07 01:21:41.43 spid22s Error: 9003, Severity: 20, State: 6.
2017-04-07 01:21:41.43 spid22s The log scan number (106502:3144:155) passed to log scan in database 'msdb' is not valid. This error may indicate data corruption or that the log file (.ldf) does not match the data file (.mdf). If this error occurred during replication, re-create the publication. Otherwise, restore from backup if the problem results in a failure during startup.
2017-04-07 01:21:41.43 spid22s Error: 3414, Severity: 21, State: 1.
2017-04-07 01:21:41.43 spid22s An error occurred during recovery, preventing the database 'msdb' (4:0) from restarting. Diagnose the recovery errors and fix them, or restore from a known good backup. If errors are not corrected or expected, contact Technical Support.
主要几个状态:3624、3314、9004、3414
基本原因例如以下:
Troubleshooting Error 3313, 3314, 3414, or 3456 (SQL Server)
How to troubleshoot Error 9004 in SQL Server
因为msdb日志备份引起的(发现msdb数据文件有 60+GB!)
如今集群有问题了,相互占用资源。心跳没起作用。连接数据库内部查看节点能正常连接到当中一个。
select * from sys.dm_os_cluster_nodes
SELECT * FROM fn_virtualservernodes();
更重要的是:由于存储是共享的。系统数据库和用户数据库都共享!
两个节点用共享存储,按理说数据是一致的。为了使集群能恢复正常状态,打算转移集群。
重新启动server比較好,不用逐个转移,使其自己主动全部资源转移。
重新启动之后!
。
msdb 正常了!!
可是有 3 个用户数据库出现了 “可疑”。!
没办法。出现了就仅仅能修复吧。。设置 “紧急” 模式修复。设置“单用户”。结果设置都产生死锁,无法运行!
设置单用户模式后非常难恢复多用户模式。似乎不断有进程来运行。
干脆把集群还有一个节点server(虚拟机)关闭了!
进来还是一样的错误。
再接着不用集群连接。到节点server运行。还是一样!!
再以专用管理员DAC 启动服务,看谁还能连接!
进来后老提示还有一个用户在执行,此时设置数据库为多用户模式也不行!
好!
再更改port。重新启动mssql服务。看谁还连接。结果没人抢了!能够进行操作也不会死锁,也没其它人操作,此时能够进行修复了!
两个较小(60GB和1GB)的数据库没问题;DBCC checkdb 修复过程中,有一个170GB的数据库修复至tempdb空间不足!
修复了部分,且停止了。
但非常快,因有些数据库文件都在同一磁盘,磁盘空间不足了!
!使mssql服务自己主动停止!
好吧!
删除一些数据库dump/log文件。启动服务分离一些不重要的数据库,把它移走(可能不再用了)。移出共享盘。
什么。权限不够。本地管理员都无法移动文件。再逐个将数据文件的权限加入给本地管理员!
空间够业务用了,可是另一个数据库没有修复。。再把暂时数据库移到本地磁盘,才进行DBCC checkdb修复!
修复完毕后把 tempdb 改回共享存储位置。并设置小一些!
可是,数据丢失非常多!。仅仅能备份还原。。
备份文件有专门的存储,又因昨晚网络调整,无法拷贝!
!
而该数据库在还原前又因损坏无法备份!!
备份为简单模式,也不能备份日志!。
等待备份恢复中…………
集群还未恢复…………
终于还原数据库!
所以平时在网上看到,谁家数据库宕机半天都恢复只是来的云云。出如今自己身上!
相对好点,数据库仅仅是一个有问题!
!
内部人员使用!但确是比較重要的!
附:
ALTER DATABASE dbname SET EMERGENCY
GO
ALTER DATABASE dbname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE dbname SET SINGLE_USER
GO
DBCC CheckDB (dbname , REPAIR_ALLOW_DATA_LOSS)
GO
--after then:
ALTER DATABASE dbname SET MULTI_USER
GO
SQLServer Always On FCI 脑裂及可疑状态修复的更多相关文章
- GlusterFS数据存储脑裂修复方案最全解析
本文档介绍了glusterfs中可用于监视复制卷状态的heal info命令以及解决脑裂的方法 一. 概念解析 常见术语 名称 解释 Brick GlusterFS 的基本存储单元,由可信存储池中服务 ...
- [译]如何防止elasticsearch的脑裂问题
本文翻译自blog.trifork.com的博文 地址是http://blog.trifork.com/2013/10/24/how-to-avoid-the-split-brain-problem- ...
- 如何防止ElasticSearch集群出现脑裂现象(转)
原文:http://xingxiudong.com/2015/01/05/resolve-elasticsearch-split-brain/ 什么是“脑裂”现象? 由于某些节点的失效,部分节点的网络 ...
- 高可用性中的脑裂问题(split-brain problem in HA)(转)
欢迎关注我的社交账号: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://gith ...
- Zookeeper 脑裂
转自 http://blog.csdn.net/u010185262/article/details/49910301 Zookeeper zookeeper是一个分布式应用程序的协调服务.它是一个为 ...
- AIX下解决POWERHA的脑裂问题
一.安装创建并发vg时必需的软件包clvm包,该包安装.升级.后必须重启os clvm包的描述:Enhanced Concurrent Logical Volume Manager 软件包在aix61 ...
- Elasticsearch笔记八之脑裂
Elasticsearch笔记八之脑裂 概述: 一个正常es集群中只有一个主节点,主节点负责管理整个集群,集群的所有节点都会选择同一个节点作为主节点所以无论访问那个节点都可以查看集群的状态信息. 而脑 ...
- ZooKeeper 03 - ZooKeeper集群的脑裂问题 (Split Brain问题)
目录 1 ZooKeeper的主从机制 2 什么是ZooKeeper的脑裂 2.1 脑裂现象的表现 2.2 为什么会出现脑裂 3 ZooKeeper如何解决"脑裂" 3.1 3种可 ...
- Keepalived脑裂
问题描述:开启防火墙后,Keepalived出现脑裂. 背景架构:两台centos7通过Keepalived实现高可用 问题具体表现形式:两台主机通过ip addr (ip a)查看,发现两台主机都 ...
随机推荐
- day6 note 字典的增删改查(以及setdefault用法补充)
今天的内容主要是join的用法和字典的用法,由于已经有前面的列表作为基础,所以还比较简单,不过因为昨天的作业比较难也比较多,所以作业的讲解占用的时间比较长.我需要好好消化一下作业的部分. 思维导图: ...
- 依赖配置中心实现注有@ConfigurationProperties的bean相关属性刷新
配置中心是什么 配置中心,通过key=value的形式存储环境变量.配置中心的属性做了修改,项目中可以通过配置中心的依赖(sdk)立即感知到.需要做的就是如何在属性发生变化时,改变带有@Configu ...
- react+typescript报错集锦<持续更新>
typescript报错集锦 错误:Import sources within a group must be alphabetized.tslint(ordered-imports) 原因:impo ...
- Oracle Loop
1. LOOP - END LOOP - EXIT declare v_rlt ):; begin v_rlt:; loop dbms_output.put_line('loop'||v_rlt); ...
- Intellij IDEA实现SpringBoot项目多端口启动
前言 有时候使用springboot项目时遇到这样一种情况,用一个项目需要复制很多遍进行测试,除了端口号不同以外,没有任何不同.这时我们强大的Intellij IDEA就能替我们实现. 实现方法 第一 ...
- C# 正规则表达式
获取括号里的内容 public string GetRegexStr(string Str, string Symbol1, string Symbol2, bool needSymbol) { ]; ...
- Xamarin SQLite教程数据库访问与生成
Xamarin SQLite教程数据库访问与生成 在本教程中,我们将讲解如何开发SQLite相关的App.在编写程序前,首先需要做一些准备工作,如了解Xamarin数据库访问方式,添加引用,构建使用库 ...
- 译:为什么使用 NoSQL 数据库
原文链接:Why NoSQL Database? 向数据时代的转变正在推动 NoSQL 随着各行各业朝着数据时代转变,商业世界正在经历巨大的变革.这是由互联网以及其他二十一世纪新技术--云计算.移动应 ...
- 【树形期望DP】BZOJ3566- [SHOI2014]概率充电器
[题目大意] 充电器由 n-1 条导线连通了 n 个充电元件.这n-1条导线均有一个通电概率p%,而每个充电元件本身有直接被充电的概率q[i]%.问期望有多少个充电元件处于充电状态? [思路] 第一次 ...
- DJI-A2调参详细教程
DJI-A2飞控系统用户手册 https://wenku.baidu.com/view/bb632f88227916888586d749.html DJI-A2调参软件视频教程 http://www. ...