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

So verwenden Sie Nexus, um JAR-Pakete zu privaten Servern hinzuzufügen

Warum müssen wir einen privaten Nexus-Server erst...

Vue führt weltweit SCSS (Mixin) ein

Inhaltsverzeichnis 1. mixin.scss 2. Einzeldateinu...

Tutorial zur Installation von MySQL 5.7.18 mit einem RPM-Paket

System: CentOS 7 RPM-Pakete: mysql-community-clie...

So lassen sich Python-Skripte direkt unter Ubuntu ausführen

Nehmen wir als Beispiel das Übersetzungsprogramm....

So erstellen Sie einen K8S-Cluster und installieren Docker unter Hyper-V

Wenn Sie das Win10-System installiert haben und e...

So verwenden Sie die Glog-Protokollbibliothek in einer Linux-Umgebung

Linux-Bibliothek generieren Die Linux-Version ver...

HTML+CSS zum Erstellen einer Schaltfläche im Cyberpunk-Stil

Erster Blick auf die Wirkung: Vorwort: Auf diese ...