So stellen Sie Daten mit Binlog in MySQL 5.7 wieder her

So stellen Sie Daten mit Binlog in MySQL 5.7 wieder her

Schritt 1: Stellen Sie sicher, dass MySQL Binlog aktiviert hat

Variablen wie „%log_bin%“ anzeigen;
Wenn log_bin eingeschaltet ist, wird es aktiviert.

Bildbeschreibung hier einfügen

Schritt 2: Rufen Sie das Binlog-Dateiverzeichnis auf und suchen Sie die Binärprotokolldatei

Bildbeschreibung hier einfügen

mysql> show binary logs; #Liste der Binärprotokolldateien abrufenmysql> show master status; #Aktuell geschriebene Binärprotokolldatei anzeigenmysql> reset master; Binärprotokoll zurücksetzen 

Bildbeschreibung hier einfügen

Schritt 3: Verwenden Sie den Toolbefehl mysqlbinlog, um die Datenbank-Hinzufügungs-, Lösch-, Änderungs- und Abfragedatensätze anzuzeigen (Sie müssen in das Verzeichnis mysqlbinlog wechseln, um wirksam zu sein) oder geben Sie binlog direkt an

Beispiel 1 : Abfrage des Betriebsprotokolls vom 12.03.2021 14:00:00 bis 12.03.2021 14:03:00. Die Datenbank ist g_xinxiangshop. Geben Sie den folgenden Befehl ein, um die Daten in eine freie TXT-Datei zu schreiben.

/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime="2021-3-12 14:00:00" --stop-datetime="2021-3-12 14:03:00" /usr/local/mysql/data/mysql-bin.000001 > /tmp/binlog.txt

Beispiel 2 : Abfrage des Betriebsprotokolls der Datenbank g_xinxiangshop vom 12.03.2021 14:00:00 bis 12.03.2021 14:03:00 und Filtern der Betriebsaufzeichnungen, die nur die Daten in der Tabelle g_user enthalten. Geben Sie den folgenden Befehl ein, um die Daten in eine freie txt-Datei zu schreiben

/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime="2021-3-12 14:00:00" --stop-datetime="2021-3-12 14:03:00" /usr/local/mysql/data/mysql-bin.000001 | grep g_user > /tmp/binlog.txt

Beispiel 3 : Abfrage des Betriebsprotokolls der Datenbank g_shoptest vom 15.03.2021 15:25:00 bis 15.03.2021 15:35:00 und Ausgabe auf dem Bildschirm
/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_shoptest --start-datetime="2021-3-15 15:25:00" --stop-datetime="2021-3-15 15:35:00" /data/mysql/mysql-bin.000001 |mehr

Bildbeschreibung hier einfügen

Das Bild ist dasselbe wie in Beispiel 1 und Beispiel 2. Sie können den Wiederherstellungsvorgang durchführen, nachdem Sie den Kürzungsvorgang und den Aufzeichnungspunkt gesehen haben!

Schritt 4: Testen Sie die Datenwiederherstellung mit bin_log

Melden Sie sich bei MySQL an
prüfen :

1. Master zurücksetzen; Binlog zurücksetzen und Protokolle neu generieren

Bildbeschreibung hier einfügen

2. Testen Sie eine Tabelle, indem Sie Daten einfügen und diese dann versehentlich löschen.

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

3. Befehl „Bin-Log anzeigen“: Binlog-Ereignisse in „mysql-bin.000001“ anzeigen;

Bildbeschreibung hier einfügen

Wie in der Abbildung oben zu sehen ist, liegen die Löschpunkte zwischen 928 und 1294; die zuvor hinzugefügten Daten liegen zwischen 154 und 520.

Bildbeschreibung hier einfügen

/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000001 --start-position 154 --stop-position 520 | mysql -uroot -p g_shoptest

Überprüfen Sie nach Abschluss der Ausführung, ob die Daten, die Sie gelöscht haben, wieder vorhanden sind.

Bildbeschreibung hier einfügen

Binlog-Befehl

1. Die am häufigsten verwendete Methode besteht darin, die Daten am angegebenen Datenende wiederherzustellen, sodass sie direkt in der Datenbank wiederhergestellt werden können:

mysqlbinlog --start-date="2021-3-12 14:00:00" --stop-date="2021-3-12 14:03:00" mysql_bin.000001 |mysql -uroot -p123456

2. Geben Sie die Start- und Endpositionen an. Aus dem oben generierten Binärprotokoll können wir die Start- und Endpositionen eines Protokolls ermitteln. Wir können das Protokoll während des Wiederherstellungsprozesses von Position A bis Position B angeben. Die folgenden beiden Parameter müssen angegeben werden:

  • --start-position="50" //Angabe ab Position 50
  • --stop-position="100"//Angeben, dass bei Position 100 enden soll

