我有一个AWS ubuntu实例,我升级了a)ubuntu版本(从16.04升级到16.04.2)和b)mongoDB版本(从3.2升级到3.4.3)。但是,当我这样做时,mongoDB取消了与我所有数据库的链接。
我能够将数据库文件复制到/data/db/
,使用sudo mongod --repair
并在mongo
shell中访问所有数据库。
但是,执行sudo service start mongod
时运行的mongoDB的服务版本仍在使用原始/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数据库?
答案 0 :(得分:1)
我意识到我可以使用mongodump --archive={path}
并从正在运行的本地数据库转储到存档。然后我打开了服务并使用mongorestore --archive={path}
,它将所有内容加载到正确的数据库中。它再次发挥作用。