Mongodb主從模式SECONDARY提升為PRIMARY


生產環境不建議僅使用PRIMARY-SECONDARY模式

當primary掛掉,並且無法恢復時,可以把secondary提升為主節點。

注意:此時從節點可能有部分數據未同步過來,部分數據可能丟失。

1、在secondary節點刪除掛掉的primary節點

使用rs.conf查看當前配置

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第一個節點:

{
			"_id" : 1,
			"host" : "10.0.0.1:2717",
			"arbiterOnly" : false,
			"buildIndexes" : true,
			"hidden" : false,
			"priority" : 3,
			"tags" : {
				
			},
			"slaveDelay" : NumberLong(0),
			"votes" : 1
		}

執行mongodb的命令:

c = rs.conf()
c.members.splice(0,1)
# splice的第一個參數表示要刪除的數組元素的下標

2、重新配置mongo

rs.reconfig(c, {"force":true})
# c就是上面修改后的配置,加force參數是因為secondary默認沒有執行此命令的權限


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM