Bis jetzt habe ich kein MongoDB-Datenverzeichnis angegeben und hatte nur eine 30-GB-Primärpartition.
Ich habe gerade keinen Speicherplatz mehr und eine neue Festplatte hinzugefügt. Wie kann ich meine Daten (die anscheinend in sind /var/lib/mongodb/
) übertragen und MongoDB so konfigurieren, dass alles von der neuen Festplatte abläuft, ohne meine vorhandene Installation zu beeinträchtigen?
mongodb
filepath
data-files
Mark Gill
quelle
quelle
sudo chmod o+rx /media
Zum Beispiel, wenn Ihr Einhängepunkt istmedia
. Das r + x muss ab dem ersten Einhängepunkt für die 'anderen' Gruppen und Benutzer verfügbar sein.Antworten:
Die kurze Antwort lautet, dass Sie mit dem
--dbpath
Parameter in MongoDB steuern können, aus welchem Verzeichnis MongoDB seine Daten liest und schreibt.Würde mongodb starten und die Dateien einfügen
/usr/local/mongodb-data
.Abhängig von Ihrer Distribution und MongoDB-Installation können Sie die
mongod.conf
Datei auch so konfigurieren , dass dies automatisch geschieht:Die offiziellen 10gen Linux-Pakete ( Ubuntu / Debian oder CentOS / Fedora ) werden mit einer grundlegenden Konfigurationsdatei geliefert, die abgelegt
/etc/mongodb.conf
wird. Der MongoDB-Dienst liest diese beim Start. Sie können hier Ihre Änderung vornehmen.quelle
/etc/mongodb.conf
gemäß dieser Lösung aktualisiert . Dann, nachdemmongod
ich angefangen hatte , sah ich, dass/data/db
das benutzt wurde. Warum hat das Aktualisieren von mongodb.conf keinen Einfluss darauf, wo mongod die Datenbank gespeichert hat? (Beachten Sie, dass die Verwendung des--dbpath
Arguments funktioniert./etc/mongodb.conf
und Aktualisierung, die für mich gut funktioniert.chown
dem Mongod-Benutzer für die Dienststart-Skripte übergeben werden.Es wurde in 2 Minuten Ausfallzeit behoben :)
Verschieben Sie einfach Ihren Ordner, fügen Sie einen Symlink hinzu und optimieren Sie die Berechtigungen.
quelle
chmod -R o+x /<home>
. siehe: stackoverflow.com/a/38193187/205049Permission denied: "/var/lib/mongodb"
So sieht /home/../mongodb/mongodb/ aus: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
Befehl ausführen . Wenn Sie den Befehl mv in lib ausführen, müssen Sie nicht mehr mongodbln
toDer folgende Befehl funktioniert für Sie, wenn Sie den Standardpfad ändern möchten. Geben Sie dies einfach in das bin-Verzeichnis von mongodb ein.
Wenn Sie auch vorhandene Daten verschieben möchten, kopieren Sie einfach alle Ordner aus dem vorhandenen Verzeichnis data \ db in ein neues Verzeichnis, bevor Sie den Befehl ausführen.
Und stoppen Sie auch vorhandene Mongodb-Dienste, die ausgeführt werden.
quelle
Erstellen Sie eine Datei mit dem Namen mongod.cfg im MongoDB-Ordner, falls Sie diese nicht haben. In meinem Fall: C: \ Users \ ivanbtrujillo \ MongoDB
Bearbeiten Sie dann mongod.cfg mit dem Editor und fügen Sie eine Zeile mit der folgenden Zeile hinzu (unser benutzerdefinierter Datenbankpfad):
In dieser Datei sollten Sie auch den Protokollpfad angeben. Meine mongod.cfg-Datei lautet:
Wenn Sie mongoDB als Windows-Dienst verwenden, müssen Sie diesen Schlüssel ändern und die Datei mongod.cfg angeben.
Führen Sie den folgenden Befehl aus, um mongodb als Windows-Dienst zu installieren:
Öffnen Sie regedit.exe und gehen Sie zur folgenden Route:
Der MongoDB-Dienst funktioniert nicht. Wir müssen den ImagePath-Schlüssel bearbeiten, seinen Inhalt löschen und Folgendes eingeben:
Wir geben Mongo die Konfigurationsdatei und den Protokollpfad an.
Wenn Sie dann den Mongodb-Dienst starten, funktioniert er.
Hier ist ein vollständiges Tutorial zum Installieren von mongoDB unter Windows: http://ivanbtrujillo.herokuapp.com/2014/07/24/installing-mongodb-as-a-service-windows/
Ich hoffe es hilft,
quelle
Kopieren Sie den Inhalt von
/var/lib/mongodb
nach/data/db
. Die Dateien, nach denen Sie suchen sollten, sollten Namen wieyour_db_name.ns
undyour_dbname.n
won
eine Zahl beginnt, die mit 0 beginnt. Wenn Sie solche Dateien nicht unter sehen/var/lib/mongodb
, suchen Sie sie in Ihrem Dateisystem.Nach dem Kopieren verwenden Sie diese
--dbpath=/data/db
Option , wenn Sie MongoDB über denmongod
Befehl starten .quelle
Ich habe Folgendes getan, hoffe, es ist für alle anderen hilfreich:
Schritte:
/etc/rc.d/rc.mongod stop
. Wenn Sie etwas anderes verwenden, wie systemd, sollten Sie Ihre Dokumentation überprüfen, wie das gehtmkdir /mnt/database
chown mongodb:mongodb -R /mnt/database/mongodb
) die Berechtigung zum Lesen / Schreiben aus diesem Verzeichnis hat - danke @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
, eine Verbindung zu Ihrer Datenbank herzustellen, um festzustellen , ob alles in Ordnung ist).Es ist nicht nötig zu sagen, dass Sie vorsichtig sein sollten, wenn Sie dies tun, insbesondere mit
rm -rf
aber ich denke, dies ist der beste Weg, dies zu tun.Sie sollten niemals versuchen, das Datenbankverzeichnis zu kopieren, während mongod ausgeführt wird, da möglicherweise Dienste darauf schreiben / lesen, die den Inhalt Ihrer Datenbank ändern.
quelle
chown mongodb:mongodb -R /mnt/database/mongodb
Bei Installation über
apt-get
Ubuntu 12.04 nicht vergessenchown -R mongodb:nogroup /path/to/new/directory
. Ändern Sie auch die Konfiguration unter/etc/mongodb.conf
.Zur Erinnerung, das
mongodb-10gen
Paket wird jetzt über Upstart gestartet, sodass sich das Konfigurationsskript befindet/etc/init/mongodb.conf
Ich habe das gerade durchgemacht, hoffe, Googler finden es nützlich :)
quelle
Für mich war der Benutzer
mongod
stattmongodb
sudo chown mongod:mongod /newlocation
Sie können die Protokolle auf Fehler anzeigen, wenn der Dienst fehlschlägt:
/var/log/mongodb/mongod.log
quelle
In debian / ubuntu müssen Sie das Skript /etc/init.d/mongodb bearbeiten. Eigentlich sollte diese Datei die Einstellungen aus /etc/mongodb.conf abrufen, aber sie scheint nicht das Standardverzeichnis abzurufen (wahrscheinlich ein Fehler).
Dies ist ein kleiner Hack, aber durch Hinzufügen dieser zum Skript wurde es korrekt gestartet:
hinzufügen:
Veränderung:
zu:
quelle