【问题标题】:Import documents to a particular/targeted shard in Mongo Shard Cluster将文档导入到 Mongo Shard Cluster 中的特定/目标分片
【发布时间】:2020-10-28 09:22:51
【问题描述】:

我是 MongoDB 新手,但是我已经设置了一个包含 3 个副本集的分片集群。每个副本集有 2 个 mongod 实例。我有一个单独的配置服务器和 1 个 mongos 实例。

我想尝试在集合未启用分片时是否可以将文档导入特定/目标分片。(据我所知,我们无法控制哪个分片通过 mongos 实例完成导入时,集合将被保存)

因此,我使用以下命令导入文档,并且成功(跟随this);

mongoimport --db NormalTestDB --collection TestDams --host <replSetName>/<hostname1><:port>,<hostname2><:port> --jsonArray --file “<path_to_json>”

(我在&lt;replSetName&gt;中使用了一个特定的副本集名称)

现在,当我在 mongos shell(通过连接到 NormalTestDB)中尝试这个简单的查询 db.TestDams.find().count() 时,它返回 0。但是如果我通过直接连接到相关副本集的 Primary 尝试相同的查询,我得到 14603。

有什么方法可以同步吗?或者有没有办法使用mongoimport 定位特定的分片??

【问题讨论】:

    标签: mongodb mongoimport


    【解决方案1】:

    (顺便说一句:副本集中通常应该有 3 个节点,而不是 2 个。)

    enable sharding on a database 时可以指定主分片。未分片的集合将存储在该分片上。因此,您可以为每个分片定义一个数据库,并将每个数据库配置为具有不同的分片作为主分片。

    或者,如果您设置zones,您可以指定要在每个分片上存储哪些分片键值。然后通过插入适当的值,您可以将数据存储在您想要的分片上。

    您应该通过mongos 节点之一在分片集群上执行所有操作,而不是像您直接写入分片mongods 那样。

    【讨论】:

    • 谢谢。但是,我使用的是 MongoDB 3.6,并且定义主分片的选项似乎在 MongoDB 4.2.2(和 4.0.14)以后可用。另外,我需要将集合放在同一个数据库中。很抱歉没有在问题中提及这一点。此外,尽管文档中的数据略有不同,但很可能所有集合都具有相同的分片键(例如 _id)。
    • 然后使用区域分片。
    • 而且 _id 通常是一个糟糕的分片键选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 2016-03-08
    相关资源
    最近更新 更多