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: 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:
|
>>: JavaScript Snake-Implementierungscode
In diesem Artikelbeispiel wird der spezifische Co...
Das Core Asset Management Project erfordert, dass...
In diesem Artikelbeispiel wird der spezifische Co...
Ergebnis: Implementierungscode html <div id=&q...
Bei der Entwicklung für Mobilgeräte tritt häufig ...
Vorwort Der Befehl mv ist die Abkürzung für move ...
Inhaltsverzeichnis 1. Zusatzfunktionen 2. Beispie...
Genau wie der Titel! Die allgemein verwendete Schr...
Als ich früher Join-Tabellenabfragen geschrieben ...
Inhaltsverzeichnis 1. Datentyp 1.1 Warum brauchen...
1. Laden Sie das ElasticSearch 6.4.1-Installation...
Derzeit tritt ein solches Problem auf Bei mir war...
Die aktuelle Anforderung lautet: Es gibt eine Sch...
Die von MySQL erstellte Optimierung besteht im Hi...
Es gibt viele Formularelemente. Hier ist eine kur...