Android

Sichern und Wiederherstellen von MySQL-Datenbanken mit MySQLDump

MySQL Dumper Datenbank sichern und wiederherstellen

MySQL Dumper Datenbank sichern und wiederherstellen

Inhaltsverzeichnis:

Anonim

In diesem Tutorial wird erklärt, wie Sie MySQL- oder MariaDB-Datenbanken mit dem Dienstprogramm mysqldump über die Befehlszeile sichern und wiederherstellen.

Die vom Dienstprogramm mysqldump erstellten Sicherungsdateien bestehen im Wesentlichen aus einer Reihe von SQL-Anweisungen, mit denen die ursprüngliche Datenbank wiederhergestellt werden kann. Der Befehl mysqldump kann auch Dateien im CSV- und XML-Format generieren.

Sie können auch das Dienstprogramm mysqldump verwenden, um Ihre MySQL-Datenbank auf einen anderen MySQL-Server zu übertragen.

Mysqldump-Befehlssyntax

Bevor wir mit der Verwendung des Befehls mysqldump beginnen, überprüfen wir zunächst die grundlegende Syntax.

Die Ausdrücke des Dienstprogramms mysqldump haben die folgende Form:

mysqldump > file.sql

  • options - Die mysqldump- file.sql - Die Sicherungsdatei

Um den Befehl mysqldump verwenden zu können, muss der MySQL-Server erreichbar sein und ausgeführt werden.

Sichern Sie eine einzelne MySQL-Datenbank

Der häufigste Anwendungsfall des mysqldump-Tools ist das Sichern einer einzelnen Datenbank.

Um beispielsweise eine Sicherung der Datenbank mit dem Namen database_name mit dem Benutzer root zu erstellen und in einer Datei mit dem Namen database_name.sql zu database_name.sql Sie den folgenden Befehl aus:

mysqldump -u root -p database_name > database_name.sql

Sie werden aufgefordert, das root-Passwort einzugeben. Nach erfolgreicher Authentifizierung wird der Dump-Vorgang gestartet. Abhängig von der Datenbankgröße kann der Vorgang einige Zeit dauern.

mysqldump database_name > database_name.sql

Sichern Sie mehrere MySQL-Datenbanken

Um mehrere MySQL-Datenbanken mit einem Befehl zu --database müssen Sie die Option --database gefolgt von der Liste der zu --database Datenbanken verwenden. Jeder Datenbankname muss durch ein Leerzeichen getrennt werden.

mysqldump -u root -p --databases database_name_a database_name_b > databases_a_b.sql

Mit dem obigen Befehl wird eine Speicherauszugsdatei erstellt, die beide Datenbanken enthält.

Sichern Sie alle MySQL-Datenbanken

Verwenden Sie die Option --all-databases , um alle MySQL-Datenbanken zu --all-databases :

mysqldump -u root -p --all-databases > all_databases.sql

Wie im vorherigen Beispiel wird mit dem obigen Befehl eine einzelne Speicherauszugsdatei erstellt, die alle Datenbanken enthält.

Sichern Sie alle MySQL-Datenbanken in separaten Dateien

Das Dienstprogramm mysqldump bietet keine Möglichkeit, alle Datenbanken in separaten Dateien zu sichern. Dies erreichen wir jedoch problemlos mit einer einfachen Bash- FOR Schleife:

for DB in $(mysql -e 'show databases' -s --skip-column-names); do mysqldump $DB > "$DB.sql"; done

Mit dem obigen Befehl wird für jede Datenbank eine separate Sicherungsdatei erstellt, wobei der Datenbankname als Dateiname verwendet wird.

Erstellen Sie eine komprimierte MySQL-Datenbanksicherung

Wenn die Datenbank sehr groß ist, empfiehlt es sich, die Ausgabe zu komprimieren. Um dies zu tun, leiten Sie die Ausgabe einfach an das Dienstprogramm gzip und leiten Sie sie in eine Datei um, wie unten gezeigt:

mysqldump database_name | gzip > database_name.sql.gz

Erstellen Sie ein Backup mit Zeitstempel

mysqldump database_name > database_name-$(date +%Y%m%d).sql

