【Mongodb】 replica set 新增和刪除節點。
前面介紹瞭如何搭建replica set ,本文介紹如何向replica set 新增新節點和刪除老節點。
向已有的replica set 新增新成員是很簡單的,新加的成員可以是空的,當然也可以是從其他節點的資料複製,下面介紹一下如何新增新成員:
新增新成員時,必須在新的機器上先起來一個mongodb服務,必須指出要加入的replica set 叢集的名字基本語法如下(其他是預設的),然後再在replica set的master 庫上執行新增操作,
./mongod -dbpath=/opt/mongodata/r1 -port 27017 -replSet myset
當然也可以使用下面的命令,將輸出日誌記錄到/opt/mongodata/r1/rac3.27017.log 裡面!
[mongodb@rac3 bin]$./mongod -dbpath=/opt/mongodata/r1 -port 27017 -replSet myset -logpath=/opt/mongodata/r1/rac3.27017.log -logappend &
在主節點上執行新增操作
[mongodb@rac4 bin]$ ./mongo 127.0.0.1:27020
MongoDB shell version: 2.0.1
connecting to: 127.0.0.1:27020/test
PRIMARY> rs.status();
{
"set" : "myset",
"date" : ISODate("2011-11-01T06:13:01Z"),
"myState" : 1,
"syncingTo" : "10.250.7.220:27018",
"members" : [
{
"_id" : 0,
"name" : "10.250.7.220:27018",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 62668,
"optime" : {
"t" : 1320066230000,
"i" : 1
},
"optimeDate" : ISODate("2011-10-31T13:03:50Z"),
"lastHeartbeat" : ISODate("2011-11-01T06:13:01Z"),
"pingMs" : 0
},
{
"_id" : 1,
"name" : "10.250.7.220:27019",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 63887,
"optime" : {
"t" : 1320066230000,
"i" : 1
},
"optimeDate" : ISODate("2011-10-31T13:03:50Z"),
"lastHeartbeat" : ISODate("2011-11-01T06:13:01Z"),
"pingMs" : 0
},
{
"_id" : 2,
"name" : "10.250.7.220:27020",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"optime" : {
"t" : 1320066230000,
"i" : 1
},
"optimeDate" : ISODate("2011-10-31T13:03:50Z"),
"self" : true
}
],
"ok" : 1
}
PRIMARY> rs.add("10.250.7.241:27017");
{ "ok" : 1 } --新增成功
新增之後,mongodb 會自動執行新加節點的恢復操作,所以第一次查詢rs.status()時候,新加節點的資訊為空,等待恢復完成之後再次查詢就有了基本資訊了。
PRIMARY> rs.status();
{
....省略....
{
"_id" : 2,
"name" : "10.250.7.220:27020",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"optime" : {
"t" : 1320128045000,
"i" : 1
},
"optimeDate" : ISODate("2011-11-01T06:14:05Z"),
"self" : true
},
{
"_id" : 3,
"name" : "10.250.7.241:27017",
"health" : 0,
"state" : 8,
"stateStr" : "(not reachable/healthy)",
"uptime" : 0,
"optime" : {
"t" : 0,
"i" : 0
},
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2011-11-01T06:14:07Z"),
"pingMs" : 0,
"errmsg" : "still initializing"
}
],
"ok" : 1
}
PRIMARY> rs.status();
{
"set" : "myset",
"date" : ISODate("2011-11-01T06:16:08Z"),
"myState" : 1,
"syncingTo" : "10.250.7.220:27018",
"members" : [
.....省略....
{
"_id" : 3,
"name" : "10.250.7.241:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 117,
"optime" : {
"t" : 1320128045000,
"i" : 1
},
"optimeDate" : ISODate("2011-11-01T06:14:05Z"),
"lastHeartbeat" : ISODate("2011-11-01T06:16:07Z"),
"pingMs" : 0
}
],
"ok" : 1
}
PRIMARY>
NOTE:這裡只是測試了使用空庫來新增新節點的,當然也可以從其他節點複製資料檔案過來,這樣可以更快的和主庫進行同步操作,從而節省恢復時間!
如何刪除一個節點:
只需在主節點執行rs.remove()操作
PRIMARY> rs.remove("10.250.7.241:27017");
{ "ok" : 1 }
PRIMARY>
主節點將rac3 刪除之後,如果退出再次進入rac3上的mongodb,會發現提示符變為 STARTUP,已經停止應用日誌但是不可寫入:
[mongodb@rac3 bin]$ ./mongo 127.0.0.1:27017
MongoDB shell version: 2.0.1
connecting to: 127.0.0.1:27017/test
STARTUP> rs.status();
{
"set" : "myset",
"date" : ISODate("2011-11-01T06:40:23Z"),
"myState" : 0,
"syncingTo" : "10.250.7.220:27020",
"members" : [
{
"_id" : 3,
"name" : "10.250.7.241:27017",
"health" : 1,
"state" : 0,
"stateStr" : "STARTUP", --啟動狀態,但是還是 myset 中的一個節點。
"optime" : {
"t" : 1320129036000,
"i" : 1
},
"optimeDate" : ISODate("2011-11-01T06:30:36Z"),
"self" : true
}
],
"ok" : 1
}
STARTUP>
STARTUP> show dbs;
local 1.203125GB
test 0.203125GB
STARTUP> use test;
switched to db test
STARTUP> db.yql.insert({val:"this is a message on rac3:27017 which is drop by rac4’s primary!"});
not master
STARTUP> exit
bye
想重新使用此節點必須關閉mongodb服務,
[mongodb@rac3 bin]$ ./mongo 127.0.0.1:27017
MongoDB shell version: 2.0.1
connecting to: 127.0.0.1:27017/test
STARTUP> use admin
switched to db admin
STARTUP>
STARTUP> db.shutdownServer();
Tue Nov 1 14:45:44 DBClientCursor::init call() failed
Tue Nov 1 14:45:44 query failed : admin.$cmd { shutdown: 1.0 } to: 127.0.0.1:27017
server should be down...
Tue Nov 1 14:45:44 trying reconnect to 127.0.0.1:27017
Tue Nov 1 14:45:44 reconnect 127.0.0.1:27017 failed couldn't connect to server 127.0.0.1:27017
Tue Nov 1 14:45:44 Error: error doing query: unknown shell/collection.js:150
> exit
bye
重新登入資料庫:從replica set 脫離後,從主庫應用的資料依然可用。
[mongodb@rac3 bin]$ ./mongo 127.0.0.1:27017
MongoDB shell version: 2.0.1
connecting to: 127.0.0.1:27017/test
>
>
> use test
switched to db test
> db.yql.insert({val:"this is a message on rac3:27017 which is drop by rac4’s primary!"});
> db.yql.find();
{ "_id" : ObjectId("4eae9cb269faf1a7cde0811c"), "val" : "this is a message on 27020 primary !" } --從主庫複製的資料。
{ "_id" : ObjectId("4eaf96ebc048c68f812e6de4"), "val" : "this is a message on rac3:27017 which is drop by rac4’s primary!" }
>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-710048/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Mongodb】 replica set 兩種新增節點方法的日誌分析MongoDB
- mongodb副本集新增刪除節點MongoDB
- MongoDB副本集新增和刪除仲裁節點一例MongoDB
- mongodb 3.0 replica set 配置MongoDB
- mongodb replica set 和 nodejs中使用mongoose連線replicaMongoDBNodeJS
- 【Mongodb】如何建立mongodb的replica setMongoDB
- Hyperledger Fabric節點的動態新增和刪除
- 新增和刪除hadoop叢集中的節點Hadoop
- [MONGODB]: WHEN ARBITER REQUIRED FOR REPLICA SETMongoDBUI
- redis cluster節點/新增刪除操作Redis
- networkx基礎用法:新增節點、新增邊、刪除節點、刪除邊、計算度、賦權重
- MongoDB Replica Set 副本集實踐MongoDB
- MongoDB搭建Replica Set複製集MongoDB
- k8s叢集刪除和新增node節點K8S
- oracle11g_RAC新增刪除節點Oracle
- docker 下部署mongodb Replica Set 叢集DockerMongoDB
- 【Mongodb】 Replica set 的讀寫分離MongoDB
- Oracle叢集軟體管理-新增和刪除叢集節點Oracle
- oracle 10g rac,刪除故障節點並新增新節點Oracle 10g
- oracle 10g rac 新增節點與刪除節點步驟Oracle 10g
- mongodb複製集(replica set)搭建及管理MongoDB
- 【MongoDB】高可用方案之副本集(Replica Set)MongoDB
- 【Mongodb】Replica Set 的選舉策略之三MongoDB
- 【Mongodb】 Replica set 的 選舉策略之二MongoDB
- 【Mongodb】 Replica set 的選舉策略之一MongoDB
- Hadoop增加和刪除節點Hadoop
- 11G R2 RAC新增刪除節點
- JavaScript刪除節點自身JavaScript
- Oracle Rac 刪除節點Oracle
- MongoDB副本集replica set (二)--副本集環境搭建MongoDB
- 【RAC】Oracle10g rac新增刪除節點命令參考Oracle
- 小丸子學MongoDB系列之——部署Replica Set+Sharded ClusterMongoDB
- jQuery如何刪除元素節點jQuery
- DOM節點刪除之empty和remove區別REM
- jQuery 新增和刪除classjQuery
- Solr 刪除和新增 indexSolrIndex
- 【RAC】刪除RAC資料庫節點(二)——刪除ASM資料庫ASM
- 【RAC】刪除RAC資料庫節點(五)——刪除ONS資料庫