SQL中数据库重启后一直处于恢复状态怎么办
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中数据库重启后一直处于恢复状态怎么办相关的知识,希望对你有一定的参考价值。
应该是事务日志过大,需要恢复一段时间就好了,你可以看下你的数据库的事务日志是不是很大,要是大的话就截断收缩下 参考技术A 突然断电?我碰到过,如果你没作任何处理现在应该已经好了,我当时汗都出来了,眼睁睁的看着百分比,后来好了,赶紧备份 参考技术B我可以帮你处理
Consul集群故障恢复
参考技术A公司服务器突然断电宕机,通电开机后Consul集群自启动完成,但是无法注册服务,界面可以打开,但是无法一直在Loading状态,无法查看Nodes,无法查看Key/Value。
查看服务日志后发现是Master没有被选举出来,一直在报错 No cluster leader 。初步诊断为Consul集群数据不同步或Docker重启后IP变动和之前注册在raft中的不一致。
执行命令 consul operator raft list-peers 后提示500错误,无法正确展示。
排查后定位问题为 Docker重启后IP变动和之前注册在raft中的不一致 导致Consul集群无法自行选举出Master,这种问题需要手动恢复才能解决。
官方对于该问题的解决方案
这个问题解决需要用到 data/raft/peers.json 来进行手动选举与节点同步
PS:这里需要注意, peers.json 有两种格式,具体写描述可以查看 data/raft/peers.info 其中有详细的描述
如果直接按照官方的方式去做,还是会起不来的,因为各个节点之间互相不通信,每个节点都会投自己一票,结果永远会是同票数,同票数就意味着需要重新进行投票选举,就会一直陷入死循环,所以要让其他节点主动放弃自己的投票权,只保留一个节点进行投票,这样才能选举出Master。将 non_voter 设置为true就不会参与选举了。
我的是 Raft Protocol Version 3使用如下JSON。
参数解释
PS:这个文件只要放在任意一个节点上面就行了,无需所有节点都放
重启Consul,集群恢复。
以上是关于SQL中数据库重启后一直处于恢复状态怎么办的主要内容,如果未能解决你的问题,请参考以下文章
SQL SERVER 无法启动,一直处于停止状态,该怎么解决呀?
SQL Server 生产服务器 - 所有数据库都处于恢复挂起状态