1. Einleitung Vor einiger Zeit gab es eine Reihe von Fällen, in denen Entwickler aufgrund fehlerhafter Vorgänge in der Testumgebung und in der Produktion versehentlich die Datenbank gelöscht/aktualisiert haben. Für DBAs ist das Zurücksetzen von Daten wirklich ein Problem. Wann immer es darum geht, Online-Daten wiederherzustellen, hat dies zwangsläufig gewisse Auswirkungen auf die Anwendung. In den meisten Fällen löschen Entwickler Daten und aktualisieren die meisten Zeilen aufgrund fehlerhafter Vorgänge. Basierend auf früheren Betriebserfahrungen stellt dieser Artikel gängige Wiederherstellungsmethoden vor. 2. Gängige Wiederherstellungsmethoden 2.1 Wiederherstellen aus einem Backup Voraussetzung für die Verwendung dieser Methode ist, dass Sie über den aktuellsten Sicherungssatz verfügen oder die Binärprotokollposition oder GTID kennen, an der der Fehlervorgang gestartet wurde. Verwenden Sie den Sicherungssatz zum Wiederherstellen auf dem Zwischencomputer und verwenden Sie dann die Slave-Funktion von MySQL.
bis_Option:
Stellen Sie die Daten auf einer temporären Instanz wieder her, sichern Sie sie vor dem versehentlichen Löschen und Aktualisieren und stellen Sie sie auf der alten Instanz wieder her. Am besten ist es, die betroffenen Tabellen bei der Datenwiederherstellung nicht beschreibbar zu machen, da es sonst schwierig wird, die gewünschten Ergebnisse zu erzielen. Beispielsweise wird a=2 fälschlicherweise auf a=4 aktualisiert und während der Wiederherstellungsphase auf a=7 aktualisiert und nach der Wiederherstellung wieder auf a=2 zurückgesetzt. Diese Wiederherstellungsmethode ist nicht für die Wiederherstellung einer großen Anzahl von Datenbanken geeignet und erfordert eine temporäre Instanz. 2.2 Wiederherstellen mit dem Open Source-Tool binlog2sql binlog2sql ist ein von Dianpings DBA entwickeltes Tool. Es basiert auf der Analyse von Binlog, um das Löschen wiederherzustellen und einzufügen. Außerdem werden das Feld „Aktualisierungswert festlegen“ und die Where-Bedingung ausgetauscht, um die Daten wiederherzustellen. Nutzungsbeschränkungen: Das MySQL-Binlog-Format muss eine Zeileninstallation sein git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql pip install -r Anforderungen.txt Verwendung Verwendung: binlog2sql.py [-h HOST] [-u BENUTZER] [-p PASSWORT] [-P PORT] [--start-file STARTDATEI] [--start-position STARTPOS] [--stop-file ENDFILE] [--stop-position ENDPOS] [--start-datetime STARTZEIT] [--stop-datetime STOPPZEIT] [--stopp-niemals] [-d [DATENBANKEN [DATENBANKEN ...]]] [-t [TABELLEN [TABELLEN ...]]] [-K] [-B] [--helfen] Beispiel Tabelle Flashback erstellen( id int(11) ungleich null auto_increment Primärschlüssel , stat int(11) nicht null Standard 1 ) Engine=InnoDB Standardzeichensatz=UTF8; in Flashback einfügen (stat) Werte (2),(3),(4),(7),(9),(22),(42),(33),(66),(88) Fehlbedienung
Schritte zur Datenwiederherstellung 1. Holen Sie sich das Binlog, in dem sich das fehlerhafte DML befindet. Entwickler kennen das spezifische Binlog jedoch im Allgemeinen nicht. Sie wissen nur, wann der fehlerhafte Vorgang aufgetreten ist. Binlog2sql unterstützt die Wiederherstellung nach Zeitbereich. mysql> Master-Protokolle anzeigen; +------------------+------------+ | Protokollname | Dateigröße | +------------------+------------+ |mysql-bin.000009 | 177 | |mysql-bin.000010 | 464 | |mysql-bin.000011 | 8209 | +------------------+------------+ 3 Zeilen im Satz (0,00 Sek.) In diesem Beispiel ist binlog mysql-bin.000011 2. Verwenden Sie binlog2sql, um Daten wiederherzustellen. Analysieren Sie zunächst das Binlog, um die Startposition der Update-Anweisung zu ermitteln. In diesem Beispiel starten Sie bei 5087 und enden bei 5428. Führen Sie den Befehl aus python binlog2sql.py -h127.0.0.1 -P3307 -udba -p'dbadmin' -dyang -tflashback --start-file='mysql-bin.000011' Verwenden Sie den Parameter binlog2sql -B, um das wiederhergestellte SQL abzurufen Führen Sie das erhaltene SQL für die Datenbank aus. Wenn in der Produktionsumgebung tatsächlich ein Problem auftritt, kommunizieren Sie unbedingt mit dem Entwickler und bestätigen Sie die genauen Datensätze, die wiederhergestellt werden müssen. mysql> wähle * aus Flashback; +----+------+ | Ich würde | Statistik | +----+------+ | 1 | 2 | | 2 | 3 | | 3 | 4 | | 4 | 7 | | 5 | 9 | | 6 | 22 | | 7 | 42 | | 8 | 33 | | 9 | 66 | | 10 | 88 | +----+------+ 10 Zeilen im Satz (0,00 Sek.) Funktionen von binlog2sql: Der MySQL-Server muss gestartet werden und die Vorteile können im Offlinemodus nicht analysiert werden (im Vergleich zu mysqlbinlog). Reine Python-Entwicklung, einfach zu installieren und zu verwenden. Es verfügt über Flashback- und No-Primary-Key-Parsing-Modi, sodass keine Patches erforderlich sind. Der Flashback-Modus ist besser für Flashback-Kämpfe geeignet. Um das Verständnis und Debuggen zu erleichtern, führen Sie eine Analyse in Standard-SQL durch. Der Code lässt sich leicht ändern und kann eine individuellere Analyse unterstützen. Tatsächlich bietet MySQL auch einen Parameter sql_safe_updates, der Lösch- und Aktualisierungsanweisungen ohne Where-Bedingungen verhindert. Informationen zur spezifischen Verwendung und Einführung finden Sie in der offiziellen Einführung zu MySQL. Abschluss In diesem Artikel werden kurz zwei Methoden zur Wiederherstellung von Daten nach fehlerhaften Vorgängen vorgestellt. Tatsächlich gibt es noch andere Möglichkeiten, z. B. die Verwendung von mysqlbinlog zum Schreiben von Skripten zur Datenwiederherstellung, die Verwendung von Flashback-Patches oder Qunars Inception usw. Sie können sie weiter studieren. Der Schutz der Datensicherheit ist die grundlegende Verantwortung eines DBA. Jedes Jahr kommt es zu zahlreichen Tragödien durch versehentliches Löschen von Daten. Ich hoffe, dass jeder DBA seine Lebensader schützen kann. Oben sind die Details zu zwei Methoden zur Wiederherstellung von MySQL-Daten aufgeführt. Weitere Informationen zur Wiederherstellung von MySQL-Daten finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: So installieren Sie Docker mithilfe von Skripten unter Linux Centos
>>: Vue verwendet ECharts zur Implementierung von Liniendiagrammen und Kreisdiagrammen
Inhaltsverzeichnis Vorne geschrieben Lösung 1: Gl...
Dieser Artikel beschreibt die MySQL-Einzeltabelle...
Founder Type Library ist eine Schriftbibliothek, ...
Das Flex-Layout ist zweifellos einfach und leicht...
Schauen Sie sich zunächst das Wirkungsdiagramm an...
In diesem Artikel wird der spezifische JavaScript...
Ich habe kürzlich bei einem praktischen Trainings...
Nachdem wir im vorherigen Artikel mit OpenSSL ein...
Ich habe vor Kurzem in einer virtuellen VMware-Ma...
https-Basisport 443. Er wird für etwas verwendet,...
Inhaltsverzeichnis Vorwort 1. Binärer Baum 1.1. D...
Inhaltsverzeichnis Hintergrund Zieleffekt Ideen e...
Ein Datensatz eines Online-MySQL-Transaktionsprob...
Um die JSON-Daten in einem schönen eingerückten F...
Holen Sie sich das Mongo-Image sudo docker pull m...