我有一个3节点分片集群,在单独的节点上安装了mongos。 当使用mongos shell创建数据库(测试)并添加集合时,我可以使用
查看集合使用测试
显示收藏
但是,在分片节点之一(不使用mongos)中创建数据库(test2)时。
mongo --host =主机名--port =端口
使用testdb2
db.collection1.insert({“ testing_user”:“ test”})
我可以从此分片中查看收藏集
但是,当我登录mongos shell时,它显示testdb2的集合为空。
此外,我试图检查配置数据库中是否存在该集合。
使用配置
db.collection.find()
我看不到添加到testdb2的集合
答案 0 :(得分:1)
但是,在分片节点之一(不使用mongos)中创建数据库(test2)时。
不要那样做。
分片群集的重点是在分片之间划分数据。配置服务器分配并维护每个数据库/集合存储位置的记录,而mongos路由器透明地将查询定向到适当的分片。
如果通过直接连接到分片来创建集合,则mongos和配置服务器不会意识到它,因此不能期望mongos知道它。在大多数情况下,这些数据将不可访问,在某些情况下,可能会被删除。
最重要的是,如果您使用的是分片的mongodb集群,则唯一安全的插入和访问数据的方法就是通过mongos。