MongoDB複本集合

來源:互聯網
上載者:User

標籤:database   replica   server1   伺服器   資料庫   mongodb複本集合   

#簡述:複本集合(Replica Sets),是一個基於主/從複製機制的複製功能,但增加了自動容錯移轉和恢複特性,一個叢集最多可以支援7個伺服器,並且任意節點都可以是主節點。所有的寫操作都被分發到主節點,而讀操作可以在任何節點上進行;
#系統內容OSCentOS6.5server1192.168.3.100:27017server1192.168.3.100:27018node1192.168.3.101:27017node2192.168.3.102:27017
#配置複本集方法之一(自動選定某一台資料庫為主要資料庫)#server1啟動節點mkdir /application/mongodb/database /application/mongodb/logs/application/mongodb/bin/mongod --rest --replSet fuben/192.168.3.100:27017 --port 27017 --dbpath=/application/mongodb/database --logpath=/application/mongodb/logs/mongodb.log --fork#node1啟動節點mkdir /application/mongodb/database /application/mongodb/logs/application/mongodb/bin/mongod --rest --replSet fuben/192.168.3.101:27017 --port 27017 --dbpath=/application/mongodb/database --logpath=/application/mongodb/logs/mongodb.log --fork#node2啟動節點mkdir /application/mongodb/database /application/mongodb/logs/application/mongodb/bin/mongod --rest --replSet fuben/192.168.3.102:27017 --port 27017 --dbpath=/application/mongodb/database --logpath=/application/mongodb/logs/mongodb.log --fork#server1啟動仲裁節點mkdir /application/mongodb/arb/application/mongodb/bin/mongod --rest --replSet fuben --dbpath=/application/mongodb/arb --port 27018 --logpath=/application/mongodb/logs/arb.log --fork
#Server1登陸mongo/application/mongodb/bin/mongo --port 27017#初始化節點(server1上操作)> rs.initiate({_id:"fuben",members:[{_id:1,host:"192.168.3.100:27017"},{_id:2,host:"192.168.3.101:27017"},{_id:3,host:"192.168.3.102:27017"},{_id:4,host:"192.168.3.100:27018","arbiterOnly":true}]});{"info" : "Config now saved locally.  Should come online in about a minute.","ok" : 1}
#查看複本集狀態fuben:PRIMARY> rs.status(){"set" : "fuben","date" : ISODate("2015-05-18T13:27:21Z"),"myState" : 1,"members" : [{"_id" : 1,"name" : "192.168.3.100:27017","health" : 1,"state" : 1,"stateStr" : "PRIMARY",#主"uptime" : 352,"optime" : Timestamp(1431955576, 1),"optimeDate" : ISODate("2015-05-18T13:26:16Z"),"electionTime" : Timestamp(1431955587, 1),"electionDate" : ISODate("2015-05-18T13:26:27Z"),"self" : true},{"_id" : 2,"name" : "192.168.3.101:27017","health" : 1,"state" : 2,"stateStr" : "SECONDARY",#從"uptime" : 64,"optime" : Timestamp(1431955576, 1),"optimeDate" : ISODate("2015-05-18T13:26:16Z"),"lastHeartbeat" : ISODate("2015-05-18T13:27:21Z"),"lastHeartbeatRecv" : ISODate("2015-05-18T13:27:20Z"),"pingMs" : 0,"syncingTo" : "192.168.3.100:27017"},{"_id" : 3,"name" : "192.168.3.102:27017","health" : 1,"state" : 2,"stateStr" : "SECONDARY",#從"uptime" : 62,"optime" : Timestamp(1431955576, 1),"optimeDate" : ISODate("2015-05-18T13:26:16Z"),"lastHeartbeat" : ISODate("2015-05-18T13:27:21Z"),"lastHeartbeatRecv" : ISODate("2015-05-18T13:27:21Z"),"pingMs" : 0,"syncingTo" : "192.168.3.100:27017"},{"_id" : 4,"name" : "192.168.3.100:27018","health" : 1,"state" : 7,"stateStr" : "ARBITER",#仲裁"uptime" : 62,"lastHeartbeat" : ISODate("2015-05-18T13:27:21Z"),"lastHeartbeatRecv" : ISODate("2015-05-18T13:27:21Z"),"pingMs" : 0}],"ok" : 1}
#在PRIMARY上面操作,建庫建表,從資料庫只有讀的許可權fuben:PRIMARY> show dbs;local1.078125GBfuben:PRIMARY> use testdb;switched to db testsbfuben:PRIMARY> db.document01.insert({"name":"wsq","sex":"M","age":"20"});fuben:PRIMARY> show tables;document01system.indexesfuben:PRIMARY> db.document01.find();{ "_id" : ObjectId("5511551aa51f85ff07b6df0c"), "name" : "wsq", "sex" : "M", "age" : "20" }#node1登陸mongo/application/mongodb/bin/mongo --port 27017#設定從庫可讀(從庫上執行)fuben:SECONDARY> show dbs;local1.078125GBtestdb0.203125GBfuben:SECONDARY> use testdb;switched to db testdbfuben:SECONDARY> show tables;Tue Mar 24 19:53:32.513 error: { "$err" : "not master and slaveOk=false", "code" : 13435 } at src/mongo/shell/query.js:128#因為沒有讀的許可權fuben:SECONDARY> rs.slaveOk();#如果不執行該步驟從庫上不可讀資料fuben:SECONDARY> show tables;document01system.indexesfuben:SECONDARY> db.document01.find();{ "_id" : ObjectId("5511551aa51f85ff07b6df0c"), "name" : "wsq", "sex" : "M", "age" : "20" }
#配置複本集方法之二(手動選定某一台資料庫為主要資料庫)#server1啟動節點mkdir -p /mongodb/data/db /mongodb/data/logsmongod --rest --replSet fuben/192.168.3.171:27017 --master --port 27017 --dbpath=/mongodb/data/db --logpath=/mongodb/data/logs/mongodb.log --fork#node1啟動節點mkdir -p /mongodb/data/db /mongodb/data/logsmongod --rest --replSet fuben/192.168.3.204:27017 --port 27017 --dbpath=/mongodb/data/db --logpath=/mongodb/data/logs/mongodb.log --fork#node2啟動節點mkdir -p /mongodb/data/db /mongodb/data/logsmongod --rest --replSet fuben/192.168.3.108:27017 --port 27017 --dbpath=/mongodb/data/db --logpath=/mongodb/data/logs/mongodb.log --fork
#初始化節點:(登陸其中任何一個節點操作皆可)[[email protected] /]# mongo --port 27017MongoDB shell version: 2.4.12connecting to: 127.0.0.1:27017/test> rs.initiate({_id:"fuben",members:[{_id:1,host:"192.168.3.171:27017",priority:2},{_id:2,host:"192.168.3.204:27017",priority:3},{_id:3,host:"192.168.3.108:27017",priority:4}]});{"info" : "Config now saved locally.  Should come online in about a minute.","ok" : 1}#priority 是設定優先權的,預設優先順序為1,可以是1-1000的數字
#驗證fuben:PRIMARY> rs.status();{"set" : "fuben","date" : ISODate("2015-03-24T12:12:14Z"),"myState" : 1,"members" : [{"_id" : 1,"name" : "192.168.10.171:27017","health" : 1,"state" : 2,"stateStr" : "SECONDARY",#從"uptime" : 195,"optime" : Timestamp(1427198934, 1),"optimeDate" : ISODate("2015-03-24T12:08:54Z"),"lastHeartbeat" : ISODate("2015-03-24T12:12:13Z"),"lastHeartbeatRecv" : ISODate("2015-03-24T12:12:13Z"),"pingMs" : 0,"syncingTo" : "192.168.10.108:27017"},{"_id" : 2,"name" : "192.168.10.204:27017","health" : 1,"state" : 2,"stateStr" : "SECONDARY",#從"uptime" : 195,"optime" : Timestamp(1427198934, 1),"optimeDate" : ISODate("2015-03-24T12:08:54Z"),"lastHeartbeat" : ISODate("2015-03-24T12:12:13Z"),"lastHeartbeatRecv" : ISODate("2015-03-24T12:12:13Z"),"pingMs" : 0,"syncingTo" : "192.168.10.171:27017"},{"_id" : 3,"name" : "192.168.10.108:27017","health" : 1,"state" : 1,"stateStr" : "PRIMARY",#主"uptime" : 498,"optime" : Timestamp(1427198934, 1),"optimeDate" : ISODate("2015-03-24T12:08:54Z"),"self" : true}],"ok" : 1}
#查看當前主庫fuben:SECONDARY> rs.isMaster();{"setName" : "fuben","setVersion" : 1,"ismaster" : false,"secondary" : true,"hosts" : ["192.168.3.102:27017","192.168.3.101:27017","192.168.3.100:27017"],"arbiters" : ["192.168.3.100:27018"],"primary" : "192.168.3.100:27017","me" : "192.168.3.102:27017","maxBsonObjectSize" : 16777216,"maxMessageSizeBytes" : 48000000,"maxWriteBatchSize" : 1000,"localTime" : ISODate("2015-05-18T13:36:41.854Z"),"maxWireVersion" : 2,"minWireVersion" : 0,"ok" : 1}


本文出自 “吳善強” 部落格,請務必保留此出處http://shanqiangwu.blog.51cto.com/8067564/1653968

MongoDB複本集合

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.