Datenbanksicherung: PostgreSQL, MySQL, rsync, rclone, CloudBox
Datenbanksicherungen sind eines der wichtigsten Verfahren, um die Sicherheit und Zuverlässigkeit von Websites und Anwendungen zu gewährleisten. Datenverlust kann aus vielen Gründen auftreten: Serverausfall, Administratorfehler, Aktualisierungsprobleme, Malware oder einfach menschliches Versagen. Regelmäßige Backups ermöglichen es Ihnen, Ihr Projekt schnell wiederherzustellen, ohne Datenverlust.
Diese Anleitung erklärt, wie man PostgreSQL- und MySQL-Datenbanken sichert, wie man Backups auf einem entfernten Linux-Server mit rsync oder scp speichert und wie man sie mit rclone in die Cloud hochlädt.
PostgreSQL-Backup
PostgreSQL bietet das Standard-Tool pg_dump, mit dem eine vollständige Datenbankkopie als SQL-Datei erstellt werden kann.
Beispiel für die Erstellung eines Backups:
pg_dump -U myuser -h localhost mydatabase > /backup/mydatabase_$(date +%F).sql
Erklärung der Parameter:
- -U myuser — Datenbankbenutzername;
- -h localhost — Serveradresse (kann weggelassen werden, wenn lokal);
- mydatabase — Datenbankname;
- /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
Um alle Datenbanken auf dem Server zu sichern:
pg_dumpall -U myuser | gzip > /backup/postgres_all_$(date +%F).sql.gz
MySQL-Backup
Für MySQL und MariaDB verwenden Sie das Dienstprogramm mysqldump.
Beispiel für ein einzelnes Datenbank-Backup:
mysqldump -u myuser -p mydatabase > /backup/mydatabase_$(date +%F).sql
Wenn Sie diesen Befehl ausführen, wird das System nach dem Benutzerpasswort fragen.
Um alle Datenbanken zu sichern:
mysqldump -u myuser -p --all-databases | gzip > /backup/mysql_all_$(date +%F).sql.gz
Um gespeicherte Prozeduren und Trigger einzuschließen, fügen Sie die Optionen --routines --triggers hinzu.
Backup zu CloudBox
CloudBox von INTROSERV ist eine Cloud-Speicherlösung, die mehrere Verbindungsprotokolle unterstützt (einschließlich rsync, scp, rsync über SSH, WebDAV). Die Benutzerfreundlichkeit von CloudBox vereinfacht erheblich die Aufgaben des Hochladens, der Verwaltung und des Abrufs von Daten.
Sie können es als entfernten Speicherort für Ihre Datenbanksicherungen verwenden. Nachfolgend finden Sie Einrichtungsdetails und Skriptbeispiele.
Schritt 1. Zugriff auf CloudBox erhalten
Bestellen Sie einen der verfügbaren CloudBox-Pläne auf unserer Website — https://introserv.com/solutions/cloudbox/
Nach der Zahlung wird der Dienst innerhalb weniger Minuten verfügbar. Nach der Aktivierung des Dienstes erhalten Sie Verbindungsdetails:
- 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/
Wo:
- user — CloudBox-Benutzername;
- cloudbox-server — Verbindungsadresse;
- /path_to_cloudbackups/ — Pfad auf CloudBox.
Für den automatisierten Betrieb ist es ratsam, SSH-Schlüssel einzurichten.
1) Erzeugen Sie einen öffentlichen Schlüssel:
ssh-keygen -t rsa
2) Kopieren Sie den Inhalt der erstellten öffentlichen Schlüsseldatei, z.B. /root/.ssh/id_rsa.pub in die Zwischenablage.
3) Gehen Sie zum Abschnitt "Profil" (fahren Sie mit der Maus ü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.
1) Installieren Sie rclone:
sudo apt install rclone
2) Starten Sie die Konfiguration:
rclone config
Wählen Sie während der Einrichtung:
- n — um ein neues Remote zu erstellen;
- Name, z.B.
cloudbox; - Speichertyp — wählen Sie
sftpoderssh; - Geben Sie die Serveradresse im Format
box$$$$$.introserv.cloud, den Benutzernamen im Formatbox$$$$$, den Port (SSH — Standard 22), den Verzeichnispfad ein; - Führen Sie die Autorisierung durch (falls erforderlich).
Testen Sie die Verbindung:
rclone ls cloudbox:/path_to_cloudbackups/
Kopieren Sie die Backup-Daten:
rclone copy /backup/ cloudbox:/db-backups/ --progress
Synchronisieren Sie mit Löschung von lokal fehlenden Dateien:
rclone sync /backup/ cloudbox:/db-backups/ --progress
Bei Bedarf — verschlüsseln Sie Dateien vor dem Transfer:
rclone copy /backup/ cloudbox:/db-backups/ --progress --crypt
Schritt 4. Automatisierungsskript-Beispiel mit CloudBox
Erstellen Sie das Skript /usr/local/bin/db_backup_cloudbox.sh:
#!/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 dann einen Cron-Job hinzu (das Skript wird täglich um 2:00 Uhr ausgeführt):
0 2 * * * /usr/local/bin/db_backup_cloudbox.sh
Wichtige Überlegungen:
- Stellen Sie sicher, dass die Verbindung zu CloudBox stabil ist und die Bandbreite ausreicht.
- Richten Sie ein Monitoring ein: Überprüfen Sie, ob die Dateien tatsächlich kopiert werden.
- Testen Sie regelmäßig die Wiederherstellung von CloudBox-Backups.
- Bei Verwendung vertraulicher Daten — erwägen Sie die Verschlüsselung von Backups.
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 es nur Änderungen kopiert):
rsync -avz -e "ssh -p 22" /backup/ [email protected]:/remote_backups/
Erklärung der Parameter:
- user — Benutzername auf dem entfernten Server;
- remote.server — IP-Adresse oder Domainname des entfernten Servers;
- /remote_backups/ — Pfad zum Speichern der Backups.
Um ohne Passworteingabe zu arbeiten, konfigurieren Sie SSH-Schlüssel.
SSH-Schlüssel generieren:
ssh-keygen -t rsa
Schlüssel auf den entfernten Server kopieren:
ssh-copy-id [email protected]
Danach funktioniert rsync ohne Passwortabfragen, was für Cron-Jobs praktisch ist.
Alternative — Verwendung von scp:
scp /backup/mysql_mydb.sql.gz [email protected]:/remote_backups/
Kopieren in die Cloud über rclone
Wenn Sie Backups in der Cloud (Google Drive, Dropbox, Amazon S3 usw.) speichern müssen, 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 (z.B.
s3,drive,dropbox); - Geben Sie Zugangsschlüssel ein oder autorisieren Sie ü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
Synchronisationsbefehl (entfernt lokal fehlende Dateien):
rclone sync /backup/ remote:db-backups/ --progress
Sie können Dateien auch vor dem Hochladen verschlüsseln:
rclone copy /backup/ remote:db-backups/ --progress --crypt
Sicherheit und Kontrolle
- Speichern Sie Backups an mindestens zwei Orten — lokal und entfernt.
- Überprüfen Sie regelmäßig, dass Backups erfolgreich erstellt und hochgeladen werden.
- Führen Sie mindestens einmal im Monat Testwiederherstellungen durch.
- Verschlüsseln Sie Dateien mit sensiblen Daten, wenn Sie öffentliche Clouds verwenden:
gpg -c /backup/mysql_mydatabase.sql.gz
- Stellen Sie sicher, dass die Dateiberechtigungen für
/backupkorrekt sind und sichern Sie Ihre Datenbankanmeldeinformationen.
Wiederherstellung aus einem 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 einfaches, aber äußerst wichtiges Verfahren. Selbst die zuverlässigste Infrastruktur kann Sie nicht vor menschlichem Versagen 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, mit regelmäßigen Wiederherstellungstests.
Durch die Kombination von pg_dump, mysqldump, rsync, rclone und cron können Sie ein zuverlässiges, vollständig automatisiertes Backup-System ohne kostenpflichtige Drittanbieter-Software aufbauen. Dieser Ansatz ist einfach zu implementieren und für alle Linux-Systeme geeignet.