Mongos Shell不显示在分片上创建的集合

时间:2019-10-25 10:13:40

标签: database mongodb sharding mongo-shell

我有一个3节点分片集群,在单独的节点上安装了mongos。 当使用mongos shell创建数据库(测试)并添加集合时,我可以使用

查看集合

使用测试

显示收藏

但是,在分片节点之一(不使用mongos)中创建数据库(test2)时。

mongo --host =主机名--port =端口

使用testdb2

db.collection1.insert({“ testing_user”:“ test”})

我可以从此分片中查看收藏集

但是,当我登录mongos shell时,它显示testdb2的集合为空。

此外,我试图检查配置数据库中是否存在该集合。

使用配置

db.collection.find()

我看不到添加到testdb2的集合

1 个答案:

答案 0 :(得分:1)

  

但是,在分片节点之一(不使用mongos)中创建数据库(test2)时。

不要那样做。

分片群集的重点是在分片之间划分数据。配置服务器分配并维护每个数据库/集合存储位置的记录,而mongos路由器透明地将查询定向到适当的分片。

如果通过直接连接到分片来创建集合,则mongos和配置服务器不会意识到它,因此不能期望mongos知道它。在大多数情况下,这些数据将不可访问,在某些情况下,可能会被删除。

最重要的是,如果您使用的是分片的mongodb集群,则唯一安全的插入和访问数据的方法就是通过mongos。