Implementierung der MySQL5.7 mysqldump-Sicherung und -Wiederherstellung

Implementierung der MySQL5.7 mysqldump-Sicherung und -Wiederherstellung

MySQL-Sicherung

Kaltes Backup:
停止服務進行備份,即停止數據庫的寫入

Hot-Backup:
不停止服務進行備份(在線)

Die MyIsam-Engine von MySQL unterstützt nur Cold Backup, während InnoDB Hot Backup unterstützt. Die Gründe dafür sind:

Die InnoDB-Engine ist eine transaktionale Speicher-Engine. Jede Anweisung wird in ein Protokoll geschrieben und jede Anweisung hat einen Zeitpunkt im Protokoll. Beim Sichern kann MySQL daher auf der Grundlage dieses Protokolls Redo- und Undo-Operationen durchführen, Transaktionen rückgängig machen, die während des Sicherns nicht festgeschrieben wurden, und festgeschriebene Transaktionen wiederherstellen. MyIsam kann dies jedoch nicht. MyIsam verfügt über keine Protokolle. Um Konsistenz zu gewährleisten, können Sie die Tabelle nur zum Sichern herunterfahren oder sperren.

InnoDB unterstützt nicht das direkte Kopieren des gesamten Datenbankverzeichnisses und die Verwendung des Tools mysqlhotcopy für die physische Sicherung:

1. Kopieren Sie das gesamte Datenbankverzeichnis direkt. Da die MySQL-Tabelle als Datei gespeichert wird, können Sie das Speicherverzeichnis und die Dateien der MySQL-Datenbank zur Sicherung direkt kopieren. Der Speicherort des MySQL-Datenbankverzeichnisses ist nicht unbedingt derselbe. Auf Windows-Plattformen ist das Verzeichnis, in dem MySQL5.6 die Datenbank speichert, normalerweise standardmäßig ~\MySQL\MYSQL Server 5.6\data oder ein anderes benutzerdefiniertes Verzeichnis. Diese Methode gilt nicht für Tabellen, die die Speicher-Engine INNODB verwenden. Mit dieser Methode gesicherte Daten werden am besten auf einem Server derselben Version wiederhergestellt. Verschiedene Versionen sind möglicherweise nicht kompatibel. Beim Wiederherstellen können Sie die Sicherungsdatei direkt in das MySQL-Datenverzeichnis kopieren, um sie wiederherzustellen. Bei dieser Wiederherstellungsmethode müssen Sie sicherstellen, dass die Hauptversionsnummer der Datenbank der Sicherungsdaten und des wiederherzustellenden Datenbankservers identisch sind. Darüber hinaus ist diese Methode nur für die MYISAM-Engine gültig und nicht für Tabellen verfügbar, die die InnoDB-Engine verwenden. Bevor Sie die Wiederherstellung durchführen, beenden Sie den MySQL-Dienst, überschreiben Sie das MySQL-Datenverzeichnis mit den gesicherten Dateien oder Verzeichnissen und starten Sie den MySQL-Dienst.

2. Verwenden Sie das Tool mysqlhotcopy für eine schnelle Sicherung
mysqlhotcopy ist ein Perl-Skript, das ursprünglich von Tim Bunce geschrieben und beigesteuert wurde. Er verwendet LOCK TABLES, FLUSH TABLES und cp oder scp, um die Datenbank schnell zu sichern. Dies ist die schnellste Möglichkeit, eine Datenbank oder eine einzelne Tabelle zu sichern, es kann jedoch nur auf dem Computer ausgeführt werden, auf dem sich das Datenbankverzeichnis befindet, und kann nur Tabellen vom Typ MyISAM sichern.

Eine kurze Einführung in mysqldump Backup

mysqldump kann zwei Arten von Ausgabedateien erzeugen, abhängig davon, ob die Option -tab=dir_name verwendet wird oder nicht.

Ohne die Option -tab=dir_name ist die von mysqldump generierte Datendatei eine reine Text-SQL-Datei, die aus CREATE-Anweisungen (Datenbank, Tabelle, Speicherpfad usw.) und INSERT-Anweisungen (Datensatz) besteht. Die Ausgabeergebnisse werden in einer Datei gespeichert und die Sicherungsdatei kann mit dem MySQL-Befehl wiederhergestellt werden.

