Comment changer l'emplacement que MongoDB utilise pour stocker ses données?


13

J'ai modifié le fichier de configuration MongoDB pour stocker ses données /home/user/data/mongod.

Mais les données sont toujours écrites dans l'ancien répertoire, soi-disant parce que les autorisations sur le nouveau dossier ne sont pas accordées - comment puis-je accorder à MongoDB les autorisations nécessaires pour ce répertoire?


1
Comment avez - vous modifier votre configuration? Pourquoi croyez-vous que c'est un problème avec les autorisations? Pourquoi pensez-vous que Mongo utilise le répertoire par défaut au lieu de lancer une erreur? (Ceci est une façon de demander: avez - vous vérifié les erreurs fichier journal?)
Andrea Corbellini

Réponses:


29

Pour modifier l'emplacement utilisé par MongoDB pour stocker ses données, vous devez:

  1. Modifier /etc/mongodb.confet modifiez la ligne dbpath=/var/lib/mongodbdu chemin que vous désirez, par exempledbpath=/home/user/data/mongodb
  2. Mettez à jour les autorisations du chemin choisi pour permettre à l' mongodbutilisateur d'y écrire, par exemplechown $USER -R /home/user/data/mongodb
  3. Redémarrez le service MongoDB en exécutant sudo service mongodb restart

Notez que si vous avez des données dans l'ancien emplacement que vous souhaitez conserver, vous devrez d'abord arrêter le service MongoDB, déplacer manuellement les fichiers, puis redémarrer le service.

Pour arrêter le serveur MongoDB, utilisez sudo service mongodb stop


quels fichiers dois-je déplacer?
chovy

@chovy Les fichiers du répertoire de stockage.
David Edwards

J'ai tout supprimé/var/lib/mongodb
chovy

@chovy Alors vous avez probablement supprimé toutes vos données, si vous en aviez, et vous n'avez aucun fichier que vous pouvez déplacer.
David Edwards

Oui c'est bien. je n'avais pas besoin de l'enregistrer. Je ne savais pas s'il y avait des fichiers non-données dont j'avais besoin. apparemment pas parce qu'il semble fonctionner encore
chovy

1

Vous devez redémarrer le démon pour que les modifications prennent effet.

sudo service mongodb restart

Je redémarre le démon, je vous donne aussi des moyens. L'ancienne méthode: "etc / init.d / mongodb restart", la nouvelle méthode: "sudo service mongodb restart"
Cyril ALFARO

1
Je recommande de modifier votre réponse pour inclure ces informations.
Eliah Kagan

1

Si vous démarrez mongodb à partir de la ligne de commande, vous pouvez utiliser l' --dbpathargument: mkdir mydata && mongod --dbpath mydata vous pouvez rencontrer un problème lié au "fichier existe" ou quelque chose, c'est une limitation bien connue de MongoDb, plus à ce sujet ici . Changez simplement le lecteur de disque et testez si maintenant vous n'avez plus ce problème.


1

J'ai rencontré le même problème aujourd'hui et j'ai résolu le problème en suivant les étapes suivantes.

  1. Modifiez le fichier mongod.conf et modifiez la valeur de la variable dbPath.

    sudo -H gedit /etc/mongod.conf
    
  2. Utilisez ensuite la commande suivante pour démarrer le service mongod

    sudo mongod --dbpath "your db path"
    

    J'ai essayé d'exécuter la commande ci-dessus sans sudoet j'ai eu une erreur. Utilisez donc sudopour exécuter la commande.


0

mv le / var / lib / mongodb (le répertoire dans lequel vous avez enregistré les données) dans le chemin / et chown mondodb: mongodb / path (le répertoire dans lequel vous souhaitez enregistrer les données)

éditez le /etc/mongod.conf

service mongod restart (s'il ne peut pas se connecter, vérifiez le chemin / s'il ne contient pas le mongod.lock, s'il existe, supprimez-le et redémarrez à nouveau)


son mongodb: mongodb je suppose .. !!
Lakshman Pilaka
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.