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.
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:
|
<<: Implementierungsprinzip und Nutzungsanalyse des Apache Bench-Stresstest-Tools
>>: Erste Erkundung gängiger Befehle für Docker-Anfänger
Inhaltsverzeichnis In vue2 In vue3 Hinweise zur E...
Docker ist wirklich cool, vor allem, weil es im V...
Wenn Sie Eingabe und Bild in dieselbe Zeile setzen...
binlog ist eine binäre Protokolldatei, die alle D...
Inhaltsverzeichnis 1. Verbindung zum Tencent Clou...
Inhaltsverzeichnis Vorwort Dynamisches SQL 1. Sch...
„Der große Fluss fließt nach Osten, die Wellen sp...
Vorwort Ich hatte kürzlich ein Problem bei der Ar...
Lassen Sie uns Nginx installieren und ausprobiere...
Aufgrund der anfänglichen Partitionierung des Sys...
Bei meinen letzten Studien habe ich einige Layout...
Navigation und andere Dinge werden bei der täglic...
Kontroverse um Nofollow Zwischen Zac und Guoping ...
Inhaltsverzeichnis 1. Umweltvorbereitung 1.1 Betr...
Der zu erzielende Effekt: Wenn die Maus auf das k...