生產環境不建議僅使用PRIMARY-SECONDARY模式mongodb
當primary掛掉,而且沒法恢復時,能夠把secondary提高爲主節點。數組
注意:此時從節點可能有部分數據未同步過來,部分數據可能丟失。ui
一、在secondary節點刪除掛掉的primary節點code
使用rs.conf查看當前配置get
c = rs.conf()
輸出內容:同步
{ "_id" : "rd_repl", "version" : 133334, "protocolVersion" : NumberLong(1), "members" : [ { "_id" : 1, "host" : "10.0.0.1:2717", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 3, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 }, { "_id" : 2, "host" : "10.0.0.2:2717", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 4, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 } ], "settings" : { "chainingAllowed" : true, "heartbeatIntervalMillis" : 2000, "heartbeatTimeoutSecs" : 10, "electionTimeoutMillis" : 10000, "catchUpTimeoutMillis" : -1, "catchUpTakeoverDelayMillis" : 30000, "getLastErrorModes" : { }, "getLastErrorDefaults" : { "w" : 1, "wtimeout" : 0 }, "replicaSetId" : ObjectId("5ba492935fb60fd88fcab516") } }
好比要刪除members第一個節點:it
{ "_id" : 1, "host" : "10.0.0.1:2717", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 3, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 }
執行mongodb的命令:io
c = rs.conf() c.members.splice(0,1) # splice的第一個參數表示要刪除的數組元素的下標
二、從新配置mongoast
rs.reconfig(c, {"force":true}) # c就是上面修改後的配置,加force參數是由於secondary默認沒有執行此命令的權限