以前我的磁盘空间不足,mongodb停止工作。然后我增加了磁盘大小,但mongodb没有开始工作。MongoDB修复命令失败
虽然我已经启用日志记录,我有执行以下命令
须藤-u的MongoDB的mongod --dbpath的/ var/lib中/的MongoDB/--repair
但这个修复命令得到了一个异常并停止修理和然后退出。
Fri Nov 30 13:29:36 [initandlisten] build index bd_production.news { _id: 1 }
Fri Nov 30 13:29:36 [initandlisten] fastBuildIndex dupsToDrop:0
Fri Nov 30 13:29:36 [initandlisten] build index done. scanned 2549 total
records. 0.008 secs
Fri Nov 30 13:29:36 [initandlisten] bd_production.change_sets
Assertion failure isOk() src/mongo/db/pdfile.h 360
0x879d86a 0x85a9835 0x85e441e 0x84caa02 0x84c7d19 0x8229b5a 0x822bfd8
0x875bd51 0x875f0c7 0x8760df4 0x83e6523 0x83b6c3b 0x8753b07 0x83b92bf
0x8827ab7 0x882a53b 0x882d4bf 0x882d691 0x85ed280 0x81719dc
mongod(_ZN5mongo15printStackTraceERSo+0x2a) [0x879d86a]
mongod(_ZN5mongo10logContextEPKc+0xa5) [0x85a9835]
...
...
...
... some error msg
Fri Nov 30 13:29:36 [initandlisten] assertion 0 assertion
src/mongo/db/pdfile.h:360 ns:bd_production.change_sets
query:{}
Fri Nov 30 13:29:36 [initandlisten] problem detected during query over
bd_production.change_sets : { $err: "assertion
src/mongo/db/pdfile.h:360" }
Fri Nov 30 13:29:36 [initandlisten] query
bd_production.change_sets ntoreturn:0 keyUpdates:0 exception:
assertion src/mongo/db/pdfile.h:360 reslen:71 197ms
Fri Nov 30 13:29:36 [initandlisten] exception in initAndListen: 13106
nextSafe(): { $err: "assertion src/mongo/db/pdfile.h:360" }, terminating
Fri Nov 30 13:29:36 dbexit:
...
...
新闻收集已成功修复,但'change_set'不能成功修复。
如何修复特定集合(change_set)或数据库?
UPDATE: 当我运行--repair mongodump为change_set收集我得到了以下错误消息:
Tue Dec 4 10:45:21 [tools] backwards extent pass
Tue Dec 4 10:45:21 [tools] extent loc: 5:1181e000
Tue Dec 4 10:45:21 [FileAllocator] allocating new datafile /home/suvankar/dd/bd_production.5, filling with zeroes...
Tue Dec 4 10:45:21 [FileAllocator] creating directory /home/suvankar/dd/_tmp
Tue Dec 4 10:45:21 [FileAllocator] done allocating datafile /home/suvankar/dd/bd_production.5, size: 511MB, took 0.042 secs
Tue Dec 4 10:45:21 [tools] warning: Extent not ok magic: 0 going to try to continue
Tue Dec 4 10:45:21 [tools] length:0
Tue Dec 4 10:45:21 [tools] ERROR: offset is 0 for record which should be impossible
Tue Dec 4 10:45:21 [tools] wrote 1 documents
Tue Dec 4 10:45:21 [tools] extent loc: 0:0
Tue Dec 4 10:45:21 [tools] ERROR: invalid extent ofs: 0
Tue Dec 4 10:45:21 [tools] 5 objects
Tue Dec 4 10:45:21 dbexit:
Tue Dec 4 10:45:21 [tools] shutdown: going to close listening sockets...
Tue Dec 4 10:45:21 [tools] shutdown: going to flush diaglog...
Tue Dec 4 10:45:21 [tools] shutdown: going to close sockets...
Tue Dec 4 10:45:21 [tools] shutdown: waiting for fs preallocator...
Tue Dec 4 10:45:21 [tools] shutdown: lock for final commit...
当我运行以下命令时,出现以下错误消息:$ sudo mongodump --repair --dbpath/var/lib/mongodb '如果您在同一路径上运行mongod,则应该连接到该路径而不是直接数据文件访问 Mon Dec 3 21:53:14 dbexit: Mon Dec 3 21:53:14 [tools] shutdown:要关闭监听套接字... Mon Dec 3 21:53:14 [tools] shutdown :要冲洗diaglog ... 。 Mon Dec 3 21:53:14 [tools] shutdown:关闭所有文件... Mon Dec 3 21:53:14 [tools] closeAllFiles()finished Mon Dec 3 21:53:14 dbexit:现在真的退出' – suvankar
好的,所以有几件事情 - 1.当你尝试这个时,MongoDB不应该运行 - 我不认为它是,但只是为了确定; 2.您应该指定我们的输出目录(请参阅链接的命令页上的选项); 3.你应该指定你试图转储的数据库(带'--db')和可选的集合('--collection') - 基本上我的示例命令就是这样一个示例,你需要提供一个完整的命令根据您的需求进行工作 –
我已更正命令以运行修复与mongodump ...但没有运气!我得到的错误消息是在我的问题的更新部分。在执行命令后,它创建一个空的change_set.bson文件,但没有创建元数据文件。其他收集工作正常。 – suvankar