MongoDB搭建分片集

这里介绍如何在本地搭建MongoDB的副片集。首先创建3个目录:

mkdir rs0 rs1 rs2

然后启动3个终端各自进行相应的服务:

mongod --port 27017 --dbpath ../rs0 --replSet rs0
mongod --port 27018 --dbpath ../rs1 --replSet rs0
mongod --port 27019 --dbpath ../rs2 --replSet rs0

进入27017端口进行初始化操作:

use admin;
rs.initiate();
rs.add("localhost:27018")
rs.add("localhost:27019")

插入一条数据:

use demo;
db.username.insert({"name":"xxxx","age":20})

进入分片集比如27018中进行查看:

mongo --port 27018
rs.statusOk()
use demo;
db.username.find()

此时就可以看到主服务器写入的数据。
而分片集创建类似副片集,其过程为:

mongod --shardsvr --replSet rs0 --port 27017 --dbpath ../rs0
mongod --shardsvr --replSet rs0 --port 27018 --dbpath ../rs1

进行初始化:

> rs.initiate({_id:"rs0",members:[{_id:0,host:"localhost:27017"},{_id:1,host:"localhost:27018"}]})
{ "ok" : 1 }

进行配置服务器配置:

mongod --configsvr --replSet config --port 28021 --dbpath ../config1
mongod --configsvr --replSet config --port 28022 --dbpath ../config2
mongod --configsvr --replSet config --port 28023 --dbpath ../config3

再初始化配置服务器:

rs.initiate({_id:"config1",members:[{_id:0,host:"localhost:28021"},{_id:1,host:"localhost:28022"},{_id:2,host:"localhost:28023"}]})

创建mongos服务:

mongos --configdb config1/localhost:28021,localhost:28022,localhost:28023 --port 40000
mongo --port 40000

添加分片:

sh.addShard("rs0/localhost:27017,localhost:27018")
sh.enableSharding("demo")
sh.shardCollection("demo.username", {userId: "hashed"})
sh.shardCollection("demo.logs", {timestamp: 1})

创建数据并写入:

mongos> db.username.insertMany([{"name":"zhangsan","age":20,"userId":1},{"name":"lisi","age":25,"userId":2},{"name":"wangwu","age":21,"userId":3}])
db.username.getShardDistribution()

由于只有一个分片,因此数据不会切分。如果创建多个分片且大于指定大小就会触发分片操作。

posted @ 2025-04-09 13:09  月薪几千的牛马  阅读(14)  评论(0)    收藏  举报