我们有一个配置有4个分片(A,B,C,D)的MongoDB分片。在A,B,C之后添加了碎片D。一些集合可以与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上,但是会显示在日志上相反。 我不知道,如果我连接到分片D并运行db.products.drop(),此操作是仅删除D还是所有分片?
答案 0 :(得分:1)
是的,您需要直接连接到分片D并将其放到那里,如果从其他分片中删除则不会删除。然后,当平衡器再次运行时,平衡器将能够自己创建集合。不知何故,在将副本集作为分片添加之前,副本集中存在该集合。 (您也可能希望直接从分片副本集(而不是mongodump
进行mongos
,以防万一有想要的数据。