Mongo shell没有显示数据库?

时间:2014-08-16 03:23:00

标签: mongodb

我有各种Mongo数据库,当我在CentOS linux中ls -l时,我可以看到每个数据库的databaseA.0和databaseA.ns文件,文件大小足以告诉我的数据仍在那里,但是当我通过执行mongo命令转到mongoDB shell并执行show dbsshow databases时,它只显示admin(空),本地0.078GB和test(空)。 如何恢复我的数据库?

其他信息: 当我启动mongo shell时,我得到以下内容:

MongoDB shell version: 2.6.4
connecting to: test
Server has startup warnings:
2014-08-15T23:23:14.300-0500 [initandlisten]
2014-08-15T23:23:14.300-0500 [initandlisten] ** WARNING: You are running in OpenVZ which can cause issues on versions of RHEL older than RHEL6.
2014-08-15T23:23:14.300-0500 [initandlisten]
2014-08-15T23:23:14.300-0500 [initandlisten] ** WARNING: /proc/sys/vm/zone_reclaim_mode is 1
2014-08-15T23:23:14.300-0500 [initandlisten] **          We suggest setting it to 0
2014-08-15T23:23:14.300-0500 [initandlisten] **          http://www.kernel.org/doc/Documentation/sysctl/vm.txt
2014-08-15T23:23:14.300-0500 [initandlisten]

2 个答案:

答案 0 :(得分:3)

检查dbpath

我会检查MongoDB使用的dbpath是否符合您的预期。

mongo shell中,运行:

 db.adminCommand("getCmdLineOpts")

如果有dbpath设置,则会将其列为parsed.storage.dbPath(因为您使用的是MongoDB 2.6)。如果没有明确的设置,dbpath将默认为/data/db

如果使用了配置文件,您还应该看到parsed.config中列出的配置路径。

要修复dbpath,您需要更新配置文件并重新启动mongod

设置dbpath

请注意,MongoDB 2.6支持两种配置文件格式,因此您需要匹配现有文件的格式:

YAML配置使用分号表示分隔符,而旧格式使用等号。

答案 1 :(得分:0)

如果您的mongo客户端已连接,请尝试db.repairDatabase()。有关详细信息click here


使用--repairpath选项修复数据文件,以保留未修改的原始数据文件。

IMPORTANT:始终将mongod作为same user运行,以避免更改MongoDB数据文件的权限。

使用mongod启动--repair以读取现有数据文件。

mongod --dbpath /data/db --repair --repairpath /data/db0

完成此操作后,新修复的数据文件将位于/data/db0目录中。 使用以下调用启动mongod,将dbPath指向/data/db0

mongod --dbpath /data/db0

确认数据文件可操作后,您可以删除或存档/data/db目录中的旧数据文件。您可能还希望将修复后的文件移动到旧数据库位置,或更新dbPath以指示新位置。


要在不保留原始文件的情况下修复数据文件,请不要使用--repairpath选项,如以下过程:

删除过时的锁文件:

rm /data/db/mongod.lock

/data/db替换为您的MongoDB实例数据文件所在的dbPath

WARNING:删除mongod.lock文件后,必须先运行--repair进程才能使用数据库。

使用mongod启动--repair以读取现有数据文件。

mongod --dbpath /data/db --repair

完成此操作后,修复的数据文件将替换/data/db目录中的原始数据文件。

使用以下调用启动mongod,将dbPath指向/data/db

mongod --dbpath /data/db

来源:http://docs.mongodb.org/manual/tutorial/recover-data-following-unexpected-shutdown/