MongoDB: Datenbanken an zwei Speicherorten

mausweazle

Lt. Commander
Registriert
Mai 2008
Beiträge
1.633
Hallihallo liebe Community,

ich hoffe hier kann mir jemand helfen! Ich nutze mongoDB unter Ubuntu 12.04 und habe aufgrund eines Dual-Boot-Systems nur noch 1 GB Platz auf der Linux-Partition. Eine Mongo-Datenbank liegt schon auf der Platte und eine zweite soll wegen Platzmangel auf nen USB-Stick.

Ich hab im Internet auch schon ein bisschen rumgesucht, aber noch keine Lösung gefunden. Wenn ich in der /etc/mongodb.conf Datei den Speicherort ändere ( dbpath=/pfadXYZ ) und mongoDB anschließend neustarte, kommt die Fehlermeldung: "[...] Error: couldn't connect to server 127.0.0.1 [...]". Im Ordner /pfadXYZ liegt die Datenbank (aus /var/lib/mongodb) eins zu eins kopiert, aber sie wird dennoch nicht gefunden.


Danke im Voraus für Hilfe

Mausweazle
 
Versuchs doch stattdessen einfach mit einem symbolischen Link auf die gemountete (/etc/fstab falls du sie noch nicht standardmäßig gemounted hast) Windows-Partition. Keine Ahnung, ob NTFS dazwischenfunkt. Jedenfalls brauchst du dann nichts an der Config schrauben.
 
Das heißt also: Altes Verzeichnis der Datenbank löschen (/var/lib/mongodb) und dann nen symbolischen Link auf den USB-Stick setzt mit Shortcut /var/lib/mongodb?

Ich hoff, ich hab das richtig verstanden.
 
So hab ich mir das vorgestellt. Quasi
Code:
ln -s /mnt/deinUsbStick/mongoVerzeichnis /var/lib/mongodb
USB-Sticks packt Ubuntu aber normalerweise automatisch in /media/ statt /mnt/ aber das sollte nicht stören. Dann eben /media/deinUsbStick...

P.S.: Kann sein, dass du dann noch die Rechte auf dem USB-Stick-Ordner setzen musst. chown/chmod sind da deine Freunde.
 
Zuletzt bearbeitet:
Super, danke. Ich werde das mal testen.
Ergänzung ()

Es hat leider nicht funktioniert. Ich weiß aber auch leider nicht wie man chown richtig anwendet.
Selbst die Beispiele mit Internet helfen mir da nicht weiter. Welchen Eigentümer muss ich denn dem neuen Ordner zuweisen? wahrscheinlich "mongodb"? Wie bekomme ich raus, wer der ursprüngliche Eigentümer einer Datei war?

mit chmod -R 777 hab ich für den neuen ordner jedem Zugriff gegeben, aber es kommt die gleiche Fehlermeldung wie ausm 1. Post.
 
Da fällt mir auf anhieb leider auch nichts ein. chmod -R 777 sollte reichen, da sollte es kein chown mehr brauchen. Was ich nun machen würde wäre zu versuchen das Log-Level der MongoDB auf debug zu stellen bzw. einen Parameter zu finden, der mehr debug output bringt.

Edit: was mir gerade noch einfiel - auch der symbolische Link hat eigene Rechte. Vielleicht ist der bei dir noch nicht auf 777.
 
Zuletzt bearbeitet:
Ich glaube, ich weiß woran es liegt.

Den symbolischen Link konnte ich auf chmod -R 777 ändern. Den Eigentümer aber leider nicht. Bei den Daten auf dem NTFS-Usb-Stick konnte ich weder chmod noch chown anwenden. Liegt wahrscheinlich an der NTFS Formatierung. Ich versuche grade eine Partition auf dem Stick mit nem Linux-Dateiformat zu erstellen (ext3/ext2). Ich hoffe das hilft.


Danke für deine Mühen und Hilfe!!
 
So, da ich mich selbst geärgert habe, keine passende und einfache Anleitung für das obige Problem zu haben, schreib ich hier mal, wie ich es jetzt endgültig gelöst habe, falls andere das gleiche Problem haben:

  1. Den symbolischen Link braucht man nicht, kann man aber nutzen
  2. USB-Stick muss im Linux-Dateiformat sein (meiner ist ext4 formatiert)
  3. Der Ordner für die zukünftige DB auf dem USB-Stick muss mongodb als Eigentümer haben (mit: sudo chown -h mongodb:mongodb /media/USB-Stick/Ordner). Am Ende des chown-Befehls keinen weiteren "/" setzen, sonst übernimmt Linux das nicht
  4. Ich habe dem Ordner auch noch mit chmod -R 777 für jeden Zugriff gegeben. Ich weiß nicht wie sehr man das einschränken kann, dass es immernoch klappt
  5. mongod --dbpath /media/USB-Stick/Ordner/ (Ruft einen Mongo Deamon auf. Der muss solange laufen, wie man Daten zugreifen und verändern will auf der Mongodb)
  6. Nun kann man mit "mongo" auf die Datenbank auf dem USB-Stick zugreifen.

Falls man noch eine Datenbank im Ordner /var/lib/mongodb hat und den Mongo Deamon schließt, so greift man dann beim Aufruf von "mongo" wieder auf diesen Ordner zu und nicht auf den USB-Stick.


Ich hoffe, das hilft Leute wie mir, die nicht so viel Ahnung von MongoDB haben.
 
Die Rechte wirst du problemlos auf klassisches 755/644 einschränken können. Group und Other brauchen quasi nie Write-Rechte. Selbst Read (und X) sind recht unwahrscheinlich.
 
Man sollte niemals irgendetwas 777 geben. Habe noch nie einen Fall gehört, in dem das sinnvoll wäre.

Ein Verbindungsfehler klingt für mich auch eher danach, als liefe der Datenbankserver nicht. Da ändert
willkürliches Rumprobieren mit gefährlichen Berechtigungen natürlich gar nichts.
 
Ja ich gebe euch Recht bezüglich der Rechtevergabe, das kann ich nach Möglichkeit einschränken.

@asdfman:
Richtig der DB-Server lief nicht. Ich bekomme ihn aber nicht zum Laufen sofern, die Berechtigungen nicht stimmen, sonst kann mongodb nicht die Dateien lesen/schreiben. So gefährlich ist meine 777 Freigabe nicht. Da sind freiverfügbare Daten drauf (Teile der deutschen und englischen Wikipedia). Die würden niemandem irgendwas helfen und wegen Backup ist ein Löschen nicht besonders Tragisch.
 
IT Sicherheit geht jeden an. Machs richtig, oder machs gar nicht... wenn die Schluderei im Kleinen schon anfängt, dann geht sie meist im Großen so weiter. Als nächstes heißts dann "md5 reicht als PW-Hash"....
 
Zurück
Oben