標籤:count enabled 副本 啟用 查看 storage 關閉 ble des
mongodb叢集 組件:mongos:請求分發config server 設定管理員shard 分區資料服務器 三台機器192.168.174.128192.168.174.129192.168.174.130伺服器規劃 連接埠分配: mongos:20000config:21000shard1:27001shard2:27002shard3:27003 伺服器需要同步時間,否則測試不通過 128機器操作 1、下載官網:https://www.mongodb.com/download-center#community 2、解壓 tar -xf mongodb-linux-x86_64-rhel70-3.6.5.tgz && mv mongodb-linux-x86_64-rhel70-3.6.5 /usr/local/mongodb 3、加環境變數,方便操作(3台機器) vim /etc/profile export PATH=$PATH:/usr/local/mongodb/bin source /etc/profile 4、建立所需目錄 mkdir -p /usr/local/mongodb/{conf,config/{data,log},shard1/{data,log},shard2/{data,log},shard3/{data,log},mongos/log} 5、編寫設定檔config.conf、shard1.conf、shard2.conf、shard3.conf、mongos.conf ====================================================================================vim /usr/local/mongodb/conf/config.confsystemLog: destination: file logAppend: true path: /usr/local/mongodb/config/log/configsvr.logstorage: dbPath: /usr/local/mongodb/config/data journal: enabled: trueprocessManagement: fork: true pidFilePath: /usr/local/mongodb/config/log/configsvr.pid timeZoneInfo: /usr/share/zoneinfonet: port: 21000 bindIp: 192.168.174.128 maxIncomingConnections: 20000replication: replSetName: configssharding: clusterRole: configsvr ====================================================================================== vim /usr/local/mongodb/conf/shard1.confsystemLog: destination: file logAppend: true path: /usr/local/mongodb/shard1/log/shard1.logstorage: dbPath: /usr/local/mongodb/shard1/data journal: enabled: trueprocessManagement: fork: true pidFilePath: /usr/local/mongodb/shard1/log/shard1.pid timeZoneInfo: /usr/share/zoneinfonet: port: 27001 bindIp: 192.168.174.128 maxIncomingConnections: 20000replication: replSetName: shard1sharding: clusterRole: shardsvr=======================================================================================vim /usr/local/mongodb/conf/shard2.confsystemLog: destination: file logAppend: true path: /usr/local/mongodb/shard2/log/shard2.logstorage: dbPath: /usr/local/mongodb/shard2/data journal: enabled: trueprocessManagement: fork: true pidFilePath: /usr/local/mongodb/shard2/log/shard2.pid timeZoneInfo: /usr/share/zoneinfonet: port: 27002 bindIp: 192.168.174.128 maxIncomingConnections: 20000replication: replSetName: shard2sharding: clusterRole: shardsvr=========================================================================================vim /usr/local/mongodb/conf/shard3.confsystemLog: destination: file logAppend: true path: /usr/local/mongodb/shard3/log/shard3.logstorage: dbPath: /usr/local/mongodb/shard3/data journal: enabled: trueprocessManagement: fork: true pidFilePath: /usr/local/mongodb/shard3/log/shard3.pid timeZoneInfo: /usr/share/zoneinfonet: port: 27003 bindIp: 192.168.174.128 maxIncomingConnections: 20000replication: replSetName: shard3sharding: clusterRole: shardsvr===========================================================================================vim /usr/local/mongodb/conf/mongos.confsystemLog: destination: file logAppend: true path: /usr/local/mongodb/mongos/log/mongos.logprocessManagement: fork: true pidFilePath: /usr/local/mongodb/mongos/log/mongos.pid timeZoneInfo: /usr/share/zoneinfonet: port: 20000 bindIp: 192.168.174.128 maxIncomingConnections: 20000sharding: configDB: configs/192.168.174.128:21000,192.168.174.130:21000,192.168.174.131:21000============================================================================================ 6、將mongodb目錄scp到其兩台伺服器 scp -r /usr/local/mongodb 192.168.174.130:/usr/local/mongodb scp -r /usr/local/mongodb 192.168.174.131:/usr/local/mongodb **注意:130和131節點,設定檔中的bindIp需要修改為對應的IP 7、建立使用者,授權(三台機器) useradd mongod chown -R mongod:mongod /usr/local/mongodb/ ============================================================================8、啟動設定管理員(3台) mongod -f /usr/local/mongodb/conf/config.conf 9、初始化複本集(登陸任意一個執行個體即可) #串連 mongo 192.168.174.128:21000 #初始化複本集 rs.initiate( { _id: "configs", configsvr: true, members: [ { _id : 0, host : "192.168.174.128:21000" }, { _id : 1, host : "192.168.174.130:21000" }, { _id : 2, host : "192.168.174.131:21000" } ] }) #查看狀態 rs.status();==============================================================================10、啟動shard1、shard2、shard3(3台) mongod -f /usr/local/mongodb/conf/shard1.conf mongod -f /usr/local/mongodb/conf/shard2.conf mongod -f /usr/local/mongodb/conf/shard3.conf 11、初始化複本集(在一台執行即可) #串連 mongo 192.168.174.130:27001 #初始化複本集 rs.initiate( { _id : "shard1", members: [ { _id : 0, host : "192.168.174.128:27001",priority:2}, { _id : 1, host : "192.168.174.130:27001",priority:1}, { _id : 2, host : "192.168.174.131:27001",arbiterOnly: true} ] }) #查看狀態 rs.status(); #串連 mongo 192.168.174.131:27002 #初始化複本集 rs.initiate( { _id : "shard2", members: [ { _id : 0, host : "192.168.174.128:27002",arbiterOnly: true}, { _id : 1, host : "192.168.174.130:27002",priority:2}, { _id : 2, host : "192.168.174.131:27002",priority:1} ] }) #查看狀態 rs.status(); #串連 mongo 192.168.174.128:27003 #初始化複本集 rs.initiate( { _id : "shard3", members: [ { _id : 0, host : "192.168.174.128:27003",priority:1}, { _id : 1, host : "192.168.174.130:27003",arbiterOnly: true}, { _id : 2, host : "192.168.174.131:27003",priority:2} ] }) #查看狀態 rs.status();===============================================================================12、啟動mongos(3台) mongos -f /usr/local/mongodb/conf/mongos.conf 13、啟用分區(登陸任意一個執行個體) mongo 192.168.174.128:20000 use admin sh.addShard("shard1/192.168.174.128:27001,192.168.174.130:27001,192.168.174.130:27001"); sh.addShard("shard2/192.168.174.128:27002,192.168.174.130:27002,192.168.174.130:27002"); sh.addShard("shard3/192.168.174.128:27003,192.168.174.130:27003,192.168.174.130:27003"); #查看叢集狀態 sh.status(); =============================================================================== 14、測試 設定chunk大小 use config db.settings.save({ "_id" : "chunksize", "value" : 1 }) #為方便測試設為1M,否則需要插入大量資料才會分區儲存 登陸 mongo 192.168.127.128:20000 指定testdb分區生效 use admin; db.runCommand({ enablesharding :"testdb"}); 指定需要分區的集合和片鍵 db.runCommand({ shardcollection : "testdb.table1",key : {id: 1} }); use testdb; 插入資料 for (var i = 1; i <= 10000; i++) db.table1.save({id:i,"test1":"testval1"}); 查看是分區情況 db.table1.stats(); 可以看到資料分到3個分區,各自分區數量為: shard1 “count” : 42183,shard2 “count” : 38937,shard3 “count” : 18880。已經成功了! 啟動關閉 mongodb的啟動順序是,先啟動設定管理員,在啟動分區,最後啟動mongos. mongod -f /usr/local/mongodb/conf/config.conf mongod -f /usr/local/mongodb/conf/shard1.conf mongod -f /usr/local/mongodb/conf/shard2.conf mongod -f /usr/local/mongodb/conf/shard3.conf mongos -f /usr/local/mongodb/conf/mongos.conf 關閉時,直接killall殺掉所有進程(測試使用) pkill mongo
MongoDB 分區叢集