我有一个 AWS ubuntu 实例,我在其中升级了 a)ubuntu 版本(从 16.04 升级到 16.04.2)和 b)mongoDB 版本(从 3.2 升级到 3.4.3)。但是,当我这样做时,mongoDB 会取消链接到我的所有数据库。
我能够将数据库文件复制到 /data/db/
, 使用 sudo mongod --repair
在 mongo
shell,访问所有数据库。
但是,服务 mongoDB 版本,当我执行 sudo service start mongod
时运行还在用原来的/var/lib/mongodb/
(数据仍然存在的地方)。当我尝试使用 db.repairDatabase()
从 shell 中修复时, 我只得到 { "ok" : 1 }
但没有添加数据库。我需要让服务 mongod 运行,以便客户可以访问它。
这是服务 mongod 输出的读数:
> db.adminCommand("getCmdLineOpts")
{
"argv" : [
"/usr/bin/mongod",
"--quiet",
"--config",
"/etc/mongod.conf"
],
"parsed" : {
"config" : "/etc/mongod.conf",
"net" : {
"bindIp" : "127.0.0.1",
"port" : 27017
},
"storage" : {
"dbPath" : "/var/lib/mongodb",
"journal" : {
"enabled" : true
}
},
"systemLog" : {
"destination" : "file",
"logAppend" : true,
"path" : "/var/log/mongodb/mongod.log",
"quiet" : true
}
},
"ok" : 1
}
> db.repairDatabase()
{ "ok" : 1 }
> show databases
admin 0.000GB
local 0.000GB
如何修复服务 mongod 数据库?
最佳答案
我意识到我可以使用 mongodump --archive={path}
并从正在工作的本地数据库转储到存档。然后我打开服务并使用mongorestore --archive={path}
,它将所有内容加载到正确的数据库中。它再次起作用。
关于ubuntu上的mongoDB服务没有修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43382476/