ubuntu上的mongoDB服务无法修复

时间:2017-04-13 02:16:26

标签: mongodb ubuntu

我有一个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数据库?

1 个答案:

答案 0 :(得分:1)

我意识到我可以使用mongodump --archive={path}并从正在运行的本地数据库转储到存档。然后我打开了服务并使用mongorestore --archive={path},它将所有内容加载到正确的数据库中。它再次发挥作用。