Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Anleitung zum Sichern und Wiederherstellen (Exportieren und Importieren) von MySQL-Datenbanken

phpMyAdmin kann zum einfachen Exportieren oder Sichern von MySQL- oder MariaDB-Datenbanken verwendet werden. Wenn die Datenbankgröße jedoch sehr groß ist, ist dies wahrscheinlich keine gute Idee. phpMyAdmin ermöglicht es Benutzern, Datenbank-Dump als Datei zu speichern oder auf dem Bildschirm anzuzeigen, was den Export von SQL-Anweisungen vom Server und die Übertragung der Daten über eine langsamere Netzwerkverbindung oder das Internet an den Computer des Benutzers beinhaltet. Dieser Prozess verlangsamt den Exportprozess, erhöht die Datenbanksperrzeit und damit die Nichtverfügbarkeit von MySQL oder MariaDB, verlangsamt den Server und kann den Apache HTTPD-Server einfach zum Absturz bringen, wenn zu viele eingehende Webverbindungen die Ressourcen des Systems belasten.

Der bessere Weg zum Sichern und Exportieren von MySQL- oder MariaDB-Datenbanken besteht darin, die Aufgabe lokal auf dem Server auszuführen, sodass die Daten der Tabellen sofort und ohne Verzögerung auf der lokalen Festplatte abgelegt werden können. Dadurch wird die Exportgeschwindigkeit schneller und die Zeit, in der MySQL- oder MariaDB-Datenbanken oder -Tabellen für den Zugriff gesperrt sind, verkürzt. Dieses Tutorial ist die Anleitung zum Sichern (Exportieren) und Wiederherstellen (Importieren) von MySQL- oder MariaDB-Datenbank(en) auf dem Datenbankserver selbst mithilfe von mysqldump und mysql Dienstprogramme. Grundsätzlich gibt es zwei Methoden, um MySQL oder MariaDB zu sichern, eine besteht darin, alle Tabellendateien (*.frm-, *.MYD- und *.MYI-Dateien) zu kopieren oder mysqlhotcopy zu verwenden Dienstprogramm, aber es funktioniert nur für MyISAM-Tabellen. Das folgende Tutorial konzentriert sich auf mysqldump, das sowohl für MyISAM- als auch für InnoDB-Tabellen funktioniert.

So exportieren oder sichern oder sichern Sie eine MySQL- oder MariaDB-Datenbank

Um eine MySQL- oder MariaDB-Datenbank in eine Dump-Datei zu exportieren, geben Sie einfach die folgende Befehlssyntax in die Shell ein. Sie können Telnet oder SSH verwenden, um sich remote bei der Maschine anzumelden, wenn Sie keinen Zugriff auf die physische Box haben.

mysqldump -u username -ppassword database_name > dump.sql

Ersetzen Sie Benutzername mit einer gültigen MySQL- oder MariaDB-Benutzer-ID, Passwort mit dem gültigen Passwort für den Benutzer (WICHTIG:kein Leerzeichen nach -p und dem Passwort, sonst fragt mysqldump nach dem Passwort, behandelt das Passwort aber als Datenbanknamen, sodass die Sicherung fehlschlägt) und Datenbankname durch den tatsächlichen Namen der Datenbank, die Sie exportieren möchten. Schließlich können Sie einen beliebigen Namen für die Ausgabe-SQL-Dump-Datei eingeben, hier dump.sql .

Die gesamten Daten, Tabellen, Strukturen und die Datenbank von Datenbankname wird in einer SQL-Textdatei namens dump.sql gesichert mit dem obigen Befehl.

So exportieren Sie nur die Strukturen einer MySQL- oder MariaDB-Datenbank

Wenn Sie die Daten in den Tabellen der Datenbank nicht mehr benötigen (unwahrscheinlich), fügen Sie einfach –no-data hinzu wechseln Sie, um nur die Tabellenstrukturen zu exportieren. Die Syntax lautet beispielsweise:

mysqldump -u username -ppassword --no-data database_name > dump.sql

So sichern Sie nur Daten einer MySQL- oder MariaDB-Datenbank

Wenn Sie möchten, dass nur die Daten gesichert werden, verwenden Sie –no-create-info Möglichkeit. Mit dieser Einstellung erstellt der Dump die Datenbank, Tabellen, Felder und andere Strukturen beim Importieren nicht neu. Verwenden Sie dies nur, wenn Sie ziemlich sicher sind, dass Sie doppelte Datenbanken mit derselben Struktur haben, in denen Sie nur die Daten aktualisieren müssen.

mysqldump -u username -ppassword --no-create-info database_name > dump.sql

So kopieren Sie mehrere MySQL- oder MariaDB-Datenbanken in eine Textdatei

–Datenbanken Mit der Option können Sie mehr als eine Datenbank angeben. Beispielsyntax:

mysqldump -u username -ppassword --databases db_name1 [db_name2 ...] > dump.sql

So sichern Sie alle Datenbanken in MySQL oder MariaDB Server

Um alle Datenbanken zu sichern, verwenden Sie –all-databases Option, und es muss kein Datenbankname mehr angegeben werden.

mysqldump -u username -ppassword --all-databases > dump.sql

Wie man InnoDB-Tabellen online sichert

Sichern Sie die Datenbank, was unvermeidlich dazu führt, dass der MySQL- oder MariaDB-Server für Anwendungen nicht verfügbar ist, da beim Exportieren alle Tabellen eine globale Lesesperre mit FLUSH TABLES WITH READ LOCK zu Beginn des Dumps bis zum Abschluss erhalten haben. Obwohl READ-Anweisungen fortgesetzt werden können, müssen alle INSERT-, UPDATE- und DELETE-Anweisungen aufgrund gesperrter Tabellen in die Warteschlange gestellt werden, als ob MySQL oder MariaDB ausgefallen oder blockiert wäre. Wenn Sie InnoDB verwenden, –single-transaction ist die Möglichkeit, diese Sperrzeit auf fast nicht existent zu minimieren, als ob Sie eine Online-Sicherung durchführen würden. Es funktioniert, indem es die Koordinaten des Binärlogs liest, sobald die Sperre erworben wurde, und die Sperre dann sofort freigegeben wird.

Syntax:

mysqldump -u username -ppassword  --all-databases --single-transaction > dump.sql

So stellen Sie eine MySQL- oder MariaDB-Datenbank wieder her und importieren sie

Sie können von phpMyAdmin aus wiederherstellen, indem Sie die Registerkarte „Importieren“ verwenden. Laden Sie für einen schnelleren Weg die Dump-Datei auf den MySQL- oder MariaDB-Server hoch und verwenden Sie den folgenden Befehl, um die Datenbanken wieder in den MySQL- oder MariaDB-Server zu importieren.

mysql -u username -ppassword database_name < dump.sql
Wenn Sie sich remote mit MySQL- oder MariaDB-Servern auf einem anderen Server verbinden möchten, hängen Sie -h Servername-oder-IP-Adresse an zum Befehl.

Der Import und Export von MySQL- oder MariaDB-Datenbanken ist nicht nur wichtig, um die Daten im Katastrophenfall wiederherzustellen, sondern bietet auch eine einfache Möglichkeit zur Migration oder zum Umzug auf einen anderen Server, z. B. beim Wechsel des Webhosting-Anbieters. Beachten Sie jedoch ein häufiges Problem – die Zeichensatzkodierung. Neuere Versionen von mysqldump verwenden UTF8 als Standardzeichensatz, wenn nichts angegeben ist, während ältere Versionen (normalerweise älter als 4.1) Latin1 als Standardzeichensatz verwenden. Wenn Ihr Datenbankzeichensatz Latin1 ist und in UTF8-Kollatierung ausgegeben wird, können die Daten einfach Müll, verstümmelt oder unlesbar werden (häufig bei WordPress-Blogs). Verwenden Sie in diesem Fall –default-character-set=charset_name Option, um den Zeichensatz anzugeben oder die Datenbank in UTF8 zu konvertieren.