我有一个mongo数据库db.ns,db.0,db.1,... db.7
无意中我从集合中删除了所有数据,但是在数据库文件(带有vim的资源管理器)中,它是数据的全部(或部分)。
尝试恢复移动到另一个mongodb实例或mongod --restore的数据后,我尝试使用mongodump,但该集合显示为空。
我尝试直接从文件中从头开始恢复。我尝试使用每个bsondump,以及单个文件(cat db.ns db.1 ...> bigDB),但没有。
我不知道从mongo数据库文件中恢复数据的其他方法。
有什么建议吗? THX !!!
答案 0 :(得分:0)
[解决]
我会尝试解释我做什么来“解决”这个问题。
在这个SlideShare中,可以看到一些MongoDB数据库文件的工作原理。 http://www.slideshare.net/mdirolf/inside-mongodb-the-internals-of-an-opensource-database
当您意外删除集合时:
你可以在这里看到更多相关信息: mongodb recovery removed records
就我而言,这对我不起作用。
这些文件是切割的BSON和二进制文件。因此,您可以打开并查看所有信息
就我而言,我在PHP中创建了一个简单的函数,它首先读取文件,并在较小的文件中爆炸文件。
之前,采取一对一并应用一些常规表达式来删除十六进制值,将信息分解到寄存器中(您可以看到“_id”键来执行此操作)并执行其他任务来清除信息。
最后,我必须手动处理所有预处理信息以获取所有信息。
我想,我至少丢失了15-25%的信息。但我更愿意认为我已经收回了75%的丢失信息。