Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Was fehlt?

Es liegt in der Natur der Sache: Ein Wiki ist niemals fertig. Wir geben uns große Mühe, mit der Entwicklung Schritt zu halten; lassen Supportanfragen direkt in neue Artikel einfließen … aber auch wir sind nicht perfekt. Wenn du hier nicht fündig wirst: Nicht schmollen - Bescheid sagen! Unter hallo@uberspace.de steht dir unser Team gerne bereit. Hand drauf!

database:mongodb
Alle Anleitungen in diesem Wiki beziehen sich auf Uberspace 6. Die Dokumentation für U7 findest du im neuen Manual.

MongoDB

MongoDB ist eine Datenbank vom Schlag der aufstrebenden dokumentorientierten Datenbanken (oft auch als „NoSQL-Datenbanken“ bezeichnet).

Wir haben fertige Installationen von MongoDB vorbereitet, die allerdings nicht als zentraler Daemon laufen. Der Hauptgrund dafür ist, dass wir in diesem Fall deine MongoDB-Daten nicht zu deiner Quota zählen könnten :-) … aber so oder so hast du mit einer komplett eigenen MongoDB-Instanz auch viel mehr Möglichkeiten und kannst auch die Serverkonfiguration selbst beeinflussen.

Da Mongo sich an einen Netzwerkport bindet und natürlich nicht jeder den gleichen Port belegen kann, selektieren wir für dich beim Anlegen der Installation automatisch einen Port für dich und konfigurieren ihn vor. Außerdem richten wir dir direkt einen administrativen User ein und schalten MongoDB in den --auth-Modus, der eine Authentifizierung voraussetzt - standardmäßig arbeitet MongoDB nämlich ohne Authentifizierung, was im Rahmen von Shared Hosting wohl als fahrlässig zu betrachten sein dürfte.

Einrichtung

Eine eigene MongoDB-Instanz hast du blitzschnell eingerichtet. Voraussetzung ist zunächst ein eigenes ~/service-Verzeichnis, daher legt unser Skript dir direkt eines an, so noch noch nicht vorhanden. Die Handhabung dessen, ist an anderer Stelle dokumentiert.

Deine MongoDB ist mittels uberspace-setup-mongodb schnell eingerichtet, automatisch immer in der höchsten Version, die Du aktuell unter /package/host/localhost/ findest, wobei dir die Ausgabe am Ende deine persönliche Portnummer nennt sowie Benutzername und Passwort für den administrativen Zugang.

Letztere werden auch in die ~/mongodb/.my.mongodb.cnf gespeichert, die Dich aber nur vor Verlust der Daten schützt und nicht zum beziehen der Login-Informationen dient, wie du es vielleicht von MySQL gewohnt bist. Außerdem wird noch ein Befehl mit ausgegeben um die richtige Version in den PATH zu schreiben. Und so sieht das aus:

[annette@amnesia  ~]$ uberspace-setup-mongodb
You need to have a working ~/service directory, let me handle this for you.
Creating the /etc/run-svscan-annette/run script
Symlinking /etc/run-svscan-annette to /service/svscan-annette to start the service
Waiting for the service to start ... 1 2 3 4 5 started!

Congratulations - your personal ~/service directory is now ready to use!

Creating the ~/mongodb database directory
Creating the ~/etc/run-mongodb/run service run script
Creating the ~/etc/run-mongodb/log/run logging run script
Symlinking ~/etc/run-mongodb to ~/service/mongodb to start the service
Waiting for the service to start ...... started!
Waiting for journal preallocation to finish to create administrative user ...
Congratulations - You can now reach your dedicated MongoDB installation!
Please note that your MongoDB uses the NON-standard port number 30796.
This allows running multiple instances of MongoDB on the same machine for different users.

Hostname: localhost
Portnum#: 30796
Username: annette_mongoadmin
Password: Ais2naexee

To make the right MongoDB commands available on your current shell,
execute the following (you only need to do this once; further
logins do this automatically):

echo "export PATH=/package/host/localhost/mongodb-3.6/bin:\$PATH" >> ~/.bash_profile && source 
~/.bash_profile


To connect on the shell, you can use:

mongo admin --port 30796 -u annette_mongoadmin -p
[annette@amnesia   ~]$

Nun noch den PATH editieren und diesen für die aktuelle Shell-Session einlesen:

[annette@amnesia ~] echo "export PATH=/package/host/localhost/mongodb-3.6/bin:\$PATH" >> ~/.bash_profile && source ~/.bash_profile

Und Du kannst Dich verbinden:

[annette@amnesia ~] mongo admin --port 30796 -u annette_mongoadmin -p

Fertig! Deine MongoDB-Installation läuft jetzt als Service unter den daemontools - du kannst sie also mit den für solche Services üblichen Befehlen steuern, beispielsweise einen Neustart durchführen:

[annette@amnesia ~] svc -du ~/service/mongodb

Authentifizierung