Der obige Befehl erstellt eine Datei mit dem folgenden Format database_name-20180617.sql

Wiederherstellen eines MySQL-Dumps

Sie können einen MySQL-Dump mit dem MySQL-Tool wiederherstellen. Die allgemeine Befehlssyntax lautet wie folgt:

mysqld database_name < file.sql

In den meisten Fällen müssen Sie eine Datenbank erstellen, in die Sie importieren möchten. Wenn die Datenbank bereits vorhanden ist, müssen Sie sie zuerst löschen.

Im folgenden Beispiel erstellt der erste Befehl eine Datenbank mit dem Namen database_name und importiert anschließend den Speicherauszug database_name.sql :

mysql -u root -p -e "create database database_name"; mysql -u root -p database_name < database_name.sql

Stellen Sie eine einzelne MySQL-Datenbank aus einem vollständigen MySQL-Dump wieder her

mysql --one-database database_name < all_databases.sql

Exportieren und Importieren einer MySQL-Datenbank in einem Befehl

Anstatt eine Speicherauszugsdatei aus einer Datenbank zu erstellen und dann die Sicherung in eine andere MySQL-Datenbank zu importieren, können Sie den folgenden Einzeiler verwenden:

mysqldump -u root -p database_name | mysql -h remote_host -u root -p remote_database_name

Der obige Befehl leitet die Ausgabe an einen MySQL-Client auf dem Remote-Host weiter und importiert sie in eine Datenbank mit dem Namen remote_database_name . Stellen Sie vor dem Ausführen des Befehls sicher, dass die Datenbank bereits auf dem Remoteserver vorhanden ist.

Automatisieren Sie Backups mit Cron

Das Automatisieren des Sicherungsprozesses der Datenbanken ist so einfach wie das Erstellen eines Cron-Jobs, mit dem der Befehl mysqldump zur angegebenen Zeit ausgeführt wird.

Führen Sie die folgenden Schritte aus, um automatische Sicherungen einer MySQL-Datenbank mit cronjob einzurichten:

  1. Erstellen Sie eine Datei mit dem Namen .my.cnf in Ihrem Benutzerverzeichnis:

    sudo nano ~/.my.cnf

    Kopieren Sie den folgenden Text und fügen Sie ihn in die Datei.my.cnf ein.

    user = dbuser password = dbpasswd

    Vergessen Sie nicht, dbuser und dbpasswd durch den Datenbankbenutzer und das Kennwort des Benutzers zu ersetzen.

    Schränken Sie die Berechtigungen der Anmeldeinformationsdatei ein, sodass nur Ihr Benutzer Zugriff darauf hat:

    chmod 600 ~/.my.cnf

    Erstellen Sie ein Verzeichnis zum Speichern der Backups:

    mkdir ~/db_backups

    Öffnen Sie Ihre Benutzer-Crontab-Datei:

    crontab -e

    Fügen Sie den folgenden Cron-Job hinzu, der jeden Tag um 3 Uhr morgens eine Sicherung des Datenbanknamens mydb :

    0 3 * * * /usr/bin/mysqldump -u dbuser mydb > /home/username/db_backups/mydb-$(date +%Y%m%d).sql

    Vergessen Sie nicht, den username durch Ihren tatsächlichen Benutzernamen zu ersetzen.

Sie können auch einen weiteren Cronjob erstellen, um Backups zu löschen, die älter als 30 Tage sind:

find /path/to/backups -type f -name "*.sql" -mtime +30 -delete

Natürlich müssen Sie den Befehl entsprechend Ihrem Sicherungsort und den Dateinamen anpassen. Weitere Informationen zum Befehl find finden Sie in der Anleitung zum Suchen von Dateien unter Linux mithilfe der Befehlszeile.

Fazit

Dieses Tutorial behandelt nur die Grundlagen, aber es sollte ein guter Einstieg für alle sein, die lernen möchten, wie man MySQL-Datenbanken mit dem Hilfsprogramm mysqldump über die Befehlszeile erstellt und wiederherstellt.

Sie können auch im Tutorial nachlesen, wie Sie ein MySQL-Root-Passwort zurücksetzen, falls Sie es vergessen haben.

mysql mariadb backup mysqldump