MongoDB分片詳解

MongoDB分片詳解

MongoDB分片詳解

3. 啟動mongos進程

<code>// 啟動mongos如果使用--logpath 好像啟動不起來
D:\\Java\\MongoDB7\\Server\\bin>mongos --port 27017 --configdb configdbSet/127.0.0.1:30000,127.0.0.1:30001,127.0.0.1:30002
/<code>

4. 以副本集的方式啟動3臺分片服務器

這裡以MongoDB、MongoDB2、MongoDB3作為分片服務器,啟動時最好將dbpath對應的目錄下的文件全刪掉

<code>D:\\Java\\MongoDB\\Server\\bin>mongod --shardsvr  --port 20000 --replSet mySet --dbpath=D:\\Java\\MongoDB\\DB 

D:\\Java\\MongoDB2\\Server\\bin>mongod --shardsvr --port 20001 --replSet mySet --dbpath=D:\\Java\\MongoDB2\\DB

D:\\Java\\MongoDB3\\Server\\bin>mongod --shardsvr --port 20002 --replSet mySet --dbpath=D:\\Java\\MongoDB3\\DB

D:\\Java\\MongoDB\\Server\\bin>mongo 127.0.0.1:20000
> config = {
_id:'mySet',
members:[
{_id:0,host:'127.0.0.1:20000'},
{_id:1,host:'127.0.0.1:20001'},
{_id:2,host:'127.0.0.1:20002'}
]
}
> rs.initiate(config)
/<code>
MongoDB分片詳解

MongoDB分片詳解

MongoDB分片詳解

MongoDB分片詳解

5. 連接mongos

<code>D:\\Java\\MongoDB7\\Server\\bin>mongo 127.0.0.1:27017

// 將三臺分片服務器添加到分片集群中
mongs>sh.addShard("mySet/127.0.0.1:20000,127.0.0.1:20001,127.0.0.1:20002")

// 配置需要分片的數據庫
> sh.enableSharding("test")

// 配置分片數據庫的集合對應的片鍵(索引)
> sh.shardCollection("test.users", {"name": 1})

// 切換到分片的數據庫

> use test

// 向文檔中插入多條文檔
> for(i = 0; i < 100000; i++) { db.users.insert({"name": "name"+i, "age": i}); }

// 用於測試看文檔是否按塊拆分到三臺分片服務器上
> sh.status()
/<code>
MongoDB分片詳解


MongoDB分片詳解


集群相關的所有配置信息都保存在config數據庫上

MongoDB分片詳解

  • shards: 跟蹤記錄集群內所有的分片信息
  • databases: 跟蹤記錄集群內的所有數據庫的信息
  • collections:跟蹤記錄所有分片集合的信息
  • chunks: 記錄所有塊的信息
  • changelog:跟蹤記錄集群中的操作
  • tags:用於將指定塊分到指定的分片服務器上
  • settings: 均衡器相關的信息
<code>D:\\Java\\MongoDB7\\Server\\bin>mongo 127.0.0.1:27017
mongos> use config
switched to db config

mongos> show collections
changelog
chunks
collections
databases
lockpings
locks
migrations
mongos
shards
tags
version

mongos> db.shards.find().pretty()
{
"_id" : "mySet",
"host" : "mySet/127.0.0.1:20000,127.0.0.1:20001,127.0.0.1:20002",
"state" : 1
}

mongos> db.databases.find()
{ "_id" : "test", "primary" : "mySet", "partitioned" : true }

mongos> db.collections.findOne()
{
"_id" : "test.users",
"lastmodEpoch" : ObjectId("59a1203c9cdd0bcdfccff4d9"),
"lastmod" : ISODate("1970-02-19T17:02:47.296Z"),
"dropped" : false,
"key" : {
"username" : 1
},
"unique" : false
}

mongos> db.chunks.find().pretty()

{
"_id" : "test.users-username_MinKey",
"lastmod" : Timestamp(1, 1),
"lastmodEpoch" : ObjectId("59a1203c9cdd0bcdfccff4d9"),
"ns" : "test.users",
"min" : {
"username" : { "$minKey" : 1 }
},
"max" : {
"username" : "username1"
},
"shard" : "mySet"
}
{
"_id" : "test.users-username_\"username1\"",
"lastmod" : Timestamp(1, 2),
"lastmodEpoch" : ObjectId("59a1203c9cdd0bcdfccff4d9"),
"ns" : "test.users",
"min" : {
"username" : "username1"
},
"max" : {
"username" : "username6"
},
"shard" : "mySet"
}
{
"_id" : "test.users-username_\"username6\"",
"lastmod" : Timestamp(1, 3),
"lastmodEpoch" : ObjectId("59a1203c9cdd0bcdfccff4d9"),
"ns" : "test.users",
"min" : {
"username" : "username6"
},
"max" : {
"username" : { "$maxKey" : 1 }
},
"shard" : "mySet"
}
/<code>


本號致力於發表實用的技術文章,歡迎關注Java實用技術,及時閱讀每天的優質文章。


分享到:


相關文章: