web-dev-qa-db-fra.com

comment configurer mongod --dbpath

très nouveau pour mongodb et les bases de données en général. chaque fois que je lance mongo je reçois ce message d'erreur:

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

en cours d'exécution mongod je vois ceci:

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

quand je mets manuellement mon mongo dpath sur mongod --dbpath /data/db (comme cela devrait être le réglage par défaut lors de l'installation) et le garde en marche dans le terminal, tout se passe bien. mais une fois que je le ferme, tout se brise à nouveau. Ma question est:

  1. pourquoi mon chemin d'accès est-il défini sur /usr/local/var/mongodb?
  2. comment puis-je corriger cette erreur si mongo fonctionne sur ma machine?

je suppose que je dois soit définir de manière permanente le chemin dbpath sur /data/db, soit reconfigurer quelque chose pour qu'il fonctionne avec le chemin dbpath en tant que /usr/local/var/mongodb

je suis assez nouveau dans les commandes unix, donc je ne sais pas trop comment résoudre cette erreur.

merci pour vos suggestions!

donc, en fouillant dans la documentation de mongodb, j'ai lu ceci:

"Sauf indication contraire, mongod recherchera les fichiers de données dans le répertoire par défaut /data/db. (Les systèmes Windows utilisent le répertoire\data\db.) Si vous avez installé à l'aide d'un système de gestion de paquets. Consultez le fichier /etc/mongodb.conf fourni par vos paquets pour voir la configuration de le dbpath. "

quand j'ai jeté un œil aux fichiers dans /etc/, il n'y a pas de fichier mongodb.conf ... cependant, je vois /usr/local/etc/mongod.conf... donc si je comprends cela correctement, je devrais créer un fichier appelé /etc/mongodb.conf et définir le chemin d'accès à binaire sur /data/db.

dois-je également supprimer les éléments contenus dans /usr/local/?

je pense que cela a quelque chose à voir avec la façon dont mon chemin est configuré ... quelqu'un pourrait-il m'expliquer comment résoudre ce problème sous unix afin que je n'aie pas ce problème?

merci encore!

17
vesperae

Tout d'abord, vous aurez un fichier de configuration dans /etc/mongodb.conf, donc cela ressemble à une installation homebrew qui utilisera des chemins plus standardisés. La chose entière /data/db/ est référencée dans beaucoup d’installations manuelles documentation .

Donc, fondamentalement, à partir de votre journal, le serveur ne fonctionne pas, il est en train de s’arrêter, il n’ya donc rien pour le Shell à se connecter. On dirait que vous avez eu des arrêts/redémarrages impurs qui ont conduit à l'incohérence.

Effacez les fichiers du journal /usr/local/var/mongodb/journal/ dans votre configuration.

Également:

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

Juste au cas où, même si cette partie a l'air propre. Et puis redémarrer. 

8
Neil Lunn

Je n'ai essayé ceci que sur Mac:

  • Créez un répertoire de données dans le dossier racine de votre application.
  • cd dans votre partout où vous avez placé votre répertoire mongo lorsque vous l'avez installé
  • lancez cette commande:

    mongod --dbpath ~/chemin/vers/votre/application/data

Vous devriez être bon pour y aller!

13
Sacha Nacar

Vous pouvez définir dbPath dans le fichier mongodb.conf:

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

Il s’agit d’un format de fichier de configuration basé sur YAML (depuis la version 2.6 de Mongodb), aussi ne faites pas attention aux tabulations, mais aux espaces après ":"

généralement ce fichier situé dans les systèmes * nix ici: /etc/mongodb.conf

Alors viens courir 

$ mongod -f /etc/mongodb.conf

Et le processus mongod va commencer ...

(sur Windows quelque chose comme)

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

Pour moi, il doit avoir:

mongod --dbpath=/whatever/data/path
6
Gareth Thomas
mongod  --port portnumber --dbpath /path_to_your_folder

Par défaut, le numéro de port est 27017 et le chemin est/var/lib/mongodb.

Vous pouvez définir votre propre numéro de port et votre chemin où vous souhaitez conserver toute votre base de données.

2
aaditya

Vous pouvez également configurer mongod pour qu'il s'exécute au démarrage de sorte qu'il s'exécute automatiquement au démarrage et que le dbpath soit défini à la configuration. Pour ce faire, essayez: 

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

La balise --smallfiles est présente au cas où vous rencontriez une erreur de taille. C'est bien sûr optionnel. Cela devrait résoudre votre problème tout en automatisant votre configuration de mongodb.

1
ABarb

très simple:

Sudo chown mongodb:mongodb /var/lib/mongodb/mongod.lock 
0
Mezlini