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

Unterschiede zwischen proxy_pass in zwei Modulen in nginx

1. Die proxy_pass -Direktive des Moduls 1.ngx_str...

Installation von mysql-community-server.5.7.18-1.el6 unter centos 6.5

Verwenden Sie den folgenden Befehl, um zu überprü...

MySQL-Datenbankgrundlagen: Eine Zusammenfassung der grundlegenden Befehle

Inhaltsverzeichnis 1. Hilfeinformationen nutzen 2...

So ändern Sie das Datenbankdatenspeicherverzeichnis in MySQL

Vorwort Die Standarddatenbankdatei der MySQL-Date...

Kreisförmiger Fortschrittsbalken mit CSS implementiert

Ergebnisse erzielen Implementierungscode html <...

mysql8.0.23 msi Installation super ausführliches Tutorial

1. Laden Sie MySql herunter und installieren Sie ...

Beispiel für das Einrichten einer Whitelist in Nginx mithilfe des Geomoduls

Ursprüngliche Konfiguration: http { ...... Verbin...

Zusammenfassung einiger gängiger Protokolle in MySQL

Vorwort: Im MySQL-System gibt es viele verschiede...

Canonical ermöglicht Linux-Desktop-Apps mit Flutter (empfohlen)

Das Ziel von Google mit Flutter bestand immer dar...

Analyse des Unterschieds zwischen relativem und absolutem HTML-Pfad

Gerade HTML-Anfänger stehen häufig vor dem Problem...

So erstellen Sie MySQL-Indizes richtig

Die Indizierung ähnelt dem Erstellen bibliografis...

Vue-Komponente kapselt Beispielcode zum Hochladen von Bildern und Videos

Laden Sie zuerst die Abhängigkeiten herunter: cnp...

Detaillierte Erläuterung der bidirektionalen Bindung von Vue

Inhaltsverzeichnis 1. Zwei-Wege-Bindung 2. Wird d...