我们有一个MongoDB碎片,配置有4个碎片(A、B、C、D)。在A,B,C之后添加了Shard D,一些集合与D正确地平衡,但只有一个集合在迁移中有一些问题。
在D日志上始终显示这条消息。
W分片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上删除,还是在所有碎片中删除?
发布于 2018-11-15 01:05:26
是的,您需要直接连接到shard D,并在那里丢弃集合,如果从其他碎片中删除,则不会丢失集合。然后当平衡器再次运行时,平衡器将能够创建集合本身。不知何故,在作为碎片添加之前,复制集上的集合就在那里。(您还可能希望直接从碎片副本集(而不是mongos)执行一个mongos,以防万一有您想要的数据。
https://stackoverflow.com/questions/52008943
复制相似问题