mongodb - 无法将文档插入分片集合
问题描述
在将文档插入任何分片集合时,我收到错误“如果不以 --shardsvr 开头,则无法接受分片命令”。
我的设置就像
rs0:mongon1,mongon2,mongon3
rs1: mongon4, mongon5, mongon6 在端口 27017
配置:mongoconf1、mongoconf2、mongoconf3 都在端口 27019
mongos 上的 mongos:27017 在 mongos 服务器上使用以下命令成功启动 mongos
mongos --configdb configReplSet/mongoconfs1:27019,mongoconfs2:27019,mongoconfs3:27019
以下是我的分片状态
--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("5b21a5847e4ba64674ee085e")
}
shards:
{ "_id" : "rs0", "host" : "rs0/mongon1:27017,mongon2:27017,mongon3:27017", "state" : 1 }
{ "_id" : "rs1", "host" : "rs1/mongodbn5:27017,mongon4:27017,mongon6:27017", "state" : 1 }
active mongoses:
"3.6.5" : 1
autosplit:
Currently enabled: yes
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last 5 attempts: 5
Last reported error: Could not find host matching read preference { mode: "primary" } for set rs0
Time of Reported error: Thu Jun 14 2018 00:44:12 GMT+0000 (UTC)
Migration Results for the last 24 hours:
No recent migrations
databases:
{ "_id" : "config", "primary" : "config", "partitioned" : true }
config.system.sessions
shard key: { "_id" : 1 }
unique: false
balancing: true
chunks:
rs1 1
{ "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : rs1 Timestamp(1, 0)
{ "_id" : "experimentine", "primary" : "rs1", "partitioned" : true }
{ "_id" : "experimentone", "primary" : "rs1", "partitioned" : true }
experimentone.run1
shard key: { "id" : 1 }
unique: false
balancing: true
chunks:
rs1 1
{ "id" : { "$minKey" : 1 } } -->> { "id" : { "$maxKey" : 1 } } on : rs1 Timestamp(1, 0)
{ "_id" : "masterdb", "primary" : "rs0", "partitioned" : true }
masterdb.mastercollection
shard key: { "id" : 1 }
unique: false
balancing: true
chunks:
rs0 1
{ "id" : { "$minKey" : 1 } } -->> { "id" : { "$maxKey" : 1 } } on : rs0 Timestamp(1, 0)
{ "_id" : "test", "primary" : "rs0", "partitioned" : false }
{ "_id" : "testdb", "primary" : "rs0", "partitioned" : true }
testdb.demo
shard key: { "name" : 1 }
unique: false
balancing: true
chunks:
rs0 1
{ "name" : { "$minKey" : 1 } } -->> { "name" : { "$maxKey" : 1 } } on : rs0 Timestamp(1, 0)
请帮助我确定我哪里出错了。
解决方案
我发现了插入的问题。我使用的是mongodb.conf文件,在这些配置文件中我必须提到分片:节点的详细信息是分片集群的一部分。我错过了在属于分片集的所有 mongod 服务器的 mongod.conf 文件中输入分片详细信息。
我所有的 mongod 节点都应该在 mongod.conf 文件的 ** sharding** 部分中包含以下内容。
#sharding:
sharding:
clusterRole: shardsvr
推荐阅读
- node.js - 登录反应后如何重定向到另一个页面
- java - 我想将符合逻辑的记录重新组合在一起
- javascript - 无法循环通过 node.js 中的嵌套对象
- javascript - 动作必须是普通对象。使用自定义中间件在测试库而不是 App 上进行异步操作
- asp.net-mvc - 为 IEnumerable 中的每个模型创建一个编辑表单
ASP.NET MVC - json - 序列化 JSON 字符串上的尾随“r”
- oracle - 将 blob 上传到 Oracle 数据库时法语字符被损坏
- python - 我们可以删除 delta 湖中最新版本的 delta 表吗?
- c# - JSON.NET 序列化为父类型
- expo - 开始开发移动/网络前端到外部数据库