Mit der Option -tab=dir_name generiert mysqldump zwei Ausgabedateien für jede zu sichernde Datentabelle: eine ist eine durch Trennzeichen getrennte Textdatei, in der jede Zeile der gesicherten Datentabelle als Textzeile gespeichert ist, gespeichert als „Tabellenname.txt“; die andere Ausgabedatei ist die CREATE TABLE-Anweisung der Datentabelle, gespeichert als „Tabellenname.sql“.

mysqldump-Syntax und -Optionen

【Befehl】 shell> mysqldump -help

Bildbeschreibung hier einfügen

- -all-databases bedeutet, dass alle Datenbanken im System gesichert werden. Nach der Verwendung des Parameters - -databases müssen Sie den Namen von mindestens einer Datenbank angeben. Mehrere Datenbanknamen werden durch Leerzeichen getrennt.

Häufig verwendete Optionen

- -Tabelle hinzufügen/ablegen
Diese Option fügt vor jeder Tabelle eine DROP TABLE IF EXISTS-Anweisung hinzu, die sicherstellen kann, dass beim Rückimport in die MySQL-Datenbank keine Fehler auftreten, da bei jedem Import zunächst geprüft wird, ob die Tabelle vorhanden ist, und sie gelöscht wird, wenn sie vorhanden ist.

--add-locks
Diese Option bündelt eine LOCK TABLE- und UNLOCK TABLE-Anweisung mit der INSERT-Anweisung. Dadurch wird verhindert, dass andere Benutzer Vorgänge an der Tabelle ausführen, während die Datensätze erneut in die Datenbank importiert werden.

- -Tab
Diese Option erstellt zwei Dateien: eine ist eine durch Trennzeichen getrennte Textdatei. Jede Zeile in der gesicherten Datentabelle wird als Textzeile gespeichert und als „Tabellenname.txt“ gespeichert. Die andere Ausgabedatei ist die CREATE TABLE-Anweisung der Datentabelle und wird als „Tabellenname.sql“ gespeichert.

-quick oder -opt
Wenn Sie die Option --quick oder --opt nicht verwenden, lädt mysqldump den gesamten Inhalt in den Speicher, bevor die Ergebnisse ausgegeben werden. Dies kann ein Problem sein, wenn Sie große Datenbanken sichern. Diese Option ist standardmäßig aktiviert, kann aber mit --skip-opt deaktiviert werden.

-Kommentare überspringen
Verwenden Sie --skip-comments, um Kommentare in der exportierten Datei zu entfernen.

- -kompakt
Verwenden Sie die Option -compact, um nur die wichtigsten Anweisungen auszugeben, ohne Kommentare, Anweisungen zum Löschen von Tabellen usw. auszugeben.

Sichern von Daten im SQL-Format

Wenn der Speicherort im Dateinamen .sql der Sicherungsdatei nicht angegeben ist, wird sie standardmäßig im Verzeichnis ~\MySQL\MySQL Server 5.6\bin abgelegt.

Geben Sie den Pfad zur Datensicherung an:
mysqldump –h 主機名–u 用戶名–p - -all-databases > C:\備份文件名.sql

Rufen Sie mysqldump mit der Option --all-databases auf, um alle Datenbanken zu sichern.
mysqldump –h 主機名–u 用戶名–p - -all-databases > C:\備份文件名.sql

Rufen Sie mysqldump mit der Option --databases auf, um die angegebenen Datenbanken zu sichern.
mysqldump –u 用戶名–p - -databases db1 db2 db3 … > C:\備份文件名.sql

Rufen Sie mysqldump auf, um eine bestimmte Datenbank zu sichern:
mysqldump –u 用戶名–p - -databases db > 備份文件名.sql

Verwenden Sie mysqldump ohne die Option --databases, um eine bestimmte Datenbank zu sichern. Die generierte Sicherungsdatei enthält keine CREATE DATABASE- und USE-Anweisungen:
mysqldump –u 用戶名–p db > 備份文件名.sql

Hinweis: Beim Sichern einer Datenbank kann -databases weggelassen werden. Dies führt jedoch dazu, dass der Sicherungsdateiname .sql keine CREATE DATABASE- und USE-Anweisungen enthält. Beim Wiederherstellen der Sicherungsdatei müssen Sie einen Standarddatenbanknamen angeben, damit der Server weiß, in welche Datenbank die Sicherungsdatei wiederhergestellt werden soll. Dies kann dazu führen, dass Sie einen Datenbanknamen verwenden, der sich vom ursprünglichen Datenbanknamen unterscheidet.

