web-dev-qa-db-fra.com

Changer le répertoire du magasin de données MongoDB

Jusqu'à présent, je n'ai pas spécifié de répertoire de données MongoDB et je n'ai eu qu'une seule partition primaire de 30 Go.

Je viens de manquer d'espace et j'ai ajouté un nouveau disque dur. Comment puis-je transférer mes données (qui se trouvent apparemment dans /var/lib/mongodb/) et configurer MongoDB de sorte que tout s'exécute à partir du nouveau disque sans affecter mon installation existante?

165
Mark Gill

La réponse courte est que le paramètre --dbpath de MongoDB vous permettra de contrôler le répertoire dans lequel MongoDB lit et écrit ses données.

mongod --dbpath/usr/local/mongodb-data

Est-ce que démarrer mongodb et mettre les fichiers dans /usr/local/mongodb-data.

En fonction de votre distribution et de l'installation de MongoDB, vous pouvez également configurer le fichier mongod.conf pour qu'il le fasse automatiquement:

# Store data in /usr/local/var/mongodb instead of the default /data/db
dbpath = /usr/local/var/mongodb

Les packages Linux officiels 10gen ( buntu/Debian ou CentOS/Fedora ) sont livrés avec un fichier de configuration de base placé dans /etc/mongodb.conf, et le service MongoDB le lit. quand ça commence. Vous pouvez faire votre changement ici.

197

Résolu en 2 minutes de temps mort :)
Déplacez simplement votre dossier, ajoutez un lien symbolique, puis réglez les autorisations.

Sudo service mongod stop
Sudo mv mongodb /new/disk/mongodb/
Sudo ln -s /new/disk/mongodb/ /var/lib/mongodb
Sudo chown mongodb:mongodb /new/disk/mongodb/
Sudo service mongod start

# test if mongodb user can access new location:
Sudo -u mongodb -s cd /new/disk/mongodb/
# resolve other permissions issues if necessary
Sudo usermod -a -G <newdisk_grp> mongodb
93
DmitrySandalov

Créez un fichier appelé mongod.cfg dans le dossier MongoDB si vous ne l'avez pas. Dans mon cas: C:\Users\ivanbtrujillo\MongoDB

Ensuite, éditez le fichier mongod.cfg avec le bloc-notes et ajoutez une ligne avec les éléments suivants (notre chemin d'accès personnalisé):

dbpath=C:\Users\ivanbtrujillo\MongoDB\data\db

Dans ce fichier, vous devez également spécifier le logpath. Mon fichier mongod.cfg est:

logpath=C:\Users\ivanbtrujillo\MongoDB\log\mongo.log
dbpath=C:\Users\ivanbtrujillo\MongoDB\data\db

Si vous utilisez mongoDB en tant que service Windows, vous devez modifier cette clé et spécifier le fichier mongod.cfg.

Pour installer mongodb en tant que service Windows, exécutez cette commande:

**"C:\Users\ivanbtrujillo\MongoDB\bin\mongod.exe" --config "C:\Users\ivanbtrujillo\MongoDB\mongod.cfg" –install**

Ouvrez regedit.exe et suivez la route suivante:

HKEYLOCALMACHINE\SYSTEM\CurrentControlSet\services\MongoDB

Le service MongoDB ne fonctionne pas, nous devons éditer la clé ImagePath, supprimer son contenu et mettre ce qui suit:

**"C:\Users\ivanbtrujillo\MongoDB\bin\mongod.exe" --config "C:\Users\ivanbtrujillo\MongoDB\mongod.cfg" 
--logpath="C:\Users\ivanbtrujillo\MongoDB\log\mongo.log" –service**

Nous indiquons à Mongo son fichier de configuration et son logpath.

Ensuite, lorsque vous lancez le service mongodb, cela fonctionne.

Voici un tutoriel complet pour installer mongoDB sous Windows: http://ivanbtrujillo.herokuapp.com/2014/07/24/installing-mongodb-as-a-service-windows/

J'espère que ça aide,

26
ivanbtrujillo

La commande suivante fonctionnera pour vous si vous souhaitez modifier le chemin par défaut. Il suffit de taper ceci dans le répertoire bin de mongodb.

mongod --dbpath=yourdirectory\data\db

Si vous souhaitez également déplacer des données existantes, copiez simplement tous les dossiers du répertoire data\db existant vers un nouveau répertoire avant d'exécuter la commande.

Et aussi arrêter les services existants mongodb qui sont en cours d'exécution.

24
Yogesh Sanchihar

Copiez le contenu de /var/lib/mongodb dans /data/db. Les fichiers à rechercher doivent porter des noms tels que your_db_name.ns et your_dbname.nn est un numéro commençant par 0. Si vous ne voyez pas ces fichiers sous /var/lib/mongodb, recherchez pour eux sur votre système de fichiers.

Une fois copié, utilisez --dbpath=/data/db lors du démarrage de MongoDB via la commande mongod.

21
lobster1234

Voici ce que j'ai fait, espérons qu'il soit utile à quelqu'un d'autre:

Pas:

  1. Arrêtez vos services qui utilisent mongodb
  2. Stop mongod - Ma façon de procéder était avec mon fichier rc /etc/rc.d/rc.mongod stop, si vous utilisez autre chose, comme systemd, vous devriez vérifier votre documentation pour savoir comment le faire.
  3. Créer un nouveau répertoire sur le nouveau disque dur - mkdir /mnt/database
  4. Assurez-vous que mongodb a les privilèges pour lire/écrire à partir de ce répertoire (généralement chown mongodb:mongodb -R /mnt/database/mongodb) - merci @DanailGabenski.
  5. Copiez le dossier de données de votre mongodb dans le nouvel emplacement - cp -R /var/lib/mongodb/ /mnt/database/
  6. supprime l'ancien dossier de la base de données - rm -rf /var/lib/mongodb/
  7. Créer un lien symbolique vers le nouveau dossier de la base de données - ln -s /mnt/database/mongodb /var/lib/mongodb
  8. Démarrer le mongod - /etc/rc.d/rc.mongod start
  9. Consultez le journal de votre mongod et effectuez quelques vérifications de sécurité (essayez mongo pour vous connecter à votre base de données pour voir si tout va bien)
  10. Démarrer vos services que vous vous êtes arrêté au point 1

Inutile de dire que vous devez faire attention lorsque vous faites cela, en particulier avec rm -rf, mais je pense que c'est la meilleure façon de le faire.

Vous ne devriez jamais essayer de copier le répertoire de la base de données pendant que Mongodod est en cours d'exécution, car il est possible que des services écrivant/lisant à partir de celui-ci modifient le contenu de votre base de données.

18
drinchev

Si installé via apt-get dans Ubuntu 12.04, n'oubliez pas de chown -R mongodb:nogroup /path/to/new/directory. Modifiez également la configuration à /etc/mongodb.conf.

Pour rappel, le paquetage mongodb-10gen est maintenant démarré via upstart, le script de configuration est donc dans /etc/init/mongodb.conf

Je viens de traverser ça, j'espère que les googleurs le trouveront utile :)

10
Roberto

l'utilisateur est mongod au lieu de mongodb

Sudo Chown Mongod: Mongod/NewLocation

Vous pouvez voir les journaux des erreurs si le service échoue: -

/var/log/mongodb/mongod.log

1
I P

Dans debian/ubuntu, vous devrez éditer le script /etc/init.d/mongodb. Vraiment, ce fichier devrait extraire les paramètres de /etc/mongodb.conf mais il ne semble pas extraire le répertoire par défaut (probablement un bogue)

C'est un peu un bidouillage, mais l'ajout de ceux-ci au script l'a fait démarrer correctement:

ajouter:

DBDIR=/database/mongodb

changement:

DAEMON_OPTS=${DAEMON_OPTS:-"--unixSocketPrefix=$RUNDIR --config $CONF run"}

à:

DAEMON_OPTS=${DAEMON_OPTS:-"--unixSocketPrefix=$RUNDIR --dbpath $DBDIR --config $CONF run"}
0
FGiorlando