Sicher(n) ist sicher: So erstellen Sie automatisierte Backups Ihrer WordPress-Datenbank

3. März 2021 | NAS, Sicherheit, WordPress

Das Kernstück Ihrer WordPress-Installation ist die Datenbank, in welcher alle Informationen und Einstellungen Ihrer Website abgelegt sind: Ihre Beiträge, Seiten, Information zu Bildern usw. Ohne diese Datenbank ist Ihre WordPress-Website nicht mehr als ein Haufen Dateien ohne verständlichen Inhalt. Diese Datenbank sollten Sie darum regelmässig sichern, was WordPress aber mit Hausmitteln gar nicht vorsieht. Wir zeigen Ihnen, wie Sie selber automatische Backups Ihrer WordPress-Datenbank anlegen.

Keine Angst: Ihre WordPress-Datenbank wird normalerweise mindestens alle 24 Stunden vom Provider gesichert. Jedoch: Wenn Sie Ihre Website zerschiessen, sind Sie meist auf dessen Backup angewiesen und der Provider lässt sich die Wiederherstellung bezahlen.

Da wäre es natürlich gut, selber ein Backup zur Hand zu haben. Einerseits gibt es dafür im WordPress-Plugin-Katalog zahlreiche einschlägige Plugins. Die meisten davon kosten Geld – mindestens wenn man mehr Leistung benötigt, was bei einer wachsenden Website irgendwann der Fall sein wird. Für kleinere Projekte habe ich mit BackWPup gute Erfahrungen gemacht – es geht aber auch ganz ohne Plugin. Im Idealfall setzen Sie die Lösung mithilfe eines NAS auf, das die Backups auch dann abholt, wenn Sie schlafen.

Backupjob auf Webserver aufsetzen

Ihr Webserver bietet (mit grösster Wahrscheinlichkeit) die Möglichkeit, Ihre Datenbanken zu «dumpen». Das heisst: Der Server sichert die MySQL-Datenbank und schreibt sie als SQL-Datei in ein Sicherungsverzeichnis. Dieses Backup können Sie über einen Cronjob auslösen – auch diese Funktion wird Ihnen der Webserver ziemlich sicher anbieten. Wie Sie einen Cronjob einrichten, kann ich Ihnen nicht genau sagen – die meisten Provider bieten aber die Option im Administrationspanel an; sonst hilft allenfalls das Helpdesk Ihres Hosters weiter.

Ein solcher Cronjob sichert auch die Datenbank dieser Website regelmässig. Schauen wir uns den Cronjob mal an.

55 1,5,9,13,17,21 * * * mysqldump -uDATENBANKUSER -pUSERPASSWORT -hHOST --databases DATENBANKNAME > /home/WEBVERZEICHNIS/_sql-backup/db_domainiac.sql

Das sieht auf den ersten Blick fürchterlich aus – darum hier ein paar Erklärungen, was wo steht:

  • 55 Diese erste Zahl beschreibt die Minute, wann der Cronjob ausgeführt wird. Ein Wert von 0 bis 59 ist möglich – oder * bei Durchführung zu jeder Minute.
  • 1,5,9,13,17,21 Dies ist die Stunde, in welcher der Cronjob (in Kombination mit der Minute) ausgeführt wird. In meinem Fall also alle vier Stunden zwischen 01:55 und 21:55. Die einzelnen Werte werden mit einem Komma aber ohne Leeschlag getrennt. Ein Wert von 0 bis 23 ist möglich – oder * bei Durchführung zu jeder Stunde.
  • * Der erste Stern beschreibt die Tage. Ich will, dass die Backups an allen Tagen des Monats durchgeführt werden, darum ein *. Ein Wert von 1 bis 31 ist möglich – oder * bei Durchführung an jedem Tag des Monats.
    Vorsicht hier übrigens mit den Werten 29-31. Die kommen in unserem Kalender ja nicht jeden Monat vor.
  • * Es folgt der zweite Stern, der die Monate beschreibt. Meine Backups sollen in allen Monaten gesichert werden. Darum steht hier ein *. Es ist ein Wert von 1-12 möglich – oder * bei Durchführung in allen Monaten.
  • * Der letzte Stern beschreibt den Wochentag. Da das Backup an jedem Tag der Woche durchgeführt werden soll, steht hier ein *. Es ist ein Wert von 0-7 möglich – oder * bei Durchführung an allen Wochentagen.
    Hinweis: Der Wert 0 und der Wert 7 hat dieselbe Bedeutung: er entspricht dem Sonntag. Damit fühlen sich sowohl Europäer wie US-Amerikaner heimisch.

Die obigen Werte können Sie nach Belieben ersetzen; übertreiben Sie es aber nicht: ein Backup jede Minute wäre wohl etwas gar häufig.