Bei der Authentifizierung gibt es noch eine Besonderheit, wenn du von anderen Datenbanken wie z.B. MySQL gewohnt bist, dass du dich mit Username und Passwort authentifzierst und dann mit USE xyz; eine Datenbank auswählst. Wenn du dich als Admin-User mit deiner MongoDB verbinden möchtest, musst du dich allerdings explizit an der Datenbank admin anmelden, bevor du eine andere Datenbank wählen oder eine neue anlegen kannst, so wie im Abschnitt Logging in as an admin user der offiziellen Dokumentation beschrieben. Konkret sähe das so aus:

[annette@amnesia ~] mongo admin --port 21080 -u annette_mongoadmin -p

Port und Username musst du dabei entsprechend der Angaben anpassen, die uberspace-setup-mongodb ausgegeben hat.

Versionen und Updates

Es wird beim Installieren immer automatisch die neueste Version die unter /package/host/localhost/ liegt installiert, aktuell ist dies 3.6.3. Dein PATH und auch der Service zeigen auf einen Symlink der von 3.6 immer auf die höchste Version innerhalb von 3.6.x zeigt.

[annette@amnesia ~]# ls -ld  /package/host/localhost/mongo*
lrwxrwxrwx 1 root        root          37 Apr 16 11:23 /package/host/localhost/mongodb-3.4 -> 
/package/host/localhost/mongodb-3.4.4
drwxr-xr-x 3 packagesync packagesync 4096 Apr 19 15:21 /package/host/localhost/mongodb-3.4.4
lrwxrwxrwx 1 root        root          37 Apr 16 11:23 /package/host/localhost/mongodb-3.6 -> 
/package/host/localhost/mongodb-3.6.3
drwxr-xr-x 3 packagesync packagesync 4096 Apr 19 15:21 /package/host/localhost/mongodb-3.6.3
[annette@amnesia ~]#

So bekommst Du Updates auf zum Beispiel 3.6.5 automatisch mit sobald Deine MongoDB einmal neu startet, größere Updates auf etwa 3.7 gehen aber an Dir vorüber, damit das ganze möglichst stabil bei Dir läuft.

Möchtest Du ein Update auf eine solch höherer Version mitnehmen, sollte wir eine anbieten, ziehe Dir einen Dump:

[annette@amnesia ~] mongodump --host localhost --port 30796 -u annette_mongoadmin -p EiboiJaiL0

Entferne den daemon, benenne ~/mongodb um und führe einfach erneut uberspace-setup-mongodb aus. Anschließend kannst du deine Collections wieder importieren.

Import von Collections

Um eine Collection aus einer json-, csv- oder tsv-Textdatei zu importieren, liefert MongoDB das Tool mongoimport mit. Allerdings muss beim Import der zusätzliche Parameter --authenticationDatabase admin verwendet werden, damit wir uns wie im obigen Punkt Authentifizierung beschrieben zuvor an der admin-Datenbank authentifizieren:

[annette@amnesia ~] mongoimport --port 21080 -u annette_mongoadmin -p --authenticationDatabase admin -d datenbank -c collection --file importieren.json

Wie geht es weiter?

Wie es mit der Anwendung von MongoDB weitergeht, kannst du dem MongoDB-Tutorial entnehmen. Die vollständige Dokumentation findest du im MongoDB-Manual.

Um MongoDB für Anwendungen im Uberspace zu verwenden, musst du erst die entsprechende Bibliothek installieren. Das wird bei jeder Sprache anders gehandhabt. Allgemeine Informationen dazu findest du auf den jeweiligen Seiten in diesem Wiki unter Perl, Python, PHP und Ruby.

Viel Erfolg!

Entfernen / Resetten

Falls Du MongoDB entfernen möchtest oder nochmal von vorn anfangen möchtest, bedenke dass daemontools erfordern, dass Dienste auf eine ganz bestimmte Art und Weise entfernt werden.

Nachdem der Dienst gestoppt und entfernt wurde, überprüfe schnell mit ps ax | grep mongod, ob der MongoDB-Daemon wirklich nicht mehr läuft. Die Ausgabe sollte leer sein wie hier:

[annette@amnesia ~]$ ps ax | grep mongod
15184 pts/1 S+ 0:00 grep mongod
[annette@amnesia ~]$ 

Anschließend kannst du MongoDB selbst wie folgt löschen:

[annette@amnesia ~]$ rm -rf ~/mongodb

Solltest du nochmal eine frische MongoDB brauchen, kannst du nun wieder von vorne anfangen.

Backups

Derzeit stellen wir keine automatischen Backups für MongoDB-Datenbanken bereit, die über die Backups des Homeverzeichnis hinausgehen. Bisher hat das in den Supportfällen immer gereicht. Es gibt so aber keine Garantie dafür, dass diese Backups konsistent sind. Wir haben aber konkrete Pläne, unser Setup-Script entsprechend anzupassen, um bald auch mittels mongodump erstellte, konsistente Datenbank-Backups bereitzustellen.

database/mongodb.txt · Zuletzt geändert: 2018/04/19 16:14 von uber