Backup von mongodb: dump und restore für in docker.

Mein System: MacOS High Sierra 10.13.5 (2018), die Anleitung sollte aber auch auf den meisten Linuxmaschinen funktionieren. Über Windows kann ich leider keine Aussage machen.

Für mich stellte sich jüngst die Frage wie man eine mongodb-Datenbank aus einem Container exportiert und anschließend in einen neuen Container importiert. Hier für alle, die das auch interessiert / benötigten eine kurze Anleitung wie ich das gemacht habe, Wie immer gibt es mehrere Möglichkeiten. Ich habe mich bemüht eine Lösung zu finden, die einigermaßen einfach ist.

dump / backup der MongoDB aus docker container

Ich gehe davon aus, dass euer docker Container, der mongo beinhaltet läuft. Kümmern wir uns als erstes um das, was ihr braucht. Das sind:

  • den Namen des virtuellen Netzwerks, indem euer Container läuft
  • einen lokalen Ordner für den dump, z.B. ~/backup

Namen des virtuellen Netzwerks eines docker Container finden

container_id finden

> docker container ls

In der ersten Spalte findest du zu deinem Container die docker_id

Namen des virtuelle Netzwerks finden

Wenn ihr:

> docker inspect <container_id>

eingebt, findet ihr direkt unter “Network”, den Namen des Netzwerks. Nenne wir ihn ab jetzt <network_name>.

Dump der MongoDB aus Container

Gebt folgendes ein:

> docker run --rm --network=<network_name> --mount type=bind,src=<Pfad zu eurem Backup Folder>/backup,dst=/backup mongo bash -c 'mongodump --out /backup --host mongo:27017'

(Optional): Geht auch ohne es zu verstehen. Wer es aber verstehen will hier eine Erklärung. docker run startet einen weiteren Container. Die Option –rm stellt sicher, dass sobald der Container seine Aufgabe erfüllt hat wieder gelöscht wird. Die Option –network=<network_name> hängt den neuen temporären Container in dasselbe Netzwerk, indem sich der mongo Container befindet, von dem der dump gewünscht ist.–mount type=bind,src=<Pfad zu eurem Backup Folder>/backup,dst=/backup stellt eine Verbindung eines Backup-Folders auf eurer Maschine mit einem Ordner innerhalb des docker Containers. mongo ist der Name des Images, dass ihr für den temporären Container verwendet.  Der anschließende Befehlt: bash -c ‘mongodump –out /backup –host mongo:27017’ führt in eure Container den Bashbefehl “mongodump –out /backup –host mongo:27017” aus, der letztlich vom im virtuellen Netzwerk befindlichen mongodb Server (Option: —host mongo:27017) dessen Datenbank in den Ordner /backup dumpt (Option: –out /backup). Da der Folder /backup im Docker Container mit dem Folder <Pfad zu eurem Backup Folder> mit eurer lokalen Maschine verbunden ist, findet ihr den dump nun dort.

(Optional) Packen des Dumps:

Für den Fall, dass ihr das dump bewegen wollt, bietet sich packen an. Das geht so:

> tar -cvzf ~mongo_dump.tar.gz <Pfad zu eurem Backup Folder>

Restore der MongoDB in Container

(Optional) Entpacken des Dumps:

Solltet ihr den dump gepackt haben, so müsst ihr diesen nun entpacken. Das geht so. Zunächst müsst ihr das Archiv in den Ordner kopieren, den ihr in einen Container mounten wollte.

> cp <Pfad zu mongo_dump.tar.gz> <Pfad zu eurem Backup Folder>

Anschließend wechselt ihr in diesen Ordner:

> cd /Users/<PROFILE-FOLDER>/backup

Und entpackt den Inhalt:

> tar -xvzf learning_locker_mongo_dump.tar.gz

Und löscht nun die Kopie des Archivs:

> rm mongo_dump.tar.gz

Import des dumps

Findet zuvor analog zur Anleitung oben den Name des virtuellen Netzwerks <network_name> heraus. Einen Backup Folder mit Pfad <Pfad zu eurem Backup Folder> sollte ihr auch haben, indem sich ein entpackter dump befindet.

Gebt nun:

> docker run --rm --network=< --mount type=bind,src=/Users/<PROFILE-FOLDER>/backup,dst=/backup mongo bash -c 'mongorestore /backup --host mongo:27017'

ein.

Viel Erfolg!

Probleme mit Bildern in WordPress

Solltet ihr einmal wie ich seit einigen Tagen Probleme mit Bildern – beim Hochladen oder fehlenden Vorschaubilder – in WordPress haben, dann schaut euch dazu diese beiden Quellen an.

und diesen Artikel

https://www.iocreed.com/wordpress-http-error-uploading-images/

Letztlich gibt es für das Problem leider sehr viele unterschiedliche mögliche Ursachen. Mich hat schon allein dar recherchieren nach Lösungen bestimmt einen halben Tag gekostet. Die besten Quellen waren diese zwei. Hoffentlich kommt ihr damit schneller zu einer Lösung als ich!

Ich habe vor nicht allzu langer Zeit meine Multisite umgezogen. Letztlich war bei mir die Lösung einmal die Ordner Rechte auf 744 und die Bildrechte auf 644 umzustellen. Verwendet habe ich dafür FileZilla. Als zweites musste ich für weitere Bilder unter Einstellungen -> Permalinks einmal auf “einfach” zurückstellen und dann wieder auf “Tag und Name”. Was dabei passiert, wird im oberen Video erklärt.

Viel Erfolg!