我有各种 Mongo 数据库,当我ls -l在 CentOS linux 中执行操作时,我可以看到每个数据库的 databaseA.0 和 databaseA.ns 文件,并且文件大小足以告诉我的数据仍然存在,但是当我转到 mongoDB 时shell 通过执行mongo命令并执行 ashow dbs或show databases它只显示 admin(empty)、local 0.078GB 和 test(empty)。如何取回我的数据库?
附加信息:当我启动 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]
Run Code Online (Sandbox Code Playgroud)
dbpath我会检查dbpathMongoDB 使用的设置是否设置为您期望的值。
在mongoshell 中,运行:
db.adminCommand("getCmdLineOpts")
Run Code Online (Sandbox Code Playgroud)
如果有一个dbpath集合,它将在那里列为parsed.storage.dbPath(因为您使用的是 MongoDB 2.6)。如果没有明确设置,dbpath将默认为/data/db.
如果使用了配置文件,您还应该看到 .conf 中列出的配置的路径parsed.config。
要修复dbpath您需要更新配置文件并重新启动mongod。
dbpath注意MongoDB 2.6支持两种配置文件格式,所以需要匹配现有文件的格式:
YAML 配置- 在 2.6 中添加:
storage:
dbPath: /var/lib/mongo
Run Code Online (Sandbox Code Playgroud)旧版 INI 风格的配置格式- 2.6 仍受支持,如果您从旧版本的 MongoDB 升级,则可能采用这种格式
dbpath = /var/lib/mongo
Run Code Online (Sandbox Code Playgroud)YAML 配置使用分号作为分隔符,而旧格式使用等号。
| 归档时间: |
|
| 查看次数: |
20877 次 |
| 最近记录: |