Detaillierte Erläuterung der MySQL-Sicherung und -Wiederherstellung

Detaillierte Erläuterung der MySQL-Sicherung und -Wiederherstellung

Vorwort:

In den vorherigen Artikeln wurde die Verwendung verschiedener MySQL-Anweisungssyntaxen und Kenntnisse im Zusammenhang mit Benutzerrechten vorgestellt. In diesem Artikel werden hauptsächlich Kenntnisse im Zusammenhang mit der Sicherung und Wiederherstellung von MySQL-Datenbankdaten erläutert, wobei der Schwerpunkt auf der logischen Sicherung liegt und die Verwendung des Tools mysqldump sowie Wiederherstellungsmethoden vorgestellt werden.

Hier ist eine kurze Einführung in die Konzepte der physischen und logischen Sicherung:
Physische Sicherung: Sichern Sie Datendateien und speichern Sie physische Datenbankdateien in einem bestimmten Verzeichnis. Physische Backups können schnell wiederhergestellt werden, beanspruchen aber viel Speicherplatz. In MySQL können Sie das Tool xtrabackup verwenden, um physische Backups durchzuführen.
Logische Sicherung: Nutzen Sie Tools um Datenbankobjekte zu exportieren und in Sicherungsdateien zusammenzufassen. Die Wiederherstellung logischer Backups dauert zwar länger, sie benötigen jedoch weniger Speicherplatz und sind flexibler. Das am häufigsten verwendete logische Sicherungstool in MySQL ist mysqldump.

1. Sichern Sie alle Datenbanken

Wenn Sie die gesamte Instanz mit mysqldump sichern möchten, können Sie den Parameter --all-databases oder -A verwenden:

mysqldump -uroot -pxxxxxx --all-databases > /tmp/all_database.sqlmysqldump -uroot -pxxxxxx -A > /tmp/all_database.sql

2. Sichern Sie einige Datenbanken

Manchmal müssen wir nur bestimmte Datenbanken sichern. In diesem Fall können wir den Parameter --databases oder -B verwenden, gefolgt vom Datenbanknamen, wobei mehrere Datenbanken durch Leerzeichen getrennt sind.

mysqldump -uroot -pxxxxxx --databases testdb1 testdb2 > /tmp/testdb.sqlmysqldump -uroot -pxxxxxx -B testdb1 testdb2 > /tmp/testdb.sql

3. Sichern Sie einige Tabellen

Normalerweise besteht auch die Notwendigkeit, einige Tabellen zu sichern. Um beispielsweise vor dem Ändern der Tabelle ein Backup zu erstellen, können wir dies folgendermaßen tun:

Sichern Sie nur die Tabelle test_tb in der Bibliothek testdb

mysqldump -uroot -pxxxxxx testdb test_tb > /tmp/test_tb.sql#Mehrere Tabellen sichern mysqldump -uroot -pxxxxxx testdb tb1 tb2 tb3 > /tmp/tb.sql

4. Sichern Sie einen Teil der Daten in einer einzigen Tabelle

Manchmal enthält eine Tabelle eine große Datenmenge und wir benötigen nur einen Teil der Daten. Was sollen wir also tun? In diesem Fall können Sie die Option --where verwenden. wobei gefolgt wird von den Bedingungen, die erfüllt werden müssen. Wenn wir beispielsweise nur Daten in der Tabelle tb1 benötigen, deren Erstellungszeitpunkt größer als 2019-08-01 ist, können wir sie folgendermaßen exportieren:

mysqldump -uroot -pxxxxxx testdb tb1 --where="Erstellungszeit >= '2019-08-01 00:00:00' " > /tmp/tb1.sql

5. Bestimmte Tabellen vom Export ausschließen

Wenn wir eine Datenbank sichern möchten, einige Tabellen jedoch eine große Datenmenge enthalten oder nicht eng mit dem Unternehmen verbunden sind, können wir erwägen, diese Tabellen auszuschließen. Ebenso kann die Option --ignore-table diese Funktion ausführen.

mysqldump -uroot -pxxxxxx testdb --ignore-table=testdb.tb1 > /tmp/testdb.sql

6. Sichern Sie nur die Struktur oder nur die Daten

Um nur die Struktur zu sichern, können Sie die Option --no-data, abgekürzt -d, verwenden; um nur die Daten zu sichern, können Sie die Option --no-create-info, abgekürzt -t, verwenden.

mysqldump -uroot -pxxxxxx testdb --no-data > /tmp/testdb_jiegou.sqlmysqldump -uroot -pxxxxxx testdb --no-create-info > /tmp/testdb_data.sql

7. Das Backup umfasst gespeicherte Prozeduren, Funktionen und Ereignisse

Standardmäßig enthalten mysqldump-Backups keine gespeicherten Prozeduren, benutzerdefinierten Funktionen und Ereignisse. Wir können die Option --routines oder -R verwenden, um gespeicherte Prozeduren und Funktionen zu sichern, und den Parameter --events oder -E, um Ereignisse zu sichern. Beispielsweise möchten wir die gesamte Testdb-Datenbank sichern, einschließlich gespeicherter Prozeduren und Ereignisse:

mysqldump -uroot -pxxxxxx -R -E --databases testdb > /tmp/testdb.sql

8. Sicherung in Form von Transaktionen

Wenn wir die Datenkonsistenz sicherstellen und Tabellensperren während des Dump-Prozesses reduzieren möchten, können wir die Option --single-transaction verwenden. Diese Option ist für InnoDB-Datentabellen sehr nützlich und sperrt die Tabelle nicht.

mysqldump -uroot -pxxxxxx --single-transaction --databases testdb > /tmp/testdb.sql

9. Vollständige Sicherung und Wiederherstellung

Wenn wir das vollständige Backup von gestern haben und es jetzt wiederherstellen möchten, können wir Folgendes tun:

mysql -uroot -pxxxxxx < /tmp/alle_datenbank.sql

10. Wiederherstellen einer einzelnen Datenbank aus einem vollständigen Backup

Es kann eine solche Anforderung geben, z. B. möchten wir nur eine bestimmte Bibliothek wiederherstellen, haben aber die Sicherung der gesamten Instanz. Zu diesem Zeitpunkt fragen wir uns, ob wir die Sicherung einer einzelnen Bibliothek von der vollständigen Sicherung trennen können. Die Antwort ist ja. Die folgende einfache Shell kann Ihnen helfen:

sed -n '/^-- Aktuelle Datenbank: `testdb`/,/^-- Aktuelle Datenbank: `/p' all_databases.sql > testdb.sql

Nach Abschluss der Trennung können wir testdb.sql importieren, um die einzelne Datenbank wiederherzustellen

11. Stellen Sie eine einzelne Tabelle aus einer einzelnen Datenbanksicherung wieder her

Diese Anforderung ist recht häufig. Schließlich ist die Wiederherstellung einer einzelnen Datenbank oder einer vollständigen Wiederherstellung mit viel Aufwand verbunden und die Wiederherstellungszeit ist relativ lang. Wenn wir beispielsweise wissen, welche Tabelle falsch bedient wurde, können wir sie mithilfe der Wiederherstellung einer einzelnen Tabelle wiederherstellen. Beispielsweise haben wir jetzt ein Backup der gesamten Testdb-Datenbank, aber aufgrund eines Fehlers in der tb1-Tabelle müssen wir diese Tabelle separat wiederherstellen. Dann können wir dies tun

cat testdb.sql | sed -e '/./{H;$!d;}' -e 'x;/CREATE TABLE `tb1`/!d;q' > /tmp/tb1_jiegou.sqlcat testdb.sql | grep --ignore-case 'insert into `tb1`' > /tmp/tb1_data.sql

Verwenden Sie die Shell-Syntax, um die Anweisungen zum Erstellen von Tabellen und Einfügen von Daten zu trennen, und exportieren Sie sie dann nacheinander, um die Wiederherstellung abzuschließen.

Zusammenfassen:

Dieser Artikel beschreibt Sicherungs- und Wiederherstellungsmethoden in verschiedenen Szenarien. In der Produktion kann es komplexere Szenarien geben, die Flexibilität erfordern.

Oben finden Sie eine ausführliche Erläuterung der MySQL-Sicherung und -Wiederherstellung. Weitere Informationen zur MySQL-Sicherung und -Wiederherstellung finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

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
  • Implementierung der MySQL5.7 mysqldump-Sicherung und -Wiederherstellung
  • Eine kurze Analyse der MySQL-Sicherung und -Wiederherstellung
  • MySQL Serie 12 Backup und Wiederherstellung

<<:  Implementierungsprinzip und Nutzungsanalyse des Apache Bench-Stresstest-Tools

>>:  Erste Erkundung gängiger Befehle für Docker-Anfänger

Artikel empfehlen

Detaillierte Erklärung zweier zu beachtender Punkte bei vue3: Setup

Inhaltsverzeichnis In vue2 In vue3 Hinweise zur E...

Verwenden Sie die vertikale Ausrichtung, um Eingabe und Bild auszurichten

Wenn Sie Eingabe und Bild in dieselbe Zeile setzen...

Detaillierte Erklärung der MySQL-Binlog-Verwendung

binlog ist eine binäre Protokolldatei, die alle D...

Umfassende Erklärung zu dynamischem SQL von MyBatis

Inhaltsverzeichnis Vorwort Dynamisches SQL 1. Sch...

Was die Website am meisten braucht, ist eine Verbesserung der Erfahrung der Zielgruppe

„Der große Fluss fließt nach Osten, die Wellen sp...

Docker-Installation Nginx Tutorial Implementierung Abbildung

Lassen Sie uns Nginx installieren und ausprobiere...

So ändern Sie den Standardspeicherort von Docker-Images (Lösung)

Aufgrund der anfänglichen Partitionierung des Sys...

Beispielcode zum Mischen von Float und Margin in CSS

Bei meinen letzten Studien habe ich einige Layout...

Vue implementiert eine gleitende Navigation oben links und rechts

Navigation und andere Dinge werden bei der täglic...

Eine kurze Diskussion über die Verwendung und Analyse von Nofollow-Tags

Kontroverse um Nofollow Zwischen Zac und Guoping ...

JavaScript realisiert Lupen-Spezialeffekte

Der zu erzielende Effekt: Wenn die Maus auf das k...