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 sont apparemment dans /var/lib/mongodb/
) et configurer MongoDB pour que tout s'exécute du nouveau disque sans affecter mon installation existante?
mongodb
filepath
data-files
Mark Gill
la source
la source
sudo chmod o+rx /media
par exemple, si votre point de montage estmedia
. Le r + x doit être disponible pour les «autres» groupes et utilisateurs à partir du premier point de montage.Réponses:
La réponse courte est que le
--dbpath
paramètre de MongoDB vous permettra de contrôler le répertoire dans lequel MongoDB lit et écrit ses données.Lancerait mongodb et mettre les fichiers
/usr/local/mongodb-data
.En fonction de votre distribution et de l'installation de MongoDB, vous pouvez également configurer le
mongod.conf
fichier pour le faire automatiquement:# Store data in /usr/local/var/mongodb instead of the default /data/db dbpath = /usr/local/var/mongodb
Les paquets Linux officiels de 10gen ( Ubuntu / Debian ou CentOS / Fedora ) sont livrés avec un fichier de configuration de base qui est placé dans
/etc/mongodb.conf
, et le service MongoDB le lit au démarrage. Vous pouvez faire votre changement ici.la source
/etc/mongodb.conf
à jour par cette solution. Puis, après avoir commencémongod
, j'ai vu que/data/db
c'était utilisé. Pourquoi la mise à jour de mongodb.conf n'a-t-elle pas affecté l'emplacement de stockage de la base de données par mongod? (Notez que l'utilisation de l'--dbpath
argument a fonctionné./etc/mongodb.conf
mise à jour qui fonctionne bien pour moi.chown
'd à l'utilisateur mongod pour les scripts de démarrage du service.Résolu en 2 minutes d'arrêt :) 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
la source
chmod -R o+x /<home>
. voir: stackoverflow.com/a/38193187/205049Permission denied: "/var/lib/mongodb"
Voici à quoi ressemble /home/../mongodb/mongodb/:drwxrwxr-x 3 mongodb mongodb 4096 oct 13 09:32 ../ drwxr-xr-x 2 mongodb nogroup 4096 oct 13 09:29 journal/ -rw------x 1 mongodb nogroup 67108864 sep 23 14:44 local.0* -rw------x 1 mongodb nogroup 16777216 sep 23 14:44 local.ns* -rwxr-xr-x 1 mongodb mongodb 0 oct 13 09:29 mongod.lock*
mv
commande, si vous exécutez la commande mv à partir de lib, vous n'avez plus mongodb toln
toLa commande suivante fonctionnera pour vous, si vous souhaitez modifier le chemin par défaut. Tapez simplement ceci dans le répertoire bin de mongodb.
Si vous souhaitez également déplacer des données existantes, copiez simplement tous les dossiers du répertoire data \ db existant dans un nouveau répertoire avant d'exécuter la commande.
Et arrêtez également les services mongodb existants en cours d'exécution.
la source
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 mongod.cfg avec le bloc-notes et ajoutez une ligne avec ce qui suit (notre dbpath personnalisé):
Dans ce fichier, vous devez également spécifier le chemin d'accès au journal. Mon fichier mongod.cfg est:
Si vous utilisez mongoDB comme 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 accédez à l'itinéraire suivant:
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 chemin d'accès.
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 cela aide,
la source
Copiez le contenu de
/var/lib/mongodb
vers/data/db
. Les fichiers que vous devriez rechercher doivent avoir des noms commeyour_db_name.ns
etyour_dbname.n
oùn
est un nombre commençant par 0. Si vous ne voyez pas de tels fichiers sous/var/lib/mongodb
, recherchez-les sur votre système de fichiers.Une fois copié, utilisez
--dbpath=/data/db
lors du démarrage de MongoDB via lamongod
commande.la source
Voici ce que j'ai fait, j'espère que cela sera utile à quiconque:
Pas:
/etc/rc.d/rc.mongod stop
, si vous utilisez autre chose, comme systemd, vous devriez vérifier votre documentation comment faire celamkdir /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
de vous connecter à votre base de données pour voir si tout va bien)Il n'est pas nécessaire de dire que vous devez être prudent 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 mongod est en cours d'exécution, car il peut y avoir des services qui en écrivent / lisent et modifient le contenu de votre base de données.
la source
chown mongodb:mongodb -R /mnt/database/mongodb
S'il est installé via
apt-get
Ubuntu 12.04, n'oubliez pas de le fairechown -R mongodb:nogroup /path/to/new/directory
. Modifiez également la configuration dans/etc/mongodb.conf
.Pour rappel, le
mongodb-10gen
package est maintenant lancé via upstart, donc le script de configuration est en/etc/init/mongodb.conf
Je viens de passer par là, j'espère que les googleurs le trouveront utile :)
la source
Pour moi, l'utilisateur était
mongod
au lieu demongodb
sudo chown mongod:mongod /newlocation
Vous pouvez voir les journaux d'erreurs si le service échoue:
/var/log/mongodb/mongod.log
la source
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 hack, mais les ajouter 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"}
la source
J'ai trouvé un cas particulier qui fait apparaître l'échec des liens symboliques:
J'ai fait une installation d'entreprise standard de mongodb mais j'ai changé le / var / lib / mongodb en lien symbolique car je voulais utiliser un système de fichiers XFS pour mon dossier de base de données et un troisième système de fichiers pour le dossier de journal.
$ sudo systemctl start mongod (échoue avec un message aucune permission d'écrire dans mongodb.log) .. mais il a réussi si j'ai commencé avec le même fichier de configuration:
.. en tant que propriétaire des disques externes (ziggy), j'ai pu démarrer $ mongod --config /etc/mongodb.conf --fork
J'ai finalement découvert que .. les liens symboliques pointaient vers un système de fichiers différent et le mongodb (utilisateur) n'avait pas l'autorisation de parcourir le dossier auquel le lien symbolique faisait référence. Les liens symboliques et les dossiers auxquels les liens symboliques faisaient référence avaient des droits étendus sur l'utilisateur mongod, donc cela n'avait aucun sens?
/ var / log / mongodb a été changé (de l'installation std ent) en un lien symbolique ET j'avais vérifié avant:
$ ll / var / log / mongodb lrwxrwxrwx 1 mongodb mongodb 38 octobre 28 21:58 / var / log / mongodb -> / media / ziggy / XFS_DB / mongodb / log /
$ ll -d / media / ziggy / Ext4DataBase / mongodb / log drwxrwxrwx 2 mongodb mongodb 4096 1 novembre 12:05 / media / ashley / XFS_DB / mongodb / log /
.. Mais cela semblait n'avoir aucun sens .. bien sûr l'utilisateur mongodb avait un accès rwx au lien, au dossier et au fichier mongodb.log .. mais il ne pouvait pas le trouver via le lien symbolique car le dossier BASE du média ne pouvait pas être recherché par mongodb.
DONC .. J'AI ÉVENTUELLEMENT FAIT CELA: $ ll / media / ziggy /. . drwx ------ 5 ziggy ziggy 4096 28 octobre 21:49 XFS_DB /
et a trouvé les autorisations x manquantes incriminées.
$ chmod a + x / media / ziggy / XFS_DB a résolu le problème
Cela semble stupide avec le recul, mais aucune recherche n'a révélé quoi que ce soit d'utile.
la source