集群架構
本次實驗部署3臺主機node1、node2、node3,2個副本集db1、db2作為分片,3臺主機均有1個配置庫實例
操作步驟
安裝
node1上執行如下命令,完成后拷貝/mongodb目錄到node2、node3
useradd mongodb mkdir -p /mongodb/data/{db1,db2,db3,configdb} wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.10.tgz tar -zxvf mongodb-linux-x86_64-rhel62-3.2.10.tgz mv mongodb-linux-x86_64-rhel62-3.2.10/* /mongodb chown -R mongodb:mongodb /mongodb
啟動副本實例和配置庫實例
3臺主機分別運行如下命令
/mongodb/bin/mongod --dbpath /mongodb/data/db1 --port 10001 --replSet db1 --fork /mongodb/bin/mongod --dbpath /mongodb/data/db2 --port 10002 --replSet db2 --fork /mongodb/bin/mongod --dbpath /mongodb/data/configdb --port 20000 --fork
初始化副本
/mongodb/bin/mongo node1:10001 > use admin > db.runCommand( { "replSetInitiate": { "_id":"db1", "members": [ { "_id":1, "host":"node1:10001" }, { "_id":2, "host":"node2:10001" }, { "_id":3, "host":"node3:10001" } ] } }) > exit; /mongodb/bin/mongo node1:10002 > use admin > db.runCommand( { "replSetInitiate": { "_id":"db2", "members": [ { "_id":1, "host":"node1:10002" }, { "_id":2, "host":"node2:10002" }, { "_id":3, "host":"node3:10002" } ] } }) > exit;
node1上啟動mongos
/mongodb/bin/mongos --port 30000 --configdb node1:20000,node2:20000,node3:20000 --fork /mongodb/bin/mongo node1:30000 > use admin #添加分片 > db.runCommand({"addShard":"db1/node1:10001"}) > db.runCommand({"addShard":"db2/node1:10002"}) #此時listshards會顯示主輔所有節點 > db.runCommand({listshards:1}) #新建庫并開啟分片 > db.runCommand({"enablesharding":"testdb"}) > db.runCommand({"shardcollection":"testdb.testcoll","key":{_id:'hashed'}})
插入測試數據,可看到數據分配在隨機分片
> for(var i=0;i<10;i++){db.testcoll.insert({testkey:"testvalue"+i});} /mongodb/bin/mongo node1:10002 > db.testcoll.find() /mongodb/bin/mongo node2:10001 > db.testcoll.find()
原創文章,作者:N24_lizi1,如若轉載,請注明出處:http://www.www58058.com/58095
贊,應該比其他小伙伴領先好多,可以多加個場景,mongodb設置副本集之后,如果一個node 節點的數據被刪除了,該如何處理~