Nun folgt der eigentliche Befehl an den Server und individuelle Angaben. ersetzen Sie die rot markierten Werte mit Ihren eigenen und lassen Sie die Werte in schwarz stehen;

  • mysqldump Das ist der Befehl, was der Server tun soll. Er soll die My-SQL-Datenbank sichern
  • -uDATENBANKUSER Im Anschluss muss der Datenbankuser genannt werden.
    Falls sie den Datenbank-User nicht zur Hand haben: Er ist auch in der wp-config.php im WordPressverzeichnis Ihrer Website notiert.
  • -pUSERPASSWORT Nun müssen Sie das Userpasswort Ihres Datenbankusers eingeben.
    Auch das Passwort ist in der wp-config.php im WordPressverzeichnis Ihrer Website notiert.
  • -hHOST Das ist der Host der Datenbank.
    Auch diese Angabe finden Sie in der wp-config.php im WordPressverzeichnis Ihrer Website. In vielen Fällen wird es localhost sein.
  • –databases Das ist wieder ein Befehl an den Server: Gesichert werden sollen ja die Datenbanken.
  • DATENBANKNAME > Hier müssen Sie den Namen der WordPress-Datenbank eintragen. Am Ende muss ein > stehen.
    Auch diese Angabe ist in der wp-config.php zu finden.
  • /WEBVERZEICHNIS/_sql-backup/db_DOMAINNAME.sql Am Schluss folgt noch der Ort und die Bezeichnung der Sicherungsdatei. Beim Sicherungsort müssen Sie den Pfad aus dem Root-Verzeichnis eingeben, der vielfach mit /home/ beginnt. Meine Sicherung geht in mein Webverzeichnis /home/_sql-backup/, gefolgt vom Dateinamen, den ich gerne möchte – ich verwende der Übersicht halber gerne den Domainnamen – vermeiden Sie aber alle Umlaute und Sonderzeichen.

Ok; Das war viel. Den angepassten String können Sie nun im Cronjob-Panel im Administrationsbereich Ihres Webservers eintragen. Es ginge auch bei einem externen Cronjob-Dienst (z.B. cron-job.org); darauf sollten Sie aber verzichten, weil Sie mit den Usernamen und dem Passwort im String doch heikle Informationen preisgeben. Die sind beim Provider Ihres Vertrauens (der auch anders auf diese Daten zugreifen könnte) besser aufgehoben.

Wenn Sie den Cronjob angepasst und eingetragen haben, ist er sofort aktiv und springt beim erstmöglichen Termin an. Danach sollten Sie im Zielverzeichnis, welches Sie definiert haben, das erste Backup finden.

So wie der Backup-Auftrag hier aufgeführt ist, wird das Sicherungsfile jedes mal, wenn der Cronjob-Auftrag ausgeführt wird überschrieben. Das führt uns zum nächsten Schritt.

Backup abholen und lokal speichern

Idealerweise geben Sie einem NAS – das auch nachts werkelt – den Sicherungsauftrag. Die allermeisten NAS bieten diese Möglichkeit in einem Aufgabenplaner oder Taskplaner, welcher Linux-Befehle versteht. In meinem Fall läuft auf der Synology-Diskstation folgendes Script:

#!/bin/sh
wget -m ftp://USERNAME:PASSWORT@IPDESWEBSERVERS/_sql-backup/* -P /volume1/backup/_webserver/_sql-backup
tar -zcvf /volume1/backup/_webserver/sql_Backup-$(date +%Y-%m-%d-%H-%M-%S).tar.gz /volume1/backup/_webserver/_sql-backup/
sleep 1m
find /volume1/backup/_webserver/ -name "sql_Backup-*.gz" -ctime +30 -exec rm {} ;

Dieses Script wird von 2.00 Uhr morgens bis 22.00 Uhr abends alle vier Stunden gestartet – also immer einige Minuten nachdem der Webserver ein Backup der Datenbank erstellt hat und mit dem Prozess durch sein müsste.

Das Script erfüllt folgende Funktionen:

  • In Zeile 1 wird definiert, dass es sich um ein Shell-Script (sh) handelt
  • In Zeile 2 wird der Befehl wget ausgelöst. Dieser holt das Datenbank-Backup und kopiert es per FTP auf mein NAS.
  • In Zeile 3 wird das NAS angewiesen, das Backup zu komprimieren und mit einem Datum/Zeitstempel im Dateinamen eindeutig zu benennen.
  • Dann macht das Script mal 1 Minute lang Pause
  • Auf Zeile 5 wird das Sicherungsverzeichnis nach Backups abgesucht, welche einen Monat oder älter sind. Ganz am Schluss der Zeile steht noch der Befehl, diese alten Dateien zu löschen.

In meinem Fall habe ich so sechs tägliche Sicherungen während 30 Tagen – also 180 Dateien. Diese belegen je Sicherungsdurchgang etwa 1 MB Platz, was kaum der Rede wert ist.

Schauen wir uns noch kurz die Sicherungsbefehle (Zeile 2) an und gucken, welche Werte Sie anpassen müssen:

wget -m ftp://USERNAME:PASSWORT@IPDESWEBSERVERS/_sql-backup/* -P /volume1/backup/_webserver/_sql-backup
  • USERNAME gefolgt von : – Hier geben Sie den Usernamen des FTP-Accounts Ihrer Website an.
  • PASSWORT gefolgt von @ – Hier wird das Passwort zum soeben eingetragenen Usernamen eingesetzt.
  • IPDESWEBSERVERS – Dies ist die IP Ihres Hostings. Diese sollten Sie im Administrationspanel Ihres Providers einsehen können-
  • …/_sql-backup/… gefolgt von * – Diese Angabe ist abhängig davon, in welcheS VerzeichnisSE Sie das Datenbankbackup auf Ihrem Webserver sichern.
  • /volume1/backup/_webserver/_sql-backup – Dies ist das Sicherungsziel auf Ihrem NAS

Das ist es. Probieren Sie es aus; wenn alles korrekt ist, sollten Sie Ihr eigenes Backup alsbald automatisiert haben.

Werbung

Werbung

 

Kostenlose WordPress- und Divi-Tricks im Abo

Wir schicken Ihnen sporadisch (weniger als 10x jährlich) neue Tricks für Wordpress und das Divi-Theme, aber auch hilfreiche CSS- und HTML-Codes frei Haus.

Füllen Sie zur Anmeldung das folgende Formular aus. Angaben mit * sind Pflichtangaben.









Vielen Dank.

Pin It on Pinterest

Share This