Centos7 implementiert Beispielcode zum Wiederherstellen von Daten basierend auf MySQL-Protokollen

Centos7 implementiert Beispielcode zum Wiederherstellen von Daten basierend auf MySQL-Protokollen

Einführung

Binlog-Protokolle, also binäre Protokolldateien, werden verwendet, um SQL-Anweisungsinformationen zu Benutzervorgängen in der Datenbank aufzuzeichnen. Wenn Daten versehentlich gelöscht werden, können wir die gelöschten Daten über Binlog-Protokolle wiederherstellen. Die Methoden zur Wiederherstellung von Daten werden in die traditionelle Wiederherstellung binärer Dateien und die GTID-basierte Wiederherstellung binärer Dateien unterteilt.

Vorbereitende Vorbereitung

Bereiten Sie eine virtuelle Centos7-Maschine vor, schalten Sie die Firewall und Selinux aus, konfigurieren Sie die IP-Adresse, synchronisieren Sie die Systemzeit und installieren Sie die MySQL-Datenbank

Herkömmliche binäre Protokolldaten wiederherstellen

Ändern der Konfigurationsdatei

[root@localhost ~]# vi /etc/my.cnf
Server-ID = 1
log-bin=Binlog

#Starten Sie den Datenbankdienst neu [root@localhost ~]# systemctl restart mysqld

Betriebsdatenbank

mysql> Datenbank mydb erstellen, Zeichensatz utf8mb4;
mysql> verwende mydb;
mysql> Tabelle erstellen Test(ID int)Engine=innodb Zeichensatz=utf8mb4;
mysql> in Testwerte einfügen (1);
mysql> in Testwerte einfügen (2);
mysql> in Testwerte einfügen (3);
mysql> in Testwerte einfügen (4);
mysql> festschreiben;
mysql> Testsatz-ID aktualisieren=10, wobei ID=4;
mysql> festschreiben;
mysql> wähle * aus Test;
+------+
|Ich würde|
+------+
| 1 |
| 2 |
| 3 |
| 10 |
+------+
4 Zeilen im Satz (0,00 Sek.)
mysql> Datenbank mydb löschen;

Binärprotokollinformationen anzeigen

mysql> Masterstatus anzeigen\G;
*************************** 1. Reihe ***************************
       Datei: binlog.000001
     Position: 1960
   Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Ausgeführtes_Gtid_Set: 
1 Zeile im Satz (0,00 Sek.)

 
#Finden Sie die Punkte zum Erstellen und Löschen von Datenbanken, nämlich 219 und 1868
mysql> Binlog-Ereignisse in „binlog.000001“ anzeigen;
+---------------+------+----------------+-----------+-------------+--------------------------------------------------------------------+
| Logname | Pos | Ereignistyp | Server-ID | End_log_pos | Info |
+---------------+------+----------------+-----------+-------------+--------------------------------------------------------------------+
| binlog.000001 | 219 | Abfrage | 1 | 329 | Datenbank mydb charset utf8mb4 erstellen |
| binlog.000001 | 1868 | Abfrage | 1 | 1960 | Datenbank mydb löschen |
+---------------+------+----------------+-----------+-------------+--------------------------------------------------------------------+

Informationen als Binärprotokoll speichern

[root@localhost ~]# mysqlbinlog --start-position=219 --stop-position=1868 /var/lib/mysql/binlog.000001 > /tmp/binlog.sql

Daten wiederherstellen

#Deaktivieren Sie die Binärprotokollierung vorübergehend, um doppelte Protokollierung zu vermeiden mysql> set sql_log_bin=0;
#Daten wiederherstellenmysql> Quelle /tmp/binlog.sql
#Binäres Protokollieren neu starten mysql> set sql_log_bin=1;

Überprüfen Sie den Datenwiederherstellungsstatus

mysql> Datenbanken anzeigen;
+--------------------+
| Datenbank |
+--------------------+
| Informationsschema |
| meinedb |
|mysql |
| Leistungsschema |
|System|
+--------------------+
5 Zeilen im Satz (0,00 Sek.)

mysql> verwende mydb;
Datenbank geändert
mysql> wähle * aus Test;
+------+
|Ich würde|
+------+
| 1 |
| 2 |
| 3 |
| 10 |
+------+
4 Zeilen im Satz (0,00 Sek.),

Wiederherstellen von Daten basierend auf dem GTID-Binärprotokoll

Ändern der Konfigurationsdatei

[root@localhost ~]# vi /etc/my.cnf
Server-ID = 1
log-bin=Binlog
gtid_mode=EIN
enforce_gtid_consistency=true
log_slave_updates=1

#Starten Sie den Datenbankdienst neu [root@localhost ~]# systemctl restart mysqld

Betriebsdatenbank

mysql> Datenbank mydb1 erstellen;
mysql> verwende mydb1;
Datenbank geändert
mysql> Tabelle erstellen t1(id int)engine=innodb charset=utf8mb4;
mysql> in t1-Werte einfügen (1);
mysql> in t1-Werte einfügen (2);
mysql> in t1-Werte einfügen (3);
mysql> in t1-Werte einfügen (11);
mysql> in t1-Werte einfügen (12);
mysql> festschreiben;
mysql> wähle * aus t1;
+------+
|Ich würde|
+------+
| 1 |
| 2 |
| 3 |
| 11 |
| 12 |
+------+
5 Zeilen im Satz (0,00 Sek.)
mysql> Datenbank mydb1 löschen;

Binärprotokollinformationen anzeigen

mysql> Masterstatus anzeigen\G;
*************************** 1. Reihe ***************************
       Datei: binlog.000003
     Position: 1944
   Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Ausgeführtes_Gtid_Set: 51d3db57-bf69-11ea-976c-000c2911a022:1-8
1 Zeile im Satz (0,00 Sek.)

mysql> Binlog-Ereignisse in „binlog.000003“ anzeigen;
+---------------+------+----------------+-----------+-------------+-------------------------------------------------------------------+
| Logname | Pos | Ereignistyp | Server-ID | End_log_pos | Info |
+---------------+------+----------------+-----------+-------------+-------------------------------------------------------------------+
| binlog.000003 | 154 | Gtid | 1 | 219 | SET @@SESSION.GTID_NEXT= '51d3db57-bf69-11ea-976c-000c2911a022:1' |
| binlog.000003 | 219 | Abfrage | 1 | 316 | Datenbank mydb1 erstellen |
| binlog.000003 | 1784 | Gtid | 1 | 1849 | SET @@SESSION.GTID_NEXT= '51d3db57-bf69-11ea-976c-000c2911a022:8' |
| binlog.000003 | 1849 | Abfrage | 1 | 1944 | Datenbank mydb1 löschen |
+---------------+------+----------------+-----------+-------------+-------------------------------------------------------------------+

Informationen als Binärprotokoll speichern

#Transaktionsdatensatz 8 dient zum Löschen der Datenbank, daher müssen nur die Transaktionsdatensätze 1-7 wiederhergestellt werden [root@localhost ~]# mysqlbinlog --skip-gtids --include-gtids='51d3db57-bf69-11ea-976c-000c2911a022:1-7' /var/lib/mysql/binlog.000003 > /tmp/gtid.sql

Parameterbeschreibung:
--include-gtids: Transaktionen einschließen
--exclude-gtids: Transaktionen ausschließen
--skip-gtids: Transaktionen überspringen

Daten wiederherstellen

mysql> setze sql_log_bin=0;
mysql> Quelle /tmp/gtid.sql
mysql> setze sql_log_bin=1;

Überprüfen Sie den Datenwiederherstellungsstatus

mysql> Datenbanken anzeigen;
+--------------------+
| Datenbank |
+--------------------+
| Informationsschema |
| meinedb |
| meinedb1 |
|mysql |
| Leistungsschema |
|System|
+--------------------+
6 Zeilen im Satz (0,00 Sek.)

mysql> verwende mydb1;
Datenbank geändert
mysql> wähle * aus t1;
+------+
|Ich würde|
+------+
| 1 |
| 2 |
| 3 |
| 11 |
| 12 |
+------+
5 Zeilen im Satz (0,00 Sek.)

Dies ist das Ende dieses Artikels über den Beispielcode zur Implementierung der MySQL-protokollbasierten Datenwiederherstellung auf Centos7. Weitere Informationen zu Centos7 MySQL-Protokollwiederherstellungsdaten 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:
  • Erklärung von MySQL-Fehlerausnahmen im Linux-Hintergrundprotokoll (empfohlen)
  • So aktivieren Sie die Protokollverwaltungsfunktion nach der Installation von MySQL unter Windows und Linux

<<:  Detaillierte Erklärung der grundlegenden Verwendung von MySQL-Triggern [Erstellen, Anzeigen, Löschen usw.]

>>:  JavaScript Snake-Implementierungscode

Artikel empfehlen

Vue implementiert kleine Suchfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Vue-Element el-transfer fügt Drag-Funktion hinzu

Das Core Asset Management Project erfordert, dass...

jQuery implementiert einen Zeitselektor

In diesem Artikelbeispiel wird der spezifische Co...

Preistabelle mit CSS3 implementiert

Ergebnis: Implementierungscode html <div id=&q...

Der beste Weg, um den 1px-Rand auf Mobilgeräten zu lösen (empfohlen)

Bei der Entwicklung für Mobilgeräte tritt häufig ...

Erweiterte Verwendungsbeispiele für den Befehl mv in Linux

Vorwort Der Befehl mv ist die Abkürzung für move ...

Über die 4 Zusatzfunktionen von Vuex

Inhaltsverzeichnis 1. Zusatzfunktionen 2. Beispie...

Wissen Sie, wie Sie das Laden von Webfonts optimieren können?

Genau wie der Titel! Die allgemein verwendete Schr...

Detaillierte Erklärung der Datentypen in den JavaScript-Grundlagen

Inhaltsverzeichnis 1. Datentyp 1.1 Warum brauchen...

Detailliertes Tutorial zur Installation von ElasticSearch 6.4.1 auf CentOS7

1. Laden Sie das ElasticSearch 6.4.1-Installation...

Lösung für das Problem „Linux QT Kit fehlt“ und „Version leer“

Derzeit tritt ein solches Problem auf Bei mir war...

Vue + SSM realisiert den Vorschaueffekt beim Hochladen von Bildern

Die aktuelle Anforderung lautet: Es gibt eine Sch...

Lösungen für Probleme bei der Leistungsoptimierung von MySQL-Indizes

Die von MySQL erstellte Optimierung besteht im Hi...

Zusammenfassung der Verwendung von Element-Formularelementen

Es gibt viele Formularelemente. Hier ist eine kur...