mongodb簡單分片實驗

yepkeepmoving發表於2016-04-19
##mongodb簡單分片實驗
10.127.32.121       mongos  shard1
10.127.32.123       shard3
10.127.32.125       config  shard2

##安裝資料庫
安裝略
##10.127.32.121 包含mongos和shard1節點##
[root@node1 ~]# mkdir -p /home/mongodb/mongos/log
[root@node1 ~]# mkdir -p /home/mongodb/shard1/log      
[root@node1 ~]# mkdir -p /home/mongodb/shard1/data

##10.127.32.125 包含config和shard2節點##
[root@node2 /]# mkdir -p /home/mongodb/config/data
[root@node2 /]# mkdir -p /home/mongodb/config/log
[root@node2 /]# mkdir -p /home/mongodb/shard2/data
[root@node2 /]# mkdir -p /home/mongodb/shard2/log

##10.127.32.123 包含shard3節點##
[root@node3 /]# mkdir -p /home/mongodb/shard3/data
[root@node3 /]# mkdir -p /home/mongodb/shard3/log

##配置並啟動shard節點
10.127.32.121    
[root@node1 ~]# mongod --dbpath=/home/mongodb/shard1/data --logpath=/home/mongodb/shard1/log/shard1.log --logappend --port 27017 --shardsvr --fork
netstat -luntp |grep 27017
10.127.32.125
[root@node2 /]# mongod --dbpath=/home/mongodb/shard2/data --logpath=/home/mongodb/shard2/log/shard2.log --logappend --port 27017 --shardsvr --fork
netstat -luntp |grep 27017
10.127.32.123
[root@node3 /]# mongod --dbpath=/home/mongodb/shard3/data --logpath=/home/mongodb/shard3/log/shard3.log --logappend --port 27017 --shardsvr --fork
netstat -luntp |grep 27017
##配置並啟動config節點
10.127.32.125
[root@node2 /]# mongod --dbpath=/home/mongodb/config/data --logpath=/home/mongodb/config/log/config.log --logappend --port 27018 --configsvr --fork
netstat -luntp |grep 27018
##配置並啟動mongos節點
10.127.32.121
[root@node1 ~]# mongos  --logpath=/home/mongodb/mongos/log/mongos.log --logappend --port 27019 --configdb 10.127.32.125:27018 --fork
[root@node1 ~]# netstat -luntp |grep 27019

##新增分片
(連線mongos——>add shards——>enable sharding——>對集合進行分片)
語法:
db.runCommand({addshard:"127.0.0.1:8081",allowLocal:true})  ##allowLocal:true僅僅開發時才將分片配置到本地,生產時不能這樣
單例項新增:db.runCommand({addshard:"<hostname>:<port>",maxSize:<size>,name:"<shard_name>"})
副本群集新增:db.runCommand({addshard:"<replica_set>/<hostname>:<port>",maxSize:<size>,name:"<shard_name>"})
注意:如果mongos和shard在同一伺服器上,不能透過localhost新增分片,建議透過實際IP地址。在mongos上執行下屬命令:
use admin
db.runCommand({addshard:"10.127.32.121:27017"})
db.runCommand({addshard:"10.127.32.123:27017"})
db.runCommand({addshard:"10.127.32.125:27017"})

##上述配置資訊被新增至config server

##開啟分片功能
use shard_db
for (i=0;i<=10000;i++){db.t1.insert({id:i})}

use admin
db.runCommand({"enablesharding":"shard_db"})

##對集合及逆行分片
db.runCommand({shardcollection:"<namespace>",key:"<key>"})
unique:"true/false" ##啟動對shard key的唯一性約束,預設是true

db.runCommand({"shardcollection":"shard_db.t1","key":{"_id":1}})
db.runCommand({"shardcollection":"shard_db.t1","key":{"id":1}})  ##"errmsg" : "please create an index that starts with the shard key before sharding." 預設需要建立索引

use shard_db
for (i=10001;i<=100000;i++){db.t1.insert({id:i})}


##測試分片##透過mongos

##檢視集合狀態
use shard_db
db.t1.stats()

##檢視配置庫對於分片伺服器的配置儲存,檢視分片狀態
use admin
mongos> db.printShardingStatus()
##檢視叢集對t1的自動分片機制配置資訊
    use config
mongos> db.shards.find()
##刪除shard
db.runCommand({"removeshard" : "ip:port"})

##修改shard
db.runCommand({"moveprimary" : "test","to" : "ip:port"})
##新增shard
db.runCommand({addshard:"ip:port",allowLocal:true})


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27067062/viewspace-2084219/,如需轉載,請註明出處,否則將追究法律責任。

相關文章