/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000001 --start-position 7903538 --stop-position 7904498|mysql -uroot -p123456

**Allgemeiner FehlerFEHLER: Fehler in Log_event::read_log_event(): „Ungültiges Ereignis im Binärprotokoll gefunden“, data_len: 31, event_type: 35

*Das Problem wird durch die mysqlbinlog-Version verursacht

Zeigen Sie das vom aktuellen Betriebssystem verwendete mysqlbinlog an

Shell> welches mysqlbinlog
/usr/bin/mysqlbinlog

Sehen Sie sich das aktuell von MySQL verwendete mysqlbinlog an

±--------------±------------------+
| Variablenname | Wert |
±--------------±------------------+
| Basisverzeichnis | /usr/local/mysql/ |
±--------------±------------------+

mysql> Variablen wie „basedir“ anzeigen;

Vergleich der beiden Versionen

shell> /usr/bin/mysqlbinlog --version
shell> /usr/local/mysql/bin/mysqlbinlog --version

Um dieses Problem zu lösen, geben Sie einfach den mysqlbinlog-Pfad an

/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime="2021-3-12 14:00:00" --stop-datetime="2021-3-12 14:03:00" /usr/local/mysql/data/mysql-bin.000001 > /tmp/binlog.txt

Dies ist das Ende dieses Artikels über die Verwendung von Binlog zur Wiederherstellung von Daten in MySQL 5.7. Weitere Informationen zur MySQL-Binlog-Wiederherstellung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Wiederherstellung der MySQL-Datenbank (mit dem Befehl mysqlbinlog)
  • Binlog-bezogene Befehle und Wiederherstellungstechniken in MySQL
  • MySQL Binlog-Datenwiederherstellung: Detaillierte Erklärung zum versehentlichen Löschen einer Datenbank
  • So verwenden Sie Binlog zur Datenwiederherstellung in MySQL
  • Bringen Sie Ihnen bei, die Protokolldatei (binlog) der MySQL-Datenbank automatisch wiederherzustellen
  • Detaillierte Schritte zum Wiederherstellen der MySQL-Datenbank über Binlog-Dateien unter Linux
  • Erläutern Sie das Binlog-Protokoll von MySQL und wie Sie das Binlog-Protokoll zum Wiederherstellen von Daten verwenden
  • MySQL verwendet mysqldump + binlog, um die Prinzipanalyse der gelöschten Datenbank vollständig wiederherzustellen
  • MySQL verwendet Binlog-Protokolle zur Implementierung der Datenwiederherstellung
  • So verwenden Sie MySQL Binlog zum Wiederherstellen versehentlich gelöschter Datenbanken

<<:  Facebooks nahezu perfekte Neugestaltung aller Internetdienste

>>:  Detaillierte Erläuterung des Datenproxys und der Ereignisse von VUE

Artikel empfehlen

Schnellstart der Vue3-Dokumentation

Inhaltsverzeichnis 1. Einrichtung 1. Der erste Pa...

Anleitung zur Vermeidung von Docker Win Ping-Fehlern bei Containern

Über Win Docker-Desktop möchte ich mich mit der C...

Das WeChat-Applet realisiert die Funktion zum Hochladen von Bildern

In diesem Artikelbeispiel wird der spezifische Co...

Zusammenfassung der Unterschiede zwischen SQL und NoSQL

Hauptunterschiede: 1. Typ SQL-Datenbanken werden ...

So verwenden Sie Port 80 in Tomcat unter Linux

Anwendungsszenario In vielen Fällen installieren ...

JavaScript-Quellcode für Elimination

JavaScript zum Erreichen der Quellcode-Download-A...

Detaillierte Erläuterung der MySQL-Lösung zur USE DB-Überlastung

Wenn wir auf einen Fehler stoßen, denken wir oft ...

Detaillierte Erklärung des wunderbaren CSS-Attributs MASK

Dieser Artikel stellt eine sehr interessante Attr...

Beispiel zum Verlassen der Schleife in Array.forEach in js

Inhaltsverzeichnis forEach() Methode So springen ...

Schritte eines hervorragenden Registrierungsprozesses

Für eine Website ist dies die grundlegendste Funkt...

JavaScript zählt, wie oft ein Zeichen vorkommt

In diesem Artikelbeispiel wird der spezifische Ja...

mySql SQL-Abfrageoperation für statistische Mengen

Ich werde nicht viel Unsinn erzählen, schauen wir...

Vue implementiert ein einfaches Einkaufswagenbeispiel

In diesem Artikel wird der spezifische Code von V...

So überwachen Sie die Windows-Leistung auf Zabbix

Hintergrundinformationen Ich habe kürzlich einige...