1. 程式人生 > >Linux下MongoDB叢集之建立並配置副本叢集

Linux下MongoDB叢集之建立並配置副本叢集

案例演示:

一、在linux環境下,在一臺機器上建立3個節點,建立一個測試為目的的副本集

1.首先建立3個不同的資料儲存資料夾

[[email protected] db]# cd /usr/local/mongodb/data/db
[[email protected] db]# mkdir rs0-0
[[email protected] db]# mkdir rs0-1
[[email protected] db]# mkdir rs0-2
[[email protected] db]# ls
rs0-0  rs0-1  rs0-2

2.分別開啟3個終端,啟動3個mongod服務

[
[email protected]
db]# mongod --port 27017 --dbpath=rs0-0 -replSet rs0
[[email protected] db]# mongod --port 27018 --dbpath=rs0-1 -replSet rs0
[[email protected] db]# mongod --port 27019 --dbpath=rs0-2 -replSet rs0

3.開啟第4個終端,驗證mongod服務是否啟動成功


二、叢集初始化

1.啟動客戶端,登入一個機器

[[email protected] ~]# mongo --port 27017

2.初始化叢集

> rs.initiate()
{
	"info2" : "no configuration specified. Using a default configuration for the set",
	"me" : "wugenqiang.bigdata:27017",
	"ok" : 1
}

3.為叢集增加節點

rs0:SECONDARY> rs.add("wugenqiang.bigdata:27018")
{ "ok" : 1 }
rs0:PRIMARY> rs.add("wugenqiang.bigdata:27019")
{ "ok" : 1 }

操作時請將wugenqiang.bigdata換成您自己的真實主機名hostname

4.檢視叢集配置資訊

rs0:PRIMARY> rs.conf()
{
	"_id" : "rs0",
	"version" : 3,
	"protocolVersion" : NumberLong(1),
	"members" : [
		{
			"_id" : 0,
			"host" : "wugenqiang.bigdata:27017",
			"arbiterOnly" : false,
			"buildIndexes" : true,
			"hidden" : false,
			"priority" : 1,
			"tags" : {
				
			},
			"slaveDelay" : NumberLong(0),
			"votes" : 1
		},
		{
			"_id" : 1,
			"host" : "wugenqiang.bigdata:27018",
			"arbiterOnly" : false,
			"buildIndexes" : true,
			"hidden" : false,
			"priority" : 1,
			"tags" : {
				
			},
			"slaveDelay" : NumberLong(0),
			"votes" : 1
		},
		{
			"_id" : 2,
			"host" : "wugenqiang.bigdata:27019",
			"arbiterOnly" : false,
			"buildIndexes" : true,
			"hidden" : false,
			"priority" : 1,
			"tags" : {
				
			},
			"slaveDelay" : NumberLong(0),
			"votes" : 1
		}
	],
	"settings" : {
		"chainingAllowed" : true,
		"heartbeatIntervalMillis" : 2000,
		"heartbeatTimeoutSecs" : 10,
		"electionTimeoutMillis" : 10000,
		"catchUpTimeoutMillis" : 60000,
		"getLastErrorModes" : {
			
		},
		"getLastErrorDefaults" : {
			"w" : 1,
			"wtimeout" : 0
		},
		"replicaSetId" : ObjectId("5b48831fbcf017394d5a56d4")
	}
}

5.檢視叢集狀態

rs0:PRIMARY> rs.status
function () {
    return db._adminCommand("replSetGetStatus");
}

至此建立副本叢集以及初始化完成