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?

deemel
la source
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

David Edwards
la source
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
Cyril Alfaro
la source
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.

Melardev
la source
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.

YashTheRedDevil
la source
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)

user485014
la source
son mongodb: mongodb je suppose .. !!
Lakshman Pilaka