PostgreSQL- und MySQL-Datenbanksicherung und -wiederherstellung
Backup ist eines der wichtigsten Verfahren, das die Datensicherheit gewährleistet. Selbst bei zuverlässigem Hosting können Anwendungsfehler, fehlerhafte Updates oder versehentliche Datenlöschungen auftreten.
In diesem Leitfaden zeigen wir, wie man Backups von PostgreSQL- und MySQL-Datenbanken mit den Standard-Kommandozeilenprogrammen pg_dump und mysqldump erstellt und wiederherstellt.
1. PostgreSQL-Backup
1.1. Was ist pg_dump
pg_dump ist ein Standard-PostgreSQL-Tool zur Erstellung eines logischen Datenbank-Backups. Es speichert sowohl die Struktur (DDL) als auch die Daten (DML) in einer Text-SQL-Datei, die später zur Wiederherstellung verwendet werden kann.
1.2. Befehlsyntax
pg_dump -U <user> -h <host> -p <port> -d <database> -F p -f <path_to_file.sql>
1.3. Backup-Beispiel
pg_dump -U myuser -h localhost -d mydatabase -F p -f /backups/mydatabase_$(date +%F).sql
Parametererklärung:
- -U myuser — PostgreSQL-Benutzername;
- -h localhost — Server-Host (IP kann angegeben werden);
- -d mydatabase — Datenbankname;
- -F p — Ausgabeformat (plain — reguläres SQL);
- -f — Pfad zur Datei, in der das Backup gespeichert wird;
- $(date +%F) — fügt das aktuelle Datum zum Dateinamen hinzu (z.B. 2025-11-03).
1.4. Komprimiertes Backup
Um die Dateigröße zu reduzieren, können Sie gzip-Komprimierung verwenden:
pg_dump -U myuser mydatabase | gzip > /backups/mydatabase_$(date +%F).sql.gz
2. Wiederherstellung der PostgreSQL-Datenbank
2.1. Verwendung von psql
Um eine Datenbank aus einem Text-Backup wiederherzustellen, verwenden Sie:
psql -U myuser -d mydatabase -f /backups/mydatabase_2025-11-03.sql
Wenn das Backup komprimiert ist:
gunzip -c /backups/mydatabase_2025-11-03.sql.gz | psql -U myuser -d mydatabase
2.2. Wenn die Datenbank nicht existiert
Erstellen Sie zuerst eine neue Datenbank:
createdb -U myuser newdatabase
psql -U myuser -d newdatabase -f /backups/mydatabase_2025-11-03.sql
3. MySQL-Backup
3.1. Was ist mysqldump
mysqldump ist ein Standard-Tool zur Erstellung von MySQL-Dumps. Es speichert die SQL-Befehle, die benötigt werden, um Tabellen neu zu erstellen und Daten einzufügen.
3.2. Befehlsyntax
mysqldump -u <user> -p -h <host> <database> > <path_to_file.sql>
3.3. Backup-Beispiel
mysqldump -u myuser -p mydatabase > /backups/mydatabase_$(date +%F).sql
Parametererklärung:
- -u myuser — MySQL-Benutzername;
- -p — fordert ein Passwort an;
- mydatabase — Datenbankname;
- > — leitet die Ausgabe in eine Datei um.
3.4. Komprimierter Dump
mysqldump -u myuser -p mydatabase | gzip > /backups/mydatabase_$(date +%F).sql.gz
4. Wiederherstellung der MySQL-Datenbank
4.1. Wiederherstellung aus SQL-Datei
mysql -u myuser -p mydatabase < /backups/mydatabase_2025-11-03.sql
4.2. Wenn die Datenbank nicht existiert
Erstellen Sie eine neue Datenbank vor der Wiederherstellung:
mysql -u myuser -p -e "CREATE DATABASE newdatabase;"
mysql -u myuser -p newdatabase < /backups/mydatabase_2025-11-03.sql
4.3. Wiederherstellung aus komprimiertem Dump
gunzip -c /backups/mydatabase_2025-11-03.sql.gz | mysql -u myuser -p mydatabase
5. Automatisierung und Sicherheitsempfehlungen
5.1. Automatisierte Backups mit Cron
Für regelmäßige Backup-Prozesse ohne manuelle Eingriffe richten Sie die Automatisierung mit cron ein.
Grundlegende Cron-Einrichtung:
# Cron-Editor öffnen crontab -e
Fügen Sie eine Zeile hinzu, zum Beispiel:
0 2 * * * /usr/local/bin/db_backup.sh
Dieser Befehl führt das Skript täglich um 2:00 Uhr aus.
Erweiterter Ansatz mit einem Skript. Erstellen Sie /usr/local/bin/db_backup.sh:
#!/bin/bash DATE=$(date +%F) BACKUP_DIR="/backup/$DATE" mkdir -p $BACKUP_DIR # PostgreSQL-Backup pg_dump -U myuser mydatabase | gzip > $BACKUP_DIR/postgres_mydatabase.sql.gz # MySQL-Backup mysqldump -u myuser -p mydatabase | gzip > $BACKUP_DIR/mysql_mydatabase.sql.gz # Backups löschen, die älter als 7 Tage sind find /backup/ -type f -mtime +7 -delete
Machen Sie das Skript ausführbar:
chmod +x /usr/local/bin/db_backup.sh
Und fügen Sie es zu cron hinzu:
0 2 * * * /usr/local/bin/db_backup.sh
5.2. Sicherheits- und Speicherempfehlungen
- Off-Server-Speicherung: Speichern Sie Backups in Cloud-Speichern (AWS S3, Google Cloud) oder auf externen Laufwerken.
- Zugriffskontrolle: Beschränken Sie den Zugriff auf den /backups-Ordner, da Dateien vertrauliche Daten enthalten können.
chmod 700 /backup
chmod 600 /backup/*.sql.gz
- Integritätsprüfung: Führen Sie monatlich Testwiederherstellungen durch, um die Funktionalität der Backups zu überprüfen.
- Vertraulichkeit: Backup-Dateien enthalten Datenbankinhalte — behandeln Sie sie als vertrauliche Informationen.
Fazit
Die Verwendung von pg_dump und mysqldump ist eine einfache, zuverlässige und universelle Methode, um PostgreSQL- und MySQL-Datenbanken zu sichern. Diese Tools eignen sich sowohl für manuelle Backups als auch für automatisierte Prozesse mit minimalem Aufwand.
Regelmäßige Backups sind der Schlüssel zur Stabilität und Datensicherheit Ihres Projekts.