在 MongoDB 中添加副本会引发错误
Adding a replica in MongoDB throws an error
我正在尝试使用 rs.add("developer-ViratualBox:30103")
将节点添加到副本集,但收到以下错误消息:
{
"ok" : 0,
"errmsg" : "Quorum check failed because not enough voting nodes responded; required 2 but only the following 1 voting nodes responded: developer-VirtualBox:30101; the following nodes did not respond affirmatively: developer-ViratualBox:30103 failed with Failed attempt to connect to developer-ViratualBox:30103; couldn't initialize connection to host developer-ViratualBox, address is invalid",
"code" : 74
}
该节点已经 运行,我使用 mongo
shell 连接到它。可能是什么问题?
您只能在连接到 主要 时添加成员。要知道哪个成员是主成员,请登录副本集的任何成员并发出 db.isMaster() 命令。
然后,使用rs.add() 将新成员添加到副本集。例如,要在主机 mongodb3.example.net 上添加一个成员,请发出以下命令:
rs.add("developer-ViratualBox:30103")
实际错误是couldn't initialize connection to host developer-ViratualBox, address is invalid
,只是主节点无法连接从节点。检查连接、防火墙,并检查与 mongo shell 的连接是否可以访问该端口。
缺少的一点是我试图添加的实例没有在定义的端口启动 mongod 实例。因此给定的连接参数不正确,导致通信问题。
在启动辅助 mongod 进程时使用 --replSet 选项尝试从主 mongod shell.
运行 rs.add("localhost:27002")
另一个可能的问题是您尝试添加到副本集的机器未配置为 运行 复制。
将此条目添加到您尝试添加的机器上的 mongod.conf 并重新启动服务对我有用:
replication:
replSetName: evoReplicaSet
创建 rsconf
文件时,请输入 <localhost:port>
而不是 <hostname:port>
。
然后 reconfig(rsconf)
.
示例:
rs0:PRIMARY>
rsconf = {
_id: "rs0",
members: [
{
_id: 0,
host: "**localhost**:port for primary rs"
}]
}
rs0:PRIMARY> rs.initiate(rsconf)
{
"info" : "try querying local.system.replset to see current configuration",
"ok" : 0,
"errmsg" : "already initialized",
"code" : 23
}
如果出现上述错误,请使用以下命令:
rs0:PRIMARY> rs.reconfig(rsconf)
添加辅助节点:rs.add("localhost:port for secondary rs")
希望它能奏效。
你应该使用docker网络来解决这个问题。
我正在尝试使用 rs.add("developer-ViratualBox:30103")
将节点添加到副本集,但收到以下错误消息:
{
"ok" : 0,
"errmsg" : "Quorum check failed because not enough voting nodes responded; required 2 but only the following 1 voting nodes responded: developer-VirtualBox:30101; the following nodes did not respond affirmatively: developer-ViratualBox:30103 failed with Failed attempt to connect to developer-ViratualBox:30103; couldn't initialize connection to host developer-ViratualBox, address is invalid",
"code" : 74
}
该节点已经 运行,我使用 mongo
shell 连接到它。可能是什么问题?
您只能在连接到 主要 时添加成员。要知道哪个成员是主成员,请登录副本集的任何成员并发出 db.isMaster() 命令。
然后,使用rs.add() 将新成员添加到副本集。例如,要在主机 mongodb3.example.net 上添加一个成员,请发出以下命令:
rs.add("developer-ViratualBox:30103")
实际错误是couldn't initialize connection to host developer-ViratualBox, address is invalid
,只是主节点无法连接从节点。检查连接、防火墙,并检查与 mongo shell 的连接是否可以访问该端口。
缺少的一点是我试图添加的实例没有在定义的端口启动 mongod 实例。因此给定的连接参数不正确,导致通信问题。
在启动辅助 mongod 进程时使用 --replSet 选项尝试从主 mongod shell.
运行 rs.add("localhost:27002")另一个可能的问题是您尝试添加到副本集的机器未配置为 运行 复制。 将此条目添加到您尝试添加的机器上的 mongod.conf 并重新启动服务对我有用:
replication:
replSetName: evoReplicaSet
创建 rsconf
文件时,请输入 <localhost:port>
而不是 <hostname:port>
。
然后 reconfig(rsconf)
.
示例:
rs0:PRIMARY>
rsconf = {
_id: "rs0",
members: [
{
_id: 0,
host: "**localhost**:port for primary rs"
}]
}
rs0:PRIMARY> rs.initiate(rsconf)
{
"info" : "try querying local.system.replset to see current configuration",
"ok" : 0,
"errmsg" : "already initialized",
"code" : 23
}
如果出现上述错误,请使用以下命令:
rs0:PRIMARY> rs.reconfig(rsconf)
添加辅助节点:rs.add("localhost:port for secondary rs")
希望它能奏效。
你应该使用docker网络来解决这个问题。