Dieser Artikel bietet Ihnen eine Einführung in die Methode der MySQL-Datenwiederherstellung über Binlog (Codebeispiel). Ich hoffe, dass er für Freunde hilfreich ist Dir. Hilft.
Wenn Sie die relevante Konfiguration von Binlog-Protokollen verstehen, können Sie den Datenwiederherstellungsvorgang der Datenbank einfach über Binlog beherrschen;
MySQL-Protokolldatei
Jede ausgereifte Software verfügt über ein ausgereiftes Protokollsystem. Wenn ein Problem mit der Software auftritt, sind diese Protokolle eine Fundgrube für die Abfrage der Ursache des Problems. Ebenso ist MySQL keine Ausnahme. Es wird auch eine Reihe von Protokollen geben, die den Ausführungsstatus von MySQL aufzeichnen.
MySQL verfügt hauptsächlich über die folgenden Protokolltypen:
Fehlerprotokoll: Zeichnet Fehlerinformationen während des MySQL-Betriebs auf
Allgemeines Abfrageprotokoll: Zeichnen Sie die Anweisungen auf, die MySQL ausführt, einschließlich jeder SQL-Abfrage, Änderung, Aktualisierung usw.
Langsames Abfrageprotokoll: Zeichnen Sie die SQL-Anweisungen auf, deren Abfrage zeitaufwändig ist
Binlog-Protokoll: Zeichnet Datenänderungsdatensätze auf, einschließlich Tabellenerstellung, Datenaktualisierungen usw.
Diese Protokolle müssen im my konfiguriert werden .cnf-Datei, wenn Sie MySQL nicht kennen. Der Pfad der Konfigurationsdatei kann mit dem MySQL-Befehl
mysql --verbose --help|grep -A 1 'Default options’ #该命令会罗列出my.cnf 顺序查找的路径。
binlog log
binlog ist das Binärprotokoll. eine binäre Protokolldatei, die alle Datenbankaktualisierungsanweisungen aufzeichnet, einschließlich Tabellenaktualisierungen und Datensatzaktualisierungen, nämlich die Datenmanipulationssprache (DML). Binlog wird hauptsächlich zur Datenwiederherstellung und Konfiguration der Master-Slave-Replikation verwendet
Datenwiederherstellung: Wenn die Datenbank versehentlich gelöscht wird oder etwas Unbeschreibliches passiert, können die Daten zu einem bestimmten Zeitpunkt über Binlog wiederhergestellt werden.
- Master-Slave-Replikation: Bei einer Datenbankaktualisierung zeichnet die Master-Datenbank über Binlog auf und benachrichtigt die Slave-Datenbank zur Aktualisierung, wodurch sichergestellt wird, dass die Daten der Master-Slave-Datenbank konsistent sind.
- Mysql ist entsprechend seinen Funktionen in Service-Layer-Module und Storage-Engine-Layer-Module unterteilt. Die Service-Schicht ist für die Client-Verbindung, die Optimierung der SQL-Anweisungsverarbeitung und andere Vorgänge verantwortlich Die Speicher-Engine-Schicht ist für die Datenspeicherung und -abfrage verantwortlich. Binlog gehört zum Service-Layer-Modul. Das Protokoll ist unabhängig von der Engine und alle Datenänderungen der Daten-Engine werden im Binlog-Protokoll aufgezeichnet. Wenn die Datenbank abstürzt und die InnoDB-Engine verwendet wird, kann das Binlog-Protokoll auch den Festschreibungsstatus des InnoDB-Redo-Protokolls überprüfen.
Binlog-Protokoll aktiviert
Protokoll aktivierte Methode:
1 Konfiguration hinzufügen
log_bin=ON log_bin_basename=/path/bin-log log_bin_index=/path/bin-log.index
log-bin=/path/bin-log
Führen Sie den Befehl „Flush Logs“ aus
Starten Sie den MySQL-Dienst neu
Binlog-Protokollformat
Durch den Wert des Parameter binlog_format Parameter, Sie können das Binlog-Format festlegen, einschließlich Anweisung, Zeile, gemischt
* statement 格式:记录数据库执行的原始 SQL 语句 * row 格式:记录具体的行的修改,这个为目前默认值 * mixed 格式:因为上边两种格式各有优缺点,所以就出现了 mixed 格式
Binlog-Protokollanzeigetool: mysqlbinlog
Weil Binlog ein ist Binärdatei und kann nicht wie andere Dateien direkt geöffnet und angezeigt werden. MySQL bietet jedoch das Binlog-Anzeigetool mysqlbinlog, das Binärdateien analysieren kann. Natürlich sind die Ergebnisse der Protokollanalyse in verschiedenen Formaten unterschiedlich;
1. statement 格式日志,执行 mysqlbinlog /path/bin-log.000001,可以直接看到原始执行的 SQL 语句 2. row格式日志,则可读性没有那么好,但仍可通过参数使文档更加可读 mysqlbinlog -v /path/bin-log.000001
1. --start-datetime --stop-datetime 解析某一个时间段内的binlog; 2. --start-position --stop-position 解析在两个position之间的binlog;
Verwenden Sie binlog, um Daten wiederherzustellen:
Die Verwendung von Binlog zum Wiederherstellen von Daten besteht im Wesentlichen darin, alle DML-Vorgänge über Binlog zu finden, fehlerhafte SQL-Anweisungen zu entfernen und dann den langen Marsch zu wiederholen, um die Daten wiederherzustellen
Praktische Offline-Operation:
Erstellen Sie eine Datentabelle und fügen Sie den Anfangswert ein
CREATE TABLE `users` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `age` int(8) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; INSERT INTO `users` (`id`, `name`, `age`) VALUES (null, '姓名一', 5);
mysqldump -uroot -p T > /path/xxx.sql; # 备份数据库 show master status; # 查看当前的position位置,此时值为154
INSERT INTO `users` (`id`, `name`, `age`) VALUES (null, '姓名二', 13), (null, '姓名三', 14), (null, '姓名四', 15), (null, '姓名五', 16), (null, '姓名六', 17);
update users set age = 5; INSERT INTO `users` (`id`, `name`, `age`) VALUES (null, '姓名七', 16), (null, '姓名八', 18);
误操作发生在position为706位置,且上次正常操作的结束位置在513 在1152到结尾位置有正常执行的SQL执行
Zusammenfassung
Egal zu welcher Zeit, ein Datenbankabsturz wird die Leute stirnrunzeln und verärgern lassen. Man kann sagen, dass Binlog unter verschiedenen Umständen eine bedauerliche Medizin nach einem Datenbankabsturz und Datenverlust ist. In diesem Artikel wird lediglich ein Datenwiederherstellungsexperiment in einer Offline-Umgebung durchgeführt. Bitte geben Sie mir einen Rat 🎜 >Dieser Artikel endet hier. Weitere Informationen zu MySQL finden Sie in der SpalteMySQL-Tutorial auf der chinesischen PHP-Website! ! !
Das obige ist der detaillierte Inhalt vonEinführung in die Methode der MySQL-Datenwiederherstellung über Binlog (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!