【问题标题】:how to set mongod --dbpath如何设置 mongod --dbpath
【发布时间】:2014-01-30 05:09:02
【问题描述】:

对 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 在我的机器上运行?

我假设我需要将 dbpath 永久设置为 /data/db 或重新配置某些东西,以便它与 dbpath 一起工作为 /usr/local/var/mongodb

我对 unix 命令也相当陌生,因此不完全确定如何修复此错误。

感谢您的任何建议!

所以,我阅读了 mongodb 文档:

"除非指定,否则 mongod 将在默认的/data/db 目录中查找数据文件。(Windows 系统使用 \data\db 目录。)如果您使用包管理系统安装。请检查由提供的/etc/mongodb.conf 文件你的包看dbpath的配置。"

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

我还需要删除/usr/local/ 中的内容吗?

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

再次感谢!

【问题讨论】:

  • 你能发布完整的错误日志吗?
  • 我刚刚在我的问题中附加了完整的错误日志。请让我知道是否有任何其他信息会有所帮助。谢谢!
  • MongoDB 没有内置的配置路径,因此如果您的服务定义使用 /usr/local/etc/mongod.conf,那将是要编辑的正确文件(在 etc 中创建新文件将没有帮助)。您可以检查 MongoDB 服务器在 mongo shell 中启动的选项:db.adminCommand('getCmdLineOpts')
  • 你可以通过mongod --dpath /whatever/data/path指定它的目录来启动守护进程
  • 这是否与网络技术有关? :D

标签: mongodb unix


【解决方案1】:

只在 Mac 上试过这个:

  • 在应用的根文件夹中创建数据目录
  • cd 到您安装 mongo 目录时放置的任何位置
  • 运行这个命令:

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

你应该很高兴!

【讨论】:

  • 如果您使用版本控制 (Github/Bitbucket) 进行编码,则不应在您的存储库中设置此路径。
【解决方案2】:

你可以在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

【讨论】:

  • 我对@9​​87654324@ 命令有疑问,假设我用mongod --dbpath abcmongod --dbpath xyz 创建了两个数据库路径,当我检查/usr/local/etc/mongod.conf 文件时,它仍然显示storage: dbPath: /usr/local/var/mongodb 我是如何可以告诉mongo 命令从abcxyz 目录加载数据库吗?我应该手动更改mongod.conf 文件吗?
【解决方案3】:

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

所以基本上从你的日志看,服务器没有运行,它正在关闭,所以 shell 没有什么可以连接的。似乎您有一些不正常的关机/重启导致了不一致。

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

还有:

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

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

【讨论】:

    【解决方案4】:

    对我来说它必须有:

    mongod --dbpath=/whatever/data/path
    

    【讨论】:

    • --dbpath 不是--dpath ?
    • 是的,应该是dbpath。在带有 Brew 的 MacOS 上使用 = 符号对我有用。
    • mongod --dbpath=/whatever/data/path
    【解决方案5】:

    在home中创建一个目录db,在db里面另一个目录data

    cd 
    mkdir db
    cd db
    mkdir data
    

    然后输入这个命令——

    mongod --dbpath ~/db/data
    

    【讨论】:

      【解决方案6】:
      mongod  --port portnumber --dbpath /path_to_your_folder
      

      默认端口号为27017,路径为/var/lib/mongodb

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

      【讨论】:

      • 是否需要在每次运行 mongod 时设置 dbpath 还是只在开始时设置一次,之后只运行 mongod 而不指定 dbpath ?
      【解决方案7】:

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

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

      --smallfiles 标记用于以防您遇到尺寸错误。当然,它是可选的。这样做应该可以解决您的问题,同时还可以自动化您的 mongodb 设置。

      【讨论】:

        【解决方案8】:
        sudo mongod --dbpath ~/data
        

        这使它对我有用。

        【讨论】:

          【解决方案9】:

          很简单:

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

          【讨论】:

          • 如果你给出一点解释可能会有所帮助,因为这已被标记为低资格。
          • 在第一次出现问题时,我删除了 mongod. lock sudo rm /var/lib/mongodb/mongod.lock 之后我用 sudo mongod --dbpath=/var/lib/mongodb 启动它,但我每次都必须运行它,但我观察到 蒙神。重新创建了锁,所有者是root而不是mongodb
          【解决方案10】:

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

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

          解决:

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

            D:>md myCustomDatabases
            
          2. 使用 自定义文件夹(名称:myCustomDatabases)的路径运行“mongod --dbpath”:

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

            D:>mongo
            

            3.1。显示所有数据库,存储在 custom 文件夹(名称:myCustomDatabases):

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

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

            > use newDb
            switched to db newDb
            

            3.3。显示所有数据库,存储在 custom 文件夹(名称:myCustomDatabases):

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

            !!! 注意到newDb 不在列表中!!!

            3.4。必须用文档创建一个集合, 这将创建数据库 newDb

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

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

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

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

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

          【讨论】:

            【解决方案11】:

            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 进程已停止。
            • 我让它运行了。一切都按预期开始。

            【讨论】:

              【解决方案12】:

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

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

              【讨论】:

                【解决方案13】:

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

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

                在终端窗口中导航回到“mongodb”目录,将下面这行mongod --dbpath=data --bind_ip 127.0.0.1放入

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

                【讨论】:

                  【解决方案14】:

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

                  1. 关闭 MongoDB(当 mongo 运行时,在终端中输入:use admin 按回车键并在下一行输入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。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2011-10-09
                    • 1970-01-01
                    • 1970-01-01
                    • 2021-07-19
                    • 2014-07-01
                    • 1970-01-01
                    • 2015-12-16
                    • 1970-01-01
                    相关资源
                    最近更新 更多