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?
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.
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
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,
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.
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.n
où n
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
.
Voici ce que j'ai fait, espérons qu'il soit utile à quelqu'un d'autre:
Pas:
/etc/rc.d/rc.mongod stop
, si vous utilisez autre chose, comme systemd, vous devriez vérifier votre documentation pour savoir comment le faire.mkdir /mnt/database
chown mongodb:mongodb -R /mnt/database/mongodb
) - merci @DanailGabenski.cp -R /var/lib/mongodb/ /mnt/database/
rm -rf /var/lib/mongodb/
ln -s /mnt/database/mongodb /var/lib/mongodb
/etc/rc.d/rc.mongod start
mongo
pour vous connecter à votre base de données pour voir si tout va bien)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.
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 :)
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
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"}