Mongodb5.0.3 shard分片实验(Linux)问题合集

一、安装MongoDB

linux下MongoDB安装

二、遇到的问题:

1、config server的数量

建议config server的rs至少要有3个副本集成员。
参考文章1中提到config服务器个数需要是奇数,参考文章2提出2个服务器也可以,本次实验未验证。

2、启动mongos后闪退

原因:可能是上一次关闭mongos后端口未关闭。
解决:
查看端口:netstat -tunlp|grep 28000
并用kill -9 PID关闭。

3、addshard时报错:does not have a master.If this is a replica set, ensure that it has a health…

原因:Mongo版本为5.0.3,启动分片时增加了replSet属性将shard分为一组,且在启动分片后需要对其进行初始化。
参考:
MongoDB单复制集+路由本地部署指南
这里还做错了一次:
一开始的写错的代码的结果:

shards:
{ “_id” : “shard”, “host” : “shard/127.0.0.1:29001,127.0.0.1:29002,127.0.0.1:29003”, “state” : 1}

代码:

#注意replSet和config不同,但经实验发现这样会把三个端口都接到一个副本集,不符合配置要求
mongod --replSet shard --dbpath /newdata2/MongoShard/sh1/ --port 29001 --fork --logpath /newdata2/MongoShard/log/sh1.log --shardsvr --logappend

mongod --replSet shard --dbpath /newdata2/MongoShard/sh2/ --port 29002 --fork --logpath /newdata2/MongoShard/log/sh2.log --shardsvr --logappend

mongod --replSet shard --dbpath /newdata2/MongoShard/sh3/ --port 29003 --fork --logpath /newdata2/MongoShard/log/sh3.log --shardsvr --logappend
#登录mongos
mongo -port 29001
#初始化
config={_id:'shard',members:[{_id:0,host:'127.0.0.1:29001'},{_id:1,host:'127.0.0.1:29002'},{_id:2,host:'127.0.0.1:29003'}]}

rs.initiate(config)

实际要求和正确配置代码:
要求:

shards:
{ “_id” : “shard1”, “host” : “shard1/127.0.0.1:29001”, “state” : 1, “topologyTime” : Timestamp(1636915971, 2) }
{ “_id” : “shard2”, “host” : “shard2/127.0.0.1:29002”, “state” : 1, “topologyTime” : Timestamp(1636915977, 2) }
{ “_id” : “shard3”, “host” : “shard3/127.0.0.1:29003”, “state” : 1, “topologyTime” : Timestamp(1636915982, 2) }
代码:

#启动
mongod --replSet shard1 --dbpath /newdata2/MongoShard/sh1/ --port 29001 --fork --logpath /newdata2/MongoShard/log/sh1.log --shardsvr --logappend

mongod --replSet shard2 --dbpath /newdata2/MongoShard/sh2/ --port 29002 --fork --logpath /newdata2/MongoShard/log/sh2.log --shardsvr --logappend

mongod --replSet shard3 --dbpath /newdata2/MongoShard/sh3/ --port 29003 --fork --logpath /newdata2/MongoShard/log/sh3.log --shardsvr --logappend
#分别初始化
mongo -port 29001
config={_id:'shard1',members:[{_id:000,host:'127.0.0.1:29001'}]}
rs.initiate(config)

mongo -port 29002
config={_id:'shard2',members:[{_id:001,host:'127.0.0.1:29002'}]}
rs.initiate(config)

mongo -port 29003
config={_id:'shard3',members:[{_id:002,host:'127.0.0.1:29003'}]}
rs.initiate(config)

说明还是需要正确理解shard的配置和replSet的原理。

4、启动shard分片后显示mongo child process started successfully, parent exiting

说明分片启动成功。可用 ps -e|grep mongo查看。

5、addShard时显示:use replica set url format

输入命令sh.addShard("127.0.0.1:29001")时显示:

use replica set url format <setname>/<server1>,<server2>, ...

原因:Mongo版本不同。
解决:addShard需在admin库下执行,且应输入:sh.addShard("shard/127.0.0.1:29001")

三、参考

1、mongodb-分片shard-原理
2、MongoDB Sharding分片配置
(结合6看shard和replSet)
3、mongodb优化
4、MongoDB单复制集+路由本地部署指南
(配置最相似)
5、【MongoDB运维】Shard分片集群
6、mongodb4.0.2分片集群部署
(3个分片集)
7、MongoDB进行Sharding时遇到的问题
(看问题总结,以及移除分片用removeshard,但做实验的时候发现如果只剩一个shard集不能用)
8、Mongodb的安装、主从配置、replicaSet配置
(2.0.1,看参数说明)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值