database - Mongos shell 不显示在分片上创建的集合
问题描述
我有一个 3 节点分片集群,mongos 安装在一个单独的节点上。当使用 mongos shell 创建数据库(测试)并添加集合时,我可以使用查看集合
使用测试
显示收藏
但是,当在一个分片节点(不使用 mongos)中创建数据库(test2)时。
mongo --host=主机名 --port=port
使用 testdb2
db.collection1.insert({"testing_user":"test"})
我可以从这个分片查看收藏
但是,当我登录到 mongos shell 时,它显示 testdb2 的集合为空。
另外,我尝试检查该集合是否存在于配置数据库中。
使用配置
db.collection.find()
我没有看到添加到 testdb2 的集合
解决方案
但是,当在一个分片节点(不使用 mongos)中创建数据库(test2)时。
不要那样做。
分片集群的全部意义在于在分片之间划分数据。配置服务器分配和维护每个数据库/集合存储位置的记录,mongos 路由器透明地将查询定向到适当的分片。
如果您通过直接连接到分片来创建集合,mongos 和配置服务器不知道它,因此不能期望 mongos 知道它。在大多数情况下,这些数据将无法访问,并且在某些情况下可能会被删除。
底线是,如果您使用的是分片 mongodb 集群,插入和访问数据的唯一安全方法是通过 mongos。
推荐阅读
- javascript - 在 Openlayers 中动态更改图层的可见性
- sql - 如何将多个逗号分隔的字符串转换为具有多列的表
- java - 当尝试使用 primary_key 作为 Hibernate 中复合键的一部分时,字段 'index_id' 没有默认值
- python - 在 Python 3 中使用 Zip 每 2 个字符拆分字符串
- compilation - 动态链接和静态链接的指令点值
- javascript - JSON - 将子子项作为 IF 语句的条件
- r - R找到ecdf函数的倒数
- scikit-learn - 为什么我的 train_test_split 不适用于分层选项?
- python - 如何用函数评估方程?
- python - 如何在 Paramiko 服务器中实现端口转发?