2013-08-02 70 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,{力:真})

現在所期望的構件將被提升作爲主。