恢复到活动的MongoDB数据库时,索引发生冲突
定期当我们做一个mongorestore
我们正在获取索引约束的错误。 最初,在还原数据库时,您可能会遇到索引错误,但似乎完全不可能,但看起来根本原因是操作期间的mongorestore
产量。 这允许通过恢复和用户插入密钥上的项目,因此当索引被应用到最后时,它会出错。
下面是一个例子,可以想象我们有一个集合foo
在“标题”上有一个唯一的索引。
mongorestore --host myDb --db foo --drop auth // foo is dropped // RESTORE: foo.insert({ title : "A" }); // RESTORE: foo.insert({ title : "B" }); // restore yields to insert // USER: foo.insert({ title : "C" }); // user yields back to restore // RESTORE: foo.insert({ title : "C" }); // RESTORE: foo.ensureIndex({ title : 1 }, { unique : true }) -- ERROR E11000 duplicate key error index: foo.data.$title_1
无论如何要防止在一个mongorestore
这个? 看来我需要在mongorestore
临时写入locking整个数据库的mongorestore
。 我唯一能find的就是db.fsyncLock
但它locking了整个mongod
,而不仅仅是我正在处理的数据库。