MongoDB分片+副本集搭建

一、概念

把大量的数据,根据某个条件分开来存储;

举例:

1000W条用户数据,根据用户名,a-h开头的用户放入节点1,i-s的放入2,t-z的放入3;

分片需要:

需要1-n个节点,需要一个路由进程,需要一个配置库(配置节点);

当客户端发送查询请求后,通过路由进程,去配置库查询用户所需的数据在哪个节点中;然由路由进程去节点取数据,返回结果到客户端;

 

二、启动过程

1、启动配置库(一般只要3台)

(1)新建一个用于存放配置库的文件夹

E:\mongodata\confdata和conflogs文件夹

(2)启动配置库

mongod -configsvr -dbpath E:\mongodata\confdata1 -logpath E:\mongodata\conflogs1\log.txt -port 30001

mongod -configsvr -dbpath E:\mongodata\confdata2 -logpath E:\mongodata\conflogs2\log.txt -port 30002

mongod -configsvr -dbpath E:\mongodata\confdata3 -logpath E:\mongodata\conflogs3\log.txt -port 30003

 

2、启动路由进程,并关联配置库(默认端口27017)

mongos -port 27017 -configdb localhost:30001,localhost:30002,localhost:30003 -logpath E:\mongodata\mongoslogs\log.txt

 

3、启动副本集或节点 1-n个

启动副本集查看另一篇博客《MongoDB副本集》,123集群,456集群:

https://my.oschina.net/u/1407079/blog/1586772

或者起单台(不建议)

mongod –dbpath d:\node1 –port 44444

mongod –dbpath d:\node2 –port 55555

mongod –dbpath d:\node3 –port 66666

4、关联路由进程和节点(添加分片)

(1)登录路由进程mongos(cmd下)

mongo localhost:27017/admin

(2)添加分片

添加副本集分片,副本集名称/副本集内任意一台的ip

mongos会自动根据副本集情况,找到其他几台

db.runCommand({ addshard: 'cnrep/127.0.0.1:20002'});

db.runCommand({ addshard: 'cnrep2/127.0.0.1:20004'});

 

添加单台分片

db.runCommand({“addshard”:”127.0.0.1:44444”,allowLocal:true})

db.runCommand({“addshard”:”127.0.0.1:55555”,allowLocal:true})

db.runCommand({“addshard”:”127.0.0.1:66666”,allowLocal:true})

allowLocal表示是否允许客户端不经过路由进程,直接连接节点

 

5、添加分片成功后查看分片状态

sh.status()

 

6、开启分片功能

路由进程中

(1)指定某个数据库开启分片功能

sh.enableSharding(“myshdb”)

db.runCommand({“enablesharding”:”test”})

(2)指定某个表进行分片,指定分片的片键

sh.shardCollection("myshdb.users", {userId:1})

或db.runCommand({“shardcollection”:”test.person”,”key”:{“name”:1}})

 

6、插入数据

for(var i = 0; i < 10000; i++){

    db.users.insert({userId:'user'+i, name:'name'+i})

}

然后用sh.status()查看分片情况

 

三、片键选择

112016_lFJD_1407079.png

112027_4kYx_1407079.png

112052_Evx6_1407079.png

四、其他

1、块

112130_THti_1407079.png

2、均衡器

112147_xUP1_1407079.png

3、修改分片大小

112202_ZgpG_1407079.png

转载于:https://my.oschina.net/u/1407079/blog/1586780

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值