2013-08-02 71 views
2

我想配置一个独立的mongodb副本集3个实例。我似乎进入了一个时髦的状态。我的两个实例出现故障,我剩下所有的辅助节点。我试图按照这样的:http://docs.mongodb.org/manual/tutorial/reconfigure-replica-set-with-unavailable-members/mongodb副本集无法访问

我得到这个错误,虽然:当我看到我看到这个日志

rs0:SECONDARY> rs.reconfig(cfg, {force : true}) 
{ 
    "errmsg" : "exception: need most members up to reconfigure, not ok : obfuscated_hostname:27019", 
    "code" : 13144, 
    "ok" : 0 
} 

Fri Aug 2 20:45:11.895 [initandlisten] options: { config: "/etc/mongodb1.conf", 
dbpath: "/var/lib/mongodb1", logappend: "true", logpath: "/var/log/mongodb/mongodb1.log", 
port: 27018, replSet: "rs0" } 
Fri Aug 2 20:45:11.897 [initandlisten] journal dir=/var/lib/mongodb1/journal 
Fri Aug 2 20:45:11.897 [initandlisten] recover begin 
Fri Aug 2 20:45:11.897 [initandlisten] recover lsn: 0 
Fri Aug 2 20:45:11.897 [initandlisten] recover /var/lib/mongodb1/journal/j._0 
Fri Aug 2 20:45:11.899 [initandlisten] recover cleaning up 
Fri Aug 2 20:45:11.899 [initandlisten] removeJournalFiles 
Fri Aug 2 20:45:11.899 [initandlisten] recover done 
Fri Aug 2 20:45:11.923 [initandlisten] waiting for connections on port 27018 
Fri Aug 2 20:45:11.925 [websvr] admin web console waiting for connections on port  28018 
Fri Aug 2 20:45:11.927 [rsStart] replSet I am hostname_obfuscated:27018 
Fri Aug 2 20:45:11.927 [rsStart] replSet STARTUP2 
Fri Aug 2 20:45:11.929 [rsHealthPoll] replset info hostname_obf:27017 thinks that we are down 
Fri Aug 2 20:45:11.929 [rsHealthPoll] replSet member hostname_obf:27017 is up 
Fri Aug 2 20:45:11.929 [rsHealthPoll] replSet member hostname_obf:27017 is now in state SECONDARY 
Fri Aug 2 20:45:12.587 [initandlisten] connection accepted from ip_obf:52446 #1 (1 connection now open) 
Fri Aug 2 20:45:12.587 [initandlisten] connection accepted from ip_obf:52447 #2 (2 connections now open) 
Fri Aug 2 20:45:12.588 [conn1] end connection ip_obf:52446 (1 connection now open) 
Fri Aug 2 20:45:12.928 [rsSync] replSet SECONDARY 

我无法连接到蒙戈实例,即使日志说它已启动并正在运行。有什么想法在这里做什么?

回答

3

你没有提到你正在使用哪个版本的mongodb,但我认为它是2.0版本。

我认为强制重新配置的问题是,在重新配置之后,您仍然需要最小数量的节点来运行副本集,即3.但由于您最初有3个成员并且丢失了2个,没有办法你可以把那个单一的幸存节点变成一个功能正常的副本集。

您唯一的恢复选项是将存活节点作为独立服务器启动,备份数据库,然后使用该数据创建一个新的3节点副本集。

步骤1

0

是可以将相应的次级服务器正在运行fine.Do按照下面的简单步骤单个辅助副本转起来以初级连接件,并检查当前的配置

rs.conf()

步骤2:保存当前配置到另一个变量。

X = rs.conf()

步骤3:选择要被制成为主要的成员的ID,主机和端口。

x.members = [{ “_id”:1, “宿主”: “的localhost.localdomain:27017”}]

步骤4:重新配置新的副本通过力来设定。

rs.reconfig(X,{力:真})

现在所期望的构件将被提升作为主。