MySQLs Aktualisierungsvorgänge für Daten werden im allgemeinen Abfrageprotokoll und im Binärprotokoll aufgezeichnet. Das allgemeine Abfrageprotokoll wird zum Aufzeichnen aller Benutzervorgänge verwendet, einschließlich des Startens und Beendens von MySQL-Diensten, Aktualisierungsanweisungen und Abfrageanweisungen usw.; das Binärprotokoll zeichnet verschiedene Datenbankvorgänge in binärer Form auf, zeichnet jedoch keine Abfrageanweisungen auf.
(Empfohlenes Tutorial: MySQL-Video-Tutorial)
Protokoll ist ein wichtiger Teil der Datenbank, der hauptsächlich zum Aufzeichnen des Betriebsstatus, des täglichen Betriebs und der Fehlerinformationen der Datenbank verwendet wird.
MySQL General Query Log (Allgemeines Abfrageprotokoll)
Das General Query Log (Allgemeines Abfrageprotokoll) wird zum Aufzeichnen aller Benutzervorgänge verwendet, einschließlich Starten und Herunterfahren von MySQL-Diensten, Aktualisierungsanweisungen und Abfrageanweisungen usw.
Standardmäßig ist die allgemeine Abfrageprotokollfunktion deaktiviert. Sie können überprüfen, ob das allgemeine Abfrageprotokoll aktiviert ist, indem Sie den folgenden Befehl ausführen:
mysql> SHOW VARIABLES LIKE '%general%'; +------------------+----------------------------------------------------------------+ | Variable_name | Value | +------------------+----------------------------------------------------------------+ | general_log | OFF | | general_log_file | C:\ProgramData\MySQL\MySQL Server 5.7\Data\LAPTOP-UHQ6V8KP.log | +------------------+----------------------------------------------------------------+ 2 rows in set, 1 warning (0.01 sec)
Anhand der Ergebnisse können wir erkennen, dass das allgemeine Abfrageprotokoll deaktiviert ist und die Variable general_log_file den Speicherort der allgemeinen Abfrageprotokolldatei angibt.
Starten und richten Sie das allgemeine Abfrageprotokoll ein
In MySQL können Sie das allgemeine Abfrageprotokoll aktivieren, indem Sie die Protokolloption in der MySQL-Konfigurationsdatei hinzufügen. Das Format lautet wie folgt:
[mysqld] log=dir/filename
Unter ihnen ist das Verzeichnis Der Parameter gibt den Speicherpfad des allgemeinen Abfrageprotokolls an. Der Parameter gibt den Dateinamen des Protokolls an. Wenn Sie keinen Speicherpfad angeben, wird das allgemeine Abfrageprotokoll standardmäßig im Datenordner der MySQL-Datenbank gespeichert. Wenn Sie keinen Dateinamen angeben, lautet der Standarddateiname hostname.log, wobei hostname den Hostnamen darstellt.
Das allgemeine Abfrageprotokoll anzeigen
Wenn Sie die letzten Vorgänge des Benutzers wissen möchten, können Sie das allgemeine Abfrageprotokoll anzeigen. Allgemeine Abfrageprotokolle werden in Form von Textdateien gespeichert. Sie können normale Textdateien verwenden, um den Protokollinhalt dieses Typs anzuzeigen.
Beispiel 1
Zuerst prüfen wir, ob die allgemeine Abfrageprotokollfunktion aktiviert ist, und fragen dann die Datensätze der Tabelle tb_student ab. Der SQL-Befehl und der Ausführungsprozess sind wie folgt:
mysql> SHOW VARIABLES LIKE '%general%'; +------------------+----------------------------------------------------------------+ | Variable_name | Value | +------------------+----------------------------------------------------------------+ | general_log | ON | | general_log_file | C:\ProgramData\MySQL\MySQL Server 5.7\Data\LAPTOP-UHQ6V8KP.log | +------------------+----------------------------------------------------------------+ 2 rows in set, 1 warning (0.02 sec) mysql> use test; Database changed mysql> SELECT * FROM tb_student; +----+--------+ | id | name | +----+--------+ | 1 | Java | | 2 | MySQL | | 3 | Python | +----+--------+
3 Zeilen im Satz (0,06 Sek.)
Öffnen Sie nach erfolgreicher Ausführung das allgemeine Abfrageprotokoll. Der Protokollname lautet hier LAPTOP-UHQ6V8KP.log. Das Folgende ist Teil des allgemeinen Abfrageprotokolls.
C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe, Version: 5.7.29-log (MySQL Community Server (GPL)). started with: TCP Port: 3306, Named Pipe: MySQL Time Id Command Argument 2020-05-29T06:43:44.382878Z 7 Quit 2020-05-29T06:44:10.001382Z 8 Connect root@localhost on using SSL/TLS 2020-05-29T06:44:10.007532Z 8 Query select @@version_comment limit 1 2020-05-29T06:44:11.748179Z 8 Query SHOW VARIABLES LIKE '%general%' 2020-05-29T06:44:25.487472Z 8 Query SELECT DATABASE() 2020-05-29T06:44:25.487748Z 8 Init DB test 2020-05-29T06:44:35.390523Z 8 Query SELECT * FROM tb_student
Man erkennt, dass das Protokoll alle Verhaltensweisen des Kunden sehr deutlich aufzeichnet.
MySQL-Binärprotokoll (Binärprotokoll)
Binärprotokoll (Binärprotokoll), auch Änderungsprotokoll (Aktualisierungsprotokoll) genannt, ist ein sehr wichtiges Protokoll in MySQL. Es wird hauptsächlich zum Aufzeichnen von Änderungen in der Datenbank verwendet, dh DDL- und DML-Anweisungen von SQL-Anweisungen, und umfasst keine Datensatzabfragevorgänge.
Wenn die MySQL-Datenbank unerwartet stoppt, können Sie mithilfe der Binärprotokolldatei sehen, welche Vorgänge der Benutzer ausgeführt hat und welche Änderungen an der Datenbankserverdatei vorgenommen wurden, und dann den Datenbankserver basierend auf den Datensätzen im Binärprotokoll wiederherstellen Datei.
Standardmäßig ist die Binärprotokollfunktion deaktiviert. Sie können überprüfen, ob das Binärprotokoll aktiviert ist, indem Sie den folgenden Befehl ausführen:
mysql> SHOW VARIABLES LIKE 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | OFF | +---------------+-------+ 1 row in set, 1 warning (0.02 sec)
Wie aus den Ergebnissen ersichtlich ist, ist das Binärprotokoll deaktiviert.
Binärprotokolle starten und einrichten
In MySQL können Sie Binärprotokolle aktivieren, indem Sie die Option log-bin in die Konfigurationsdatei einfügen. Das Format lautet wie folgt:
[mysqld] log-bin=dir/[filename]
Unter diesen gibt der Parameter dir an Speicherpfad der Binärdatei; der Dateiname-Parameter Geben Sie den Dateinamen der Binärdatei in der Form Dateiname.Nummer, die Nummer in der Form 000001, 000002 usw. an.
Jedes Mal, wenn der MySQL-Dienst neu gestartet wird, wird eine neue binäre Protokolldatei generiert. Der Dateinamenteil der Dateinamen dieser Protokolldateien ändert sich nicht und die Anzahl erhöht sich weiter.
Wenn keine Parameter für Verzeichnis und Dateiname vorhanden sind, wird das Binärprotokoll standardmäßig im Datenverzeichnis der Datenbank gespeichert. Der Standarddateiname lautet hostname-bin.number, wobei hostname den Hostnamen darstellt.
Fügen Sie die folgende Anweisung in der Gruppe [mysqld] der Datei my.ini hinzu:
log-bin
Nach dem Neustart des MySQL-Servers sehen Sie die Datei LAPTOP-UHQ6V8KP-bin.000001 im Datenverzeichnis der MySQL-Datenbank und Außerdem wurde die Datei LAPTOP-UHQ6V8KP-bin.index generiert. Hier lautet der Hostname des MySQL-Servers LAPTOP-UHQ6V8KP.
Sie können auch die folgenden Änderungen in der Gruppe [mysqld] der Datei my.ini vornehmen. Die Anweisung lautet wie folgt:
log-bin=C:log\mylog
Nach dem Neustart des MySQL-Dienstes können Sie die Dateien mylog.000001 und mylog.index im Ordner C:log sehen.
Binärprotokoll anzeigen
1. Die Binärprotokolldateiliste anzeigen
Mit dem folgenden Befehl können Sie anzeigen, welche Binärprotokolldateien sich in MySQL befinden:
mysql> SHOW binary logs; +----------------------------+-----------+ | Log_name | File_size | +----------------------------+-----------+ | LAPTOP-UHQ6V8KP-bin.000001 | 177 | | LAPTOP-UHQ6V8KP-bin.000002 | 154 | +----------------------------+-----------+ 2 rows in set (0.00 sec)
2 geschrieben wird
Mit dem folgenden Befehl können Sie die binäre Protokolldatei anzeigen, die derzeit in MySQL geschrieben wird.
mysql> SHOW master status; +----------------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +----------------------------+----------+--------------+------------------+-------------------+ | LAPTOP-UHQ6V8KP-bin.000002 | 154 | | | | +----------------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
3. Sehen Sie sich den Inhalt der Binärprotokolldatei an
Binärprotokolle werden im Binärformat gespeichert und können nicht direkt geöffnet und angezeigt werden. Wenn Sie das Binärprotokoll anzeigen müssen, müssen Sie den Befehl mysqlbinlog verwenden.
mysqlbinlog 命令的语法形式如下:
mysqlbinlog filename.number
mysqlbinlog 命令只在当前文件夹下查找指定的二进制日志,因此需要在二进制日志所在的目录下运行该命令,否则将会找不到指定的二进制日志文件。
例 1
下面使用 mysqlbinlog 命令,来查看 C:\log 目录下的 mylog.000001 文件,代码执行如下:
C:\Users\11645>cd C:\log C:\log>mysqlbinlog mylog.000001 /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER /*!*/; # at 4 #200527 9:33:37 server id 1 end_log_pos 123 CRC32 0x69738cfd Start: binlog v 4, server v 5.7.29-log created 200527 9:33:37 at startup ......
由于日志内容较长,这里只展示了 mylog 中的部分内容。
使用 mysqlbinlog 命令时,可以指定二进制文件的存储路径。这样可以确保 mysqlbinlog 命令可以找到二进制文件。上面例子中的命令可以变为如下形式:
mysqlbinlog C:\log\mylog.000001
这样,mysqlbinlog 命令就会到 C:\log 目录下去查找 mylog.000001 文件。如果不指定路径,mysqlbinlog 命令将在当前目录下查找 mylog.000001 文件。
除了 filename.number 文件,MySQL 还会生成一个名为 filename.index 的文件,这个文件存储着所有二进制日志文件的列表,可以用记事本打开该文件。
小技巧:实际工作中,二进制日志文件与数据库的数据文件不放在同一块硬盘上,这样即使数据文件所在的硬盘被破坏,也可以使用另一块硬盘上的二进制日志来恢复数据库文件。两块硬盘同时坏了的可能性要小得多,这样可以保证数据库中数据的安全。
更多编程相关知识,请访问:编程入门!!
Das obige ist der detaillierte Inhalt vonIn welchem Protokoll werden die Datenaktualisierungsvorgänge von MySQL aufgezeichnet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!