如何设置mongod --dbpath

时间:2014-01-30 05:09:03

标签: mongodb unix

对于mongodb和数据库来说,这是非常新的。每当我运行mongo时,我都会收到以下错误消息:

MongoDB shell version: 2.4.9
connecting to: test
Thu Jan 30 13:03:33.170 Error: couldn't connect to server 127.0.0.1:27017 
at src/mongo/shell/mongo.js:145
exception: connect failed

正在运行mongod我看到了:

Thu Jan 30 13:13:36.588 [initandlisten] MongoDB starting : pid=29408 port=27017 dbpath=/usr/local/var/mongodb 64-bit host=Kimis-MacBook-Air-2.local
Thu Jan 30 13:13:36.588 [initandlisten] 
Thu Jan 30 13:13:36.588 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
Thu Jan 30 13:13:36.588 [initandlisten] db version v2.4.9
Thu Jan 30 13:13:36.588 [initandlisten] git version: nogitversion
Thu Jan 30 13:13:36.588 [initandlisten] build info: Darwin minilionvm.local 11.4.2 Darwin Kernel Version 11.4.2: Thu Aug 23 16:25:48 PDT 2012; root:xnu-1699.32.7~1/RELEASE_X86_64 x86_64 BOOST_LIB_VERSION=1_49
Thu Jan 30 13:13:36.588 [initandlisten] allocator: tcmalloc
Thu Jan 30 13:13:36.588 [initandlisten] options: { bind_ip: "127.0.0.1", config: "/usr/local/etc/mongod.conf", dbpath: "/usr/local/var/mongodb" }
Thu Jan 30 13:13:36.591 [initandlisten] journal dir=/usr/local/var/mongodb/journal
Thu Jan 30 13:13:36.591 [initandlisten] recover begin
Thu Jan 30 13:13:36.591 [initandlisten] recover lsn: 108155770
Thu Jan 30 13:13:36.591 [initandlisten] recover /usr/local/var/mongodb/journal/j._0
Thu Jan 30 13:13:36.591 [initandlisten] journal file version number mismatch got:4147 expected:4149. if you have just upgraded, recover with old version of mongod, terminate cleanly, then upgrade.
Thu Jan 30 13:13:36.592 [initandlisten] dbexception during recovery: 13536 journal version number mismatch 16711
Thu Jan 30 13:13:36.592 [initandlisten] exception in initAndListen: 13536 journal version number mismatch 16711, terminating
Thu Jan 30 13:13:36.592 dbexit: 
Thu Jan 30 13:13:36.592 [initandlisten] shutdown: going to close listening sockets...
Thu Jan 30 13:13:36.592 [initandlisten] shutdown: going to flush diaglog...
Thu Jan 30 13:13:36.592 [initandlisten] shutdown: going to close sockets...
Thu Jan 30 13:13:36.592 [initandlisten] shutdown: waiting for fs preallocator...
Thu Jan 30 13:13:36.592 [initandlisten] shutdown: lock for final commit...
Thu Jan 30 13:13:36.592 [initandlisten] shutdown: final commit...
Thu Jan 30 13:13:36.592 [initandlisten] shutdown: closing all files...
Thu Jan 30 13:13:36.592 [initandlisten] closeAllFiles() finished
Thu Jan 30 13:13:36.592 [initandlisten] shutdown: removing fs lock...
Thu Jan 30 13:13:36.592 dbexit: really exiting now

当我手动将我的mongo dpath设置为mongod --dbpath /data/db时(应该是安装时的默认设置)并保持它在终端中运行一切正常。但是一旦我关闭它,一切都会再次破裂。我的问题是:

  1. 为什么我的dbpath设置为/usr/local/var/mongodb
  2. 如何修复此错误,以便mongo在我的机器上运行?
  3. 我假设我需要将dbpath永久设置为/data/db或重新配置某些内容,以便它可以将dbpath用作/usr/local/var/mongodb

    我对unix命令也很新,所以不完全确定如何解决这个错误。

    谢谢你的任何建议!

    所以,通过mongodb文档我读到了这个:

    “除非另有说明,否则mongod将在默认的/data/db目录中查找数据文件。(Windows系统使用\ data \ db目录。)如果使用包管理系统安装。请检查{{1}您的包提供的文件,以查看/etc/mongodb.conf。“

    的配置

    当我查看dbpath中的文件时,没有/etc/文件...但是,我确实看到mongodb.conf ...所以如果我理解正确的话,我应该创建一个名为/usr/local/etc/mongod.conf的文件,并将dbpath设置为/etc/mongodb.conf

    我还需要删除/data/db中的内容吗?

    我认为这与我的PATH如何设置有关...有人可以向我解释如何在unix中解决这个问题,所以我不会遇到这个问题吗?

    再次感谢!

14 个答案:

答案 0 :(得分:14)

只在Mac上试过这个:

  • 在应用的根文件夹中创建数据目录
  • 在您安装mongo目录时将CD放入您的任何位置
  • 运行此命令:

    mongod --dbpath~ / path / to / your / app / data

你应该好好去!

答案 1 :(得分:10)

首先,您将在/etc/mongodb.conf中有一个配置文件,因此这听起来像一个自制安装,它将使用一些更标准化的路径。在很多手动安装documentation中引用了整个/data/db/内容。

所以基本上从您的日志中服务器没有运行,它正在关闭,因此shell没有任何连接。好像你有一些不干净的关闭/重启,这导致了不一致。

清除配置中日记/usr/local/var/mongodb/journal/中的文件。

此外:

sudo rm /var/lib/mongodb/mongod.lock

以防万一,即使该部分看起来很干净。然后重启。

答案 2 :(得分:10)

您可以在mongodb.conf文件中设置dbPath:

storage:
    dbPath: "/path/to/your/database/data/db"

这是一个基于YAML的配置文件格式(自Mongodb 2.6版本以来),所以要注意没有标签只有空格,以及“:”之后的空格

这个文件通常位于* nix系统中:/etc/mongodb.conf

然后运行

$ mongod -f /etc/mongodb.conf

mongod进程将开始......

(在Windows上类似)

> C:\MongoDB\bin\mongod.exe -f C:\MongoDB\mongod.conf

答案 3 :(得分:6)

对我而言必须有:

mongod --dbpath=/whatever/data/path

答案 4 :(得分:2)

mongod  --port portnumber --dbpath /path_to_your_folder

默认情况下,portnumber为27017,path为/ var / lib / mongodb

您可以设置自己的端口号和路径,以便保留所有数据库。

答案 5 :(得分:1)

您还可以将mongod配置为在启动时运行,以便在启动时自动运行,并在配置时设置dbpath。为此,请尝试:

  

mongod --smallfiles --config /etc/mongod.conf

--smallfiles标记用于防止出现大小错误。当然,它是可选的。这样做可以解决您的问题,同时自动化您的mongodb设置。

答案 6 :(得分:0)

非常简单:

sudo chown mongodb:mongodb /var/lib/mongodb/mongod.lock 

答案 7 :(得分:0)

sudo mongod --dbpath ~/data

这使它对我有用。

答案 8 :(得分:0)

场景: MongoDB (版本v4.0.9)。

  1. 设置自定义文件夹(名称: myCustomDatabases ),存储数据库的位置
  2. 自定义文件夹(名称: myCustomDatabases )中,必须创建数据库(名称: newDb )。

解决:

  1. 创建自定义文件夹(名称: myCustomDatabases ):

    D:>md myCustomDatabases
    
  2. 运行'mongo --dbpath',其路径为自定义文件夹(名称: myCustomDatabases ):

    mongod --dbpath "D:\myCustomDatabases"
    
  3. 另一个“ cmd”运行“ mongo”:

    D:>mongo
    

    3.1。显示存储在自定义文件夹(名称: myCustomDatabases )中的所有数据库:

    >show dbs
    admin   0.000GB
    config  0.000GB
    local   0.000GB
    

    3.2。使用名称为 newDb 的数据库:

    > use newDb
    switched to db newDb
    

    3.3。显示存储在自定义文件夹(名称: myCustomDatabases )中的所有数据库:

    >show dbs
    admin   0.000GB
    config  0.000GB
    local   0.000GB
    

    !!! 已删除,表明 newDb 在列表中

    3.4。必须创建一个带有文档的集合,      将会创建数据库 newDb

    > db.Cats.insert({name: 'Leo'})
    WriteResult({ "nInserted" : 1 })
    

    插入({name:'Leo'})操作将创建: 数据库 newDB 和集合 Cat ,因为它们不存在。

    3.5。现在,新创建的数据库 newDb 将显示在列表中。

    > show dbs
    admin   0.000GB
    config  0.000GB
    local   0.000GB
    newDb   0.000GB
    

    3.6。现在,在自定义文件夹 D:\ myCustomDatabases 中,具有数据库 newDb

答案 9 :(得分:0)

在主目录中创建目录db,在db内创建另一个目录数据

cd 
mkdir db
cd db
mkdir data

然后键入此命令-

mongod --dbpath ~/db/data

答案 10 :(得分:0)

Windows环境,本地计算机。 我有一个错误

[js] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: 
Error connecting to 127.0.0.1:27017 :: caused by :: 
No connection could be made because the target machine actively refused it. :

经过反复尝试,我决定

  • 检查Windows“任务管理器”。我注意到MongoDB进程已停止。
  • 我让它运行了。一切都按预期开始。

答案 11 :(得分:0)

您可以使用--dbpath标志来为其提供参数,即目录地址。我发现它对Windows 10 OS很有用。

使用默认设置通常不需要。

答案 12 :(得分:0)

转到您希望保存数据的目录。

创建一个名为“mongodb”的文件夹,并在其中创建另一个名为“data”的目录

导航回终端窗口中的“mongodb”目录并放置以下行mongod --dbpath=data --bind_ip 127.0.0.1

每次要启动mongodb数据库时都运行此命令

答案 13 :(得分:0)

使用终端命令 mongod --dbpath /YOUR/PATH/TO/DATA/ 我需要在每次启动 MongoDB 时输入它。不知何故在 mongo.conf 中设置它没有正确加载路径。我找到了一个解决方案,通过在 ~/.zshrc 中添加别名来避免每次都输入长命令

  1. 关闭 MongoDB(在 mongo 运行时在终端中输入:use admin 按 Enter 并在下一行输入 db.shutdownServer()
  2. 关闭终端窗口。
  3. 打开 ~/.zshrc 或当您的 macOS 使用 bash-shell 打开 ~/.bash_profile
  4. 在文件中添加:alias -g mongod="MongoDB --dbpath /YOUR/PATH/TO/DATA/
  5. 保存您的 .zshrc 或 .bash_profile 文件
  6. 打开终端
  7. 输入 source ~/.zshrc 或对于 bash-shell 用户:source ~/.bash_profile
  8. 输入 mongod

MongoDB 现在应该以正确的路径和连接运行。终端现在可以关闭。要检查 mongo 是否正在运行打开的终端,请输入 mongo 以提供终端中的界面或输入 top 并在应用程序列表中检查 mongo。