1

我们有一个配置有 4 个分片(A、B、C、D)的 MongoDB 分片。分片 D 在 A、B、C 之后添加。一些集合与 D 正确平衡,但只有一个集合存在迁移问题。

在 D 日志上始终显示此消息。

W SHARDING [migrateThread] 无法接收集合产品的块 [{ _id: ObjectId('5ad5586b7ee7821b48139cfb') }, { _id: ObjectId('5ad6d2d77ee78222283cc9d5') }) 因为我们已经有一个同名的集合,其 UUID 为 c16daf18-9412-437b- a1ba-a9e000e694ac,与捐赠者的 UUID 25a21963-d9ba-4022-becc-648d4d39a68c 不同。如果该分片包含来自先前产品化身的数据,则手动删除该分片上的集合。

我理解错误,但我不知道该怎么做。如果我去 mongos 并使用 status(),收集产品不会显示在分片 D 上,但在日志上则相反。我不知道,如果我在 shard D 上连接并运行 db.products.drop(),这个动作只是在 D 上删除还是在所有 shard 上删除?

4

1 回答 1

1

是的,您需要直接连接到分片 D 并将集合放到那里,如果从其他分片中不会丢弃。然后当平衡器再次运行时,平衡器将能够自己创建集合。不知何故,在它被添加为分片之前,该集合就在副本集上。(您也可能希望mongodump直接从分片副本集(而不是mongos)中执行操作,以防万一那里有您想要的数据。

于 2018-11-15T01:05:26.787 回答