Automatische Sicherung der Mysql-Datenbank

Sie müssen täglich ein Mysql-Backup Ihrer Datenbank durchführen und möchten die Datei auch auf einen Remote-Server kopieren, damit Sie sicher sein können, dass Sie immer ein Backup Ihrer Umgebung haben.

Nun, ich werde erklären, wie man es macht.

Erstens ist der Befehl zum Ausführen von dump ähnlich wie dieser:

mysqldump -u USERNAME -pASSWORT NOMEDB > ./backup_NOMEDB$(date +"%Y-%m-%d").sql

Wenn USERNAME der db-Benutzer ist, ist PASSWORD das Passwort des Benutzers, NOMEDB der Schemaname. Und schließlich backup_NOMEDB$(date +“%Y-%m-%d“).sql ist der Name der Sicherungsdatei.

Die Datei wird mit dem Datum im Format Jahr Monat, Tag erstellt.

Wenn wir unseren Dump mit gzip komprimieren wollen, können wir das Skript wie folgt ändern

â?ª I'm gonna go and get you â?ª $(which gzip) -9 > ./backup_NOMEDB$(date +"%Y-%m-%d").sql.gz

An dieser Stelle haben wir unsere Datei und können sie mit dem Befehl scp auf einen entfernten Linux-Server kopieren.

Um die Remote-Kopie zu automatisieren und kein Passwort zu benötigen, müssen Sie SSH so konfigurieren, dass der Zugriff ohne Passwort über SSH-Schlüssel erfolgt. Meinen Artikel über SSH ohne Passwort lesen

Starten Sie nun den Kopierbefehl

scp./backup_NOMEDB$(date +"%Y-%m-%d").sql.gz userremoto@ipserverremoto:./backup_NOMEDB$(date +"%Y-%m-%d").sql.gz

An dieser Stelle können wir zur Automatisierung des Prozesses beispielsweise eine Crontask um eins am Morgen aktivieren, die dem Speicherauszug folgt und die Kopie erstellt.

Der Befehl zum Hinzufügen zur crontab ist so etwas wie das:

0 1 * * * * mysqldump -u USERNAME -pPASSWORD NOMEDB > ./backup_NOMEDB$(date +"%Y-%m-%d").sql | scp ./backup_NOMEDB$(date +"%Y-%m-%d").sqluserremoto@ipserverremoto:./backup_NOMEDB$(date +"%Y-%m-%d").sql

Auf diese Weise verhindern wir uns selbst im zufälligen Fall eines kompletten Absturzes der mysql db und damit des Verlustes des gesamten Blogs.