MongoDB 3.4分片错误。 “如果没有以--shardsvr开头,则无法接受分片命令”

时间:2017-07-05 17:38:14

标签: mongodb sharding

我在centOS 7.2机器上安装了mongoDB 3.4.5。 我正在独立模式下配置分片。

我遵循的步骤:

对于副本集:

mongod --replSet rs0 --dbpath /data/srd/rs0 --logpath /data/srd/rs0/log.rs0 --port 27000 --fork --logappend --smallfiles --oplogSize 50 &
mongod --replSet rs0 --dbpath /data/srd/rs1 --logpath /data/srd/rs1/log.rs1 --port 27001 --fork --logappend --smallfiles --oplogSize 50 &
mongod --replSet rs0 --dbpath /data/srd/rs2 --logpath /data/srd/rs2/log.rs2 --port 27002 --fork --logappend --smallfiles --oplogSize 50 &

对于碎片:

mongod --replSet rs0 --shardsvr --dbpath /data/srd/srd0 --logpath /data/srd/srd0/log.srd0 --port 27020 --fork --logappend --smallfiles --oplogSize 50 &
mongod --replSet rs0 --shardsvr --dbpath /data/srd/srd1 --logpath /data/srd/srd1/log.srd1 --port 27021 --fork --logappend --smallfiles --oplogSize 50 &
mongod --replSet rs0 --shardsvr --dbpath /data/srd/srd2 --logpath /data/srd/srd2/log.srd2 --port 27022 --fork --logappend --smallfiles --oplogSize 50 &

对于配置服务器:

mongod --configsvr --replSet configReplSet --dbpath /data/srd/cfgrep0 --logpath /data/srd/cfgrep0/log.cfgrep0 --port 27006 --fork &
mongod --configsvr --replSet configReplSet --dbpath /data/srd/cfgrep1 --logpath /data/srd/cfgrep1/log.cfgrep1 --port 27007 --fork &
mongod --configsvr --replSet configReplSet --dbpath /data/srd/cfgrep2 --logpath /data/srd/cfgrep2/log.cfgrep2 --port 27008 --fork &

启动Mongos:

mongos --configdb configReplSet/sit:27006,sit:27007,sit:27008 --port 26060

我可以登录mongos shell并且还可以添加分片。 但是在启用分片时我会得到如下例外情况。

mongos> sh.enableSharding("test");
{
        "code" : 193,
        "ok" : 0,
        "errmsg" : "Cannot accept sharding commands if not started with --shardsvr"
}

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

以下是我设置分片的步骤:
1.启动Config Server:

mongod --configsvr --dbpath fresh/config1 --port 30001 --replSet r1
  1. 启动Mongos:

    mongos --configdb“r1 / localhost:30001”--port 40001

  2. 连接到mongo shell并执行以下命令: 连接到Mongo Shell:

    mongo --host localhost --port 30001

  3. 现在执行以下命令:

    rs.initiate();
    rs.status();
    
    1. 启动Mongo Shard服务器:

      mongod --shardsvr --port 50001 --dbpath fresh / m1 mongod --shardsvr --port 50002 --dbpath fresh / m2

    2. 连接到mongos并执行以下命令: 连接到mongos:

      mongo --host localhost --port 40001

    3. 现在执行以下命令:

      sh.addShard('localhost:50001');
      sh.addShard('localhost:50002');
      sh.enableSharding('testdb');
      sh.shardCollection('testdb.demo',{'name':1});
      

      MongoDB用户手册:https://docs.mongodb.com/manual/reference/method/#sharding