PostgreSQL/MySQL-Sicherung in einem Cloud-Speicher
Einleitung
Die Sicherung von Datenbanken ist einer der wichtigsten Vorgänge, um die Sicherheit und Zuverlässigkeit von Websites und Anwendungen zu gewährleisten. Datenverluste können aus vielen Gründen auftreten: Serverausfall, Fehler des Administrators, Probleme bei Updates, Malware oder einfach menschliches Versagen. Regelmäßige Sicherungen ermöglichen es Ihnen, Ihr Projekt schnell und ohne Datenverlust wiederherzustellen.
In dieser Anleitung wird erläutert, wie Sie PostgreSQL- und MySQL-Datenbanken sichern, wie Sie Backups mithilfe von rsync oder scp auf einem entfernten Linux-Server speichern und wie Sie diese mit rclone in einen Cloud-Speicher hochladen.
PostgreSQL-Sicherung
PostgreSQL bietet das Standard-Dienstprogramm pg_dump, mit dem sich eine vollständige Kopie der Datenbank als SQL-Datei erstellen lässt.
Beispiel für die Erstellung eines Backups:
pg_dump -U myuser -h localhost mydatabase > /backup/mydatabase_$(date +%F).sql
Erläuterung der Parameter:
-U myuser— Benutzername der Datenbank-h localhost– Serveradresse (kann bei lokalem Zugriff weggelassen werden)mydatabase— Name der Datenbank/backup/...— Zielpfad$(date +%F)— fügt das aktuelle Datum zum Dateinamen hinzu
Um Speicherplatz zu sparen, komprimieren Sie das Backup sofort:
pg_dump -U myuser mydatabase | gzip > /backup/mydatabase_$(date +%F).sql.gz
So sichern Sie alle Datenbanken auf dem Server:
pg_dumpall -U myuser | gzip > /backup/postgres_all_$(date +%F).sql.gz
MySQL-Sicherung
Verwenden Sie für MySQL und MariaDB das Dienstprogramm „mysqldump “.
Beispiel für eine Sicherung einer einzelnen Datenbank:
mysqldump -u myuser -p mydatabase > /backup/mydatabase_$(date +%F).sql
Wenn Sie diesen Befehl ausführen, werden Sie vom System zur Eingabe des Benutzerkennworts aufgefordert.
So sichern Sie alle Datenbanken:
mysqldump -u myuser -p --all-databases | gzip > /backup/mysql_all_$(date +%F).sql.gz
Um gespeicherte Prozeduren und Trigger einzubeziehen, fügen Sie die Optionen --routines --triggers hinzu.
Sicherung in CloudBox
CloudBox von INTROSERV ist eine Cloud-Speicherlösung, die mehrere Verbindungsprotokolle unterstützt (darunter rsync, scp, rsync über SSH und WebDAV). Die einfache Bedienung von CloudBox vereinfacht das Hochladen, Verwalten und Abrufen von Daten erheblich.
Sie können CloudBox als Remote-Speicherort für Ihre Datenbank-Backups nutzen. Nachfolgend finden Sie Details zur Einrichtung sowie Skriptbeispiele.
Schritt 1. Zugriff auf CloudBox erhalten
Bestellen Sie eines der verfügbaren CloudBox-Pakete auf unserer Website – introserv.com
Nach der Bezahlung ist der Dienst innerhalb weniger Minuten verfügbar. Nach der Aktivierung des Dienstes erhalten Sie die Verbindungsdaten:
- Serveradresse (
box#####.introserv.cloud) - Benutzername (
box#####) und Passwort
Schritt 2. Verbindung und Synchronisierung mit rsync oder scp
Verwendung von rsync (empfohlen):
rsync -avz -e "ssh -p 22" /backup/ user@cloudbox-server:/path_to_cloudbackups/
Dabei gilt:
user— CloudBox-Benutzernamecloudbox-server— Verbindungsadresse/path_to_cloudbackups/— Pfad auf CloudBox
Für den automatisierten Betrieb empfiehlt es sich, SSH-Schlüssel einzurichten:
- Einen öffentlichen Schlüssel generieren:
ssh-keygen -t rsa - Kopieren Sie den Inhalt der erstellten Datei mit dem öffentlichen Schlüssel, z. B.
/root/.ssh/id_rsa.pub, in die Zwischenablage. - Gehen Sie zum Abschnitt „Profil“ (bewegen Sie den Mauszeiger über das Benutzersymbol oben rechts), fügen Sie den Schlüsselinhalt in das Feld „Öffentliche Schlüssel“ ein und speichern Sie die Einstellungen.


Danach funktioniert rsync ohne Passwortabfragen, was für Cron-Jobs praktisch ist.
Alternative – scp:
scp /backup/mysql_mydatabase.sql.gz user@cloudbox-server:/path_to_cloudbackups/
Schritt 3. Verbindung und Synchronisierung mit rclone
Wenn Sie rclone für die Interaktion mit CloudBox verwenden möchten, konfigurieren Sie es wie folgt:
- Installieren Sie rclone:
sudo apt install rclone - Konfiguration starten:
rclone config
Wählen Sie während der Einrichtung:
n— um einen neuen Remote-Namen- , z. B. „
cloudbox“ - Speichertyp — wählen Sie
„sftp“oder„ssh“ - Geben Sie die Serveradresse im Format
„box#####.introserv.cloud“, den Benutzernamen im Format„box#####“und den Port (in diesem Fall den SSH-Port – Standardwert 22) sowie den Verzeichnispfad - Führen Sie die Autorisierung durch (falls erforderlich)
Verbindung testen:
rclone ls cloudbox:/path_to_cloudbackups/
Sicherungsdaten kopieren:
rclone copy /backup/ cloudbox:/db-backups/ --progress
Synchronisieren Sie die Daten und löschen Sie dabei Dateien, die lokal nicht vorhanden sind:
rclone sync /backup/ cloudbox:/db-backups/ --progress
Bei Bedarf – Dateien vor der Übertragung verschlüsseln:
rclone copy /backup/ cloudbox:/db-backups/ --progress --crypt
Schritt 4. Beispiel für ein Automatisierungsskript mit CloudBox
Erstellen Sie das Skript /usr/local/bin/db_backup_cloudbox.sh, zum Beispiel:
#!/bin/bash DATE=$(date +%F) BACKUP_DIR="/backup/$DATE" mkdir -p $BACKUP_DIR # PostgreSQL pg_dump -U myuser mydatabase | gzip > $BACKUP_DIR/postgres_mydatabase.sql.gz # MySQL mysqldump -u myuser -p mydatabase | gzip > $BACKUP_DIR/mysql_mydatabase.sql.gz # Upload to CloudBox rsync -avz -e "ssh -p 22" $BACKUP_DIR/ user@cloudbox-server:/path_to_cloudbackups/$DATE/ # Upload to CloudBox (rclone option, uncomment if used) # rclone copy $BACKUP_DIR/ cloudbox:/db-backups/$DATE/ --progress # Remove backups older than 7 days find /backup/ -type f -mtime +7 -delete
Fügen Sie anschließend einen Cron-Job hinzu (im Beispiel wird das Skript täglich um 2:00 Uhr morgens ausgeführt):
0 2 * * * /usr/local/bin/db_backup_cloudbox.sh
Wichtige Hinweise:
- Stellen Sie sicher, dass die Verbindung zu CloudBox stabil ist und ausreichend Bandbreite zur Verfügung steht.
- Richten Sie eine Überwachung ein: Vergewissern Sie sich, dass die Dateien tatsächlich kopiert werden.
- Testen Sie regelmäßig die Wiederherstellung aus CloudBox-Backups.
- Bei der Verwendung vertraulicher Daten sollten Sie eine Verschlüsselung der Backups in Betracht ziehen.
Kopieren auf einen entfernten Linux-Server über SSH
Wenn Sie Backups nicht nur lokal, sondern auch auf einem anderen Server speichern möchten, verwenden Sie rsync oder scp.
Verwendung von rsync (empfohlen, da nur Änderungen kopiert werden):
rsync -avz -e "ssh -p 22" /backup/ [email protected]:/remote_backups/
Erläuterung der Parameter:
user– Benutzername auf dem Remote-Serverremote.server— IP-Adresse oder Domänenname des Remote-Servers/remote_backups/— Pfad zum Speichern der Backups
Um ohne Passworteingabe zu arbeiten, konfigurieren Sie SSH-Schlüssel:
# Generate SSH keys: ssh-keygen -t rsa # Copy key to remote server: ssh-copy-id [email protected]
Danach funktioniert rsync ohne Passwortabfragen, was für Cron-Jobs praktisch ist.
Alternative zu rsync – Verwendung von scp:
scp /backup/mysql_mydb.sql.gz [email protected]:/remote_backups/
Kopieren in einen Cloud-Speicher über rclone
Wenn Sie Backups in der Cloud (Google Drive, Dropbox, Amazon S3 usw.) speichern möchten, verwenden Sie rclone – ein universelles Tool zur Synchronisierung von Daten mit verschiedenen Cloud-Diensten.
Installation:
sudo apt install rclone
Konfiguration:
rclone config
Befolgen Sie die interaktiven Einrichtungsschritte:
- Wählen Sie
„n“, um eine neue Verbindung zu erstellen - Geben Sie einen Namen ein, z. B.
„remote“ - Wählen Sie den Speichertyp aus (z. B.
„s3“,„drive“,„dropbox“) - Geben Sie die Zugriffsschlüssel ein oder autorisieren Sie die Verbindung über den Browser
Überprüfen Sie die Verbindung:
rclone ls remote:path
Beispiel für das Hochladen von Backups in die Cloud:
rclone copy /backup/ remote:db-backups/ --progress
Synchronisierungsbefehl (entfernt Dateien, die lokal fehlen):
rclone sync /backup/ remote:db-backups/ --progress
Sie können Dateien vor dem Hochladen auch verschlüsseln:
rclone copy /backup/ remote:db-backups/ --progress --crypt
Sicherheit und Kontrolle
- Speichern Sie Backups an mindestens zwei Orten – lokal und remote.
- Überprüfen Sie regelmäßig, ob Backups erfolgreich erstellt und hochgeladen wurden.
- Führen Sie mindestens einmal im Monat Testwiederherstellungen durch.
- Verschlüsseln Sie Dateien mit sensiblen Daten, wenn Sie öffentliche Clouds nutzen:
gpg -c /backup/mysql_mydatabase.sql.gz - Stellen Sie die richtigen Dateiberechtigungen für
/backupsicher und schützen Sie Ihre Datenbank-Zugangsdaten.
Wiederherstellung aus dem Backup
PostgreSQL:
gunzip < backup.sql.gz | psql -U myuser -d mydatabase
MySQL:
gunzip < backup.sql.gz | mysql -u myuser -p mydatabase
Fazit
Das Sichern von PostgreSQL- und MySQL-Datenbanken ist ein einfacher, aber äußerst wichtiger Vorgang. Selbst die zuverlässigste Infrastruktur kann Sie nicht vor menschlichen Fehlern oder technischen Ausfällen schützen. Die beste Strategie sind regelmäßige automatisierte Backups, die auf mindestens einem externen Server und in der Cloud gespeichert werden, sowie regelmäßige Wiederherstellungstests.
Durch die Kombination von pg_dump, mysqldump, rsync, rclone und cron können Sie ein zuverlässiges, vollautomatisches Backup-System ohne kostenpflichtige Software von Drittanbietern aufbauen. Dieser Ansatz ist einfach umzusetzen und eignet sich für alle Linux-Systeme.