Rufen Sie mysqldump auf, um mehrere Tabellen in einer Datenbank zu sichern:
mysqldump –u用戶名–p 數據庫名表名1 表名2 表名3… > 備份文件名.sql

Wiederherstellen von Sicherungsdateien im SQL-Format

Wenn die Option --all-databases oder --databases für die von mysqldump gesicherte Datei verwendet wird, enthält die Sicherungsdatei CREATE DATABASE- und USE-Anweisungen, sodass Sie keinen Datenbanknamen angeben müssen, um die Sicherungsdatei wiederherzustellen.

Im Shell-Befehl:

Shell> mysql –u Benutzername –p < Sicherungsdatei.sql

Verwenden Sie unter dem MySQL-Befehl den Quellbefehl, um die Sicherungsdatei zu importieren:

mysql> Quellsicherungsdatei.sql; // Bereits bei mysql angemeldet, verwenden Sie den Quellbefehl

Wenn eine einzelne Datenbank durch mysqldump gesichert wird und die Option --databases nicht verwendet wird, enthält die Sicherungsdatei keine CREATE DATABASE- und USE-Anweisungen. Daher muss die Datenbank beim Wiederherstellen zuerst erstellt werden.

Im Shell-Befehl:

Shell> mysqladmin –u Benutzername –p Datenbankname erstellen //Datenbank erstellen Shell> mysql –u Benutzername –p Datenbankname < Sicherungsdatei.sql

Unter dem MySQL-Befehl:

mysql> DATENBANK ERSTELLEN, WENN NICHT VORHANDEN Datenbankname;
mysql> USE-Datenbankname;
mysql> Quellsicherungsdatei.sql;

Hinweis: Der Quellbefehl kann nur in der cmd-Schnittstelle ausgeführt werden und kann nicht im MySQL-Tool ausgeführt werden. Es wird ein Fehler gemeldet, da cmd mysql.exe direkt aufruft, um Befehle auszuführen.

Sichern Sie Daten im durch Trennzeichen getrennten Textdateiformat

Rufen Sie mysqldump mit der Option - -tab=dir_name auf, um die Datenbank zu sichern, wobei dir_name das Verzeichnis der Ausgabedateien darstellt. In diesem Verzeichnis werden für jede zu sichernde Tabelle zwei Dateien generiert. Beispielsweise enthält eine Tabelle mit dem Namen t1 zwei Dateien: t1.sql und t1.txt. Die SQL-Datei enthält die Anweisung CREATE TABLE. Eine Zeile in der TXT-Datei ist ein Datensatz in der Datentabelle, und Spaltenwerte sind durch „Tabulatoren“ getrennt.

Hinweis: Die Verwendung von mysqldump mit der Option --tab=dir_name empfiehlt sich nur auf einem lokalen Server. Denn wenn es auf einem Remote-Server verwendet wird, existiert das durch - -tab generierte Verzeichnis sowohl auf dem lokalen Host als auch auf dem Remote-Host, die TXT-Datei wird vom Server in das Verzeichnis des Remote-Hosts geschrieben und die SQL-Datei wird in das Verzeichnis des lokalen Hosts geschrieben.

Rufen Sie mysqldump mit der Option -tab=dir_name auf, um die Datenbank zu sichern
mysqldump –u 用戶名–p - -tab=dir_name 數據庫名

[Beispiel] Verwenden Sie mysqldump mit der Option - -tab=dir_name, um den Datenbanktest zu sichern und auf Laufwerk D abzulegen:

Tabellen in der Testdatenbank:

Bildbeschreibung hier einfügen

Führen Sie den Sicherungsbefehl aus:

Bildbeschreibung hier einfügen

Die Ausgabeergebnisse:

Bildbeschreibung hier einfügen

Stellen Sie eine Sicherungsdatei im durch Trennzeichen getrennten Textdateiformat wieder her. Verwenden Sie den MySQL-Befehl, um die SQL-Datei zu verarbeiten und die Tabellenstruktur wiederherzustellen, und verarbeiten Sie dann die TXT-Datei, um die Datensätze zu laden.

Shell> mysql –u Benutzername –p Datenbankname < Tabellenname.sql //Tabellenstruktur wiederherstellen Shell> mysqlimport –u Benutzername –p Datenbankname Tabellenname.txt //Datensätze wiederherstellen

Alternativ können Sie LOAD DATA INFILE anstelle des Befehls mysqlimport verwenden, dieses Mal müssen Sie jedoch den Befehl mysql verwenden:

mysql> Datenbankname verwenden; //Datenbank auswählenmysql> DATEN INFILE 'Tabellenname.txt' IN TABELLE LOAD table name; //Datensätze wiederherstellen

[Beispiel] Stellen Sie die Stucou-Tabelle in der Testdatenbank wieder her: Überprüfen Sie die Tabellen in der Testdatenbank, und es gibt keine Stucou-Tabelle:

Bildbeschreibung hier einfügen

Stellen Sie die Stucou-Tabellenstruktur mithilfe der Datei stucou.sql wieder her:

Bildbeschreibung hier einfügen

Die Stucou-Datentabelle wurde erfolgreich wiederhergestellt:

Bildbeschreibung hier einfügen

Es gibt keine Datensätze in der Stucou-Datentabelle:

Bildbeschreibung hier einfügen

Stellen Sie die Datensätze der Stucou-Tabelle mithilfe der Datei stucou.txt wieder her:

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Verwenden Sie den MySQL-Befehl, um die Zwischenergebnisse der Abfrage zu exportieren

Importieren von Abfrageergebnissen in eine Textdatei

mysql ist ein Tool-Befehl mit vielen Funktionen. Sie können mysql auch verwenden, um SQL-Anweisungen im Befehlszeilenmodus auszuführen und Abfrageergebnisse in Textdateien zu importieren. Im Vergleich zu mysqldump sind die vom MySQL-Tool exportierten Ergebnisse besser lesbar. Wenn es sich bei dem MySQL-Server um eine separate Maschine handelt und der Benutzer auf einem Client arbeitet, kann er die Datenergebnisse mit der Anweisung mysql -e in die Client-Maschine importieren.

【Befehl】:
shell> mysql -u root -p --execute="SELECT 語句" dbname > filename.txt

Dieser Befehl verwendet die Option --execute, was bedeutet, dass die Anweisung nach dieser Option ausgeführt und beendet wird. Die folgende Anweisung muss in doppelte Anführungszeichen gesetzt werden.

dbname ist der Name der zu exportierenden Datenbank. Verschiedene Spalten in der exportierten Datei sind durch Tabulatoren getrennt. Die erste Zeile enthält die Feldnamen.

[Beispiel] Verwenden Sie den MySQL-Befehl, um die Datensätze der Personentabelle der Testdatenbank in eine Textdatei zu exportieren:
shell> mysql -u root -p --execute="SELECT * FROM person;" test > C:\person3.txt

Der Inhalt von person3.txt ist wie folgt

ID Name Alter Beruf

1 grün 29 Anwalt

2 Suse 26 Tänzerin

3 Evans 27 Sportler

4 Mary 26 Sängerin

Wie Sie sehen, enthält die Datei person3.txt den Namen jedes Felds und jedes Datensatzes. Wenn eine Datensatzzeile viele Felder enthält, kann sie möglicherweise nicht vollständig in einer Zeile angezeigt werden. Sie können den Parameter -vertical verwenden, um jeden Datensatz in mehrere Zeilen aufzuteilen.

[Beispiel] Verwenden Sie den MySQL-Befehl, um die Personentabelle der Testdatenbank zu exportieren, und verwenden Sie den Parameter –vertical, um Folgendes anzuzeigen:
shell> mysql -u root -p --vertical --execute="SELECT * FROM person;" test > C:\person4.txt

*************************** 1. Reihe ***************************

ID: 1

Name: grün

Alter: 29

Beruf: Rechtsanwalt

*************************** 2. Reihe ***************************

ID: 2

Name: suse

Alter: 26

Beruf: Tänzerin

*************************** 3. Reihe ***************************

ID: 3

Vorname: evans

Alter: 27

Beruf: Sportler

*************************** 4. Reihe ***************************

Nr.: 4

Name: Maria

Alter: 26

Beruf: Sängerin

Wenn die Datensätze in der Personentabelle zu lang sind, ist diese Anzeige leichter zu lesen

Importieren der Abfrageergebnisse in eine HTML-Datei

Verwenden Sie den MySQL-Befehl, um die Datensätze der Personentabelle der Testbibliothek in eine HTML-Datei zu exportieren. Die Eingabeanweisung lautet wie folgt

Shell> mysql -u root -p --html --execute="SELECT * FROM PERSON;" Test > C:\person5.html 

Bildbeschreibung hier einfügen

Importieren der Abfrageergebnisse in eine XML-Datei

Wenn Sie in eine XML-Datei exportieren möchten, verwenden Sie die Option –xml, um mit dem MySQL-Befehl die Datensätze in der Personentabelle der Testbibliothek in eine XML-Datei zu exportieren.

Shell> mysql -u root -p --xml --execute="SELECT * FROM PERSON;" Test > C:\person6.xml
<?xml version="1.0"?>

<resultset-Anweisung="SELECT * FROM PERSON" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

 <Zeile>

  <Feldname="ID">1</Feld>

  <Feldname="Name">grün</Feld>

  <Feldname="Alter">29</Feld>

  <Feldname="Job">Rechtsanwalt</Feld>

 </row>

 <Zeile>

  <Feldname="ID">2</Feld>

  <Feldname="Name">suse</Feld>

  <Feldname="Alter">26</Feld>

  <field name="job">Tänzer</field>

 </row>

 <Zeile>

  <Feldname="ID">3</Feld>

  <Feldname="Name">evans</Feld>

  <Feldname="Alter">27</Feld>

  <field name="job">Sportler</field>

 </row>

 <Zeile>

  <Feldname="ID">4</Feld>

  <Feldname="Name">Mary</Feld>

  <Feldname="Alter">26</Feld>

  <field name="job">Sänger</field>

 </row>

</Ergebnismenge>

Dies ist das Ende dieses Artikels über die Implementierung von MySQL 5.7 mysqldump Backup und Recovery. Weitere relevante Inhalte zu MySQL mysqldump Backup und Recovery finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Zusammenfassung der Tests für logische MySQL-Sicherungen und -Wiederherstellungen
  • Detaillierte Erläuterung der MySQL-Sicherungs- und Wiederherstellungspraxis von mysqlbackup
  • Eine kurze Analyse der MySQL-Sicherung und -Wiederherstellung
  • Detaillierte Erläuterung der MySQL-Sicherung und -Wiederherstellung
  • MySQL Serie 12 Backup und Wiederherstellung

<<:  Detaillierte Erklärung des Prozesses zum Erstellen eines Image-Servers mit nginx (der Unterschied zwischen Root und Alias)

>>:  Der Prozess zum Erstellen eines Jenkins-Projekts unter Linux (am Beispiel von CentOS 7)

Artikel empfehlen

Maven-Projekte schneller in Docker erstellen

Inhaltsverzeichnis I. Überblick 2. Konventionelle...

JS Cross-Domain-Lösung React-Konfiguration Reverse-Proxy

Domänenübergreifende Lösungen jsonp (get simulier...

50 wunderschöne FLASH-Website-Designbeispiele

Mit Flash konnten Designer und Entwickler umfangr...

Lösung für Nginx, das nicht zur Upstream-Adresse springt

Vorwort Heute bin ich in Nginx auf ein sehr selts...

Beispiel, wie nginx dynamische und statische Trennung implementiert

Inhaltsverzeichnis Stellen Sie nginx auf Server1 ...

Lösung für MySQL-Verbindungsausnahme und Fehler 10061

MySQL ist ein relationales Datenbankverwaltungssy...

Drei Strategien zum Umschreiben von MySQL-Abfrageanweisungen

Inhaltsverzeichnis Komplexe Abfrage und schrittwe...

Eine kurze Analyse der LRU-verknüpften Liste von MySQL

1. Beschreiben Sie kurz die traditionelle LRU-ver...

Eine vorläufige Studie zu JSBridge in Javascript

Inhaltsverzeichnis Der Ursprung von JSBridge Das ...

Wertschätzung des dezenten und eleganten Webdesigns in Schwarz, Weiß und Grau

Unter den klassischen Farbkombinationen kann wohl...

So erhalten Sie die Schnittmenge/Differenz/Vereinigung zweier Mengen in MySQL

Typische MySQL-Szenarien: Schnittmenge und Differ...