【发布时间】:2016-08-27 05:50:40
【问题描述】:
我的 MongoS 服务器没有盯着他们在日志中发送此错误。
SHARDING [Balancer] 在进行平衡时发现异常:服务器的 分片元数据管理器初始化失败,将保留在 此状态直到实例被手动重置 :: 由 :: 引起 HostNotFound:无法解析主机 confserv_1.xyz.com 的 DNS
2016-05-02T17:57:06.612+0530 I SHARDING [Balancer] about to log metadata event into actionlog: { _id: "DB2255-2016-05-02T17:57:06.611+0530-5727479aa1051c5fb04fcc49", server: "mongoS1", clientAddr: "", time: new Date(1462192026611), what: "balancer.round", ns: "", details: { executionTimeMillis: 35, errorOccured: true, errmsg: "Server's sharding metadata manager failed to initialize and will remain in this state until the instance is manually reset :: caused by :: HostNotFoun..." } }
当我使用主机名连接配置服务器时,它工作正常。
我尝试重新启动 MongoS 服务器,但它没有启动。
我检查了Mongo代码,发现
https://github.com/mongodb/mongo/blob/master/src/mongo/db/s/sharding_state.cpp中提到的这个错误
/ TODO: remove after v3.4.
// This is for backwards compatibility with old style initialization through metadata
// commands/setShardVersion. As well as all assignments to _initializationStatus and
// _setInitializationState_inlock in this method.
if (_getInitializationState() == InitializationState::kInitializing) {
auto waitStatus = _waitForInitialization_inlock(deadline, lk);
if (!waitStatus.isOK()) {
return waitStatus;
}
}
if (_getInitializationState() == InitializationState::kError) {
return {ErrorCodes::ManualInterventionRequired,
str::stream() << "Server's sharding metadata manager failed to initialize and will "
"remain in this state until the instance is manually reset"
<< causedBy(_initializationStatus)};
}
但它没有提到任何需要手动干预的内容。 当前 Mongo 版本是 3.2.6
【问题讨论】:
-
“无法解析 DNS”听起来像是一个管理问题。解决方案包括
ping、traceroute、nmap之类的,看起来很OT。 -
尝试从 mongos 实例连接到配置服务器。可能是配置服务器端口未打开。
-
我检查过有一次连接丢失了,之后又恢复了,但 MongoS 没有恢复。我们重新启动了 MongoS 服务器并停止重新启动平衡器,但没有任何效果。
-
正如我之前提到的,我尝试从 MongoS 连接配置服务器并且它正在工作,但它一直要求手动重启。