Ich habe einen neuen Server, den ich für Backups verwenden möchte. Auf diesem Server möchte ich die gziped
Datenbanken aller meiner anderen 13 Server speichern. Was ist der beste Weg, jede Stunde ein Backup von jedem Server zu erstellen und es auf dem Backup-Server zu speichern?
Server SO Linux Centos.
Alle 13 Server haben WHM/Cpanel.
Der Backup-Server hat nur Centos 7.7 (kein Control Panel).
Ich konnte die Backups nicht mit Cpanel machen, weil Cpanel keine stündlichen Backups zulässt.
Antwort1
Dies erreichen Sie mit rsync
und cron
.
Erstellen Sie auf jedem Server die Datei backup.sh mit der folgenden Zeile:
#!/bin/bash
mysqldump > /etc/backups/mysqldump.sql
rsync /etc/backups/mysqldump.sql -e ssh <username>@<ip-address-of-backup-server>:/<path-to your-backup-folder>/<server-name>/"$(date "+%Y-%m-%d-%H")"-backup.sql
Prüfen Sie mitMySQL-Dokumentationfür Dump-Optionen (oder verwenden Sie Ihre bevorzugte Methode zum Dumpen der Datenbank). <server-name>
sollte eine Art Kennung für den Server sein, von dem das Backup stammt.
Legen Sie die Datei in /etc/cron.hourly
. Wenn Sie andere Zeitpläne wünschen, können Sie andere /etc/cron.*
Ordner überprüfen oder verwendenCrontab-Generatorund verwenden Sie den Befehl crontab -e
.
Stellen Sie sicher, dass /etc/backups
(oder das entsprechende Äquivalent) vorhanden ist, oder erstellen Sie es ( mkdir
).
Einige häufige Fallstricke:
Stellen Sie sicher, dass Sie auf jedem Server SSH-Schlüssel einrichten, damit
rsync
eine Verbindung zum Backup-Server und/oder zu einzelnen Benutzern mit eingeschränkten Berechtigungen hergestellt werden kann. Hängt davon ab, welche Art von Sicherheit Sie suchen.Stellen Sie sicher, dass das
backup.sh
Skript ausführbar ist.Wenn Sie es
backup.sh
in/etc/cron.*
einen Ordner legen, wird es mit Root-Rechten ausgeführt. Wenn Sie dies aus irgendeinem Grund nicht möchten, verwenden Siecrontab -e
die Option als gewünschter Benutzer.