Der MySQL-Datenbankserver generiert binäre Protokolldateien für jede Transaktion zu den Datenbanken, vorausgesetzt, der Administrator deaktiviert oder kommentiert den Parameter „log-bin“ in der Konfigurationsdatei my.cny nicht. Die Binärprotokolldateien werden im Binärformat geschrieben. Obwohl die Binärlogs, oder auch bekannt als Logbin, hauptsächlich für die Replikation von MySQL-Datenbanken verwendet werden, müssen Sie manchmal den Inhalt von Binärlogs im Textformat untersuchen oder lesen, wo das Dienstprogramm mysqlbinlog hilfreich ist.
Die binäre Protokolldatei, die normalerweise einen Namen im Format host_name-bin.xxxxxx hat und im Verzeichnis /var/lib/mysql gespeichert ist, konnte nicht geöffnet und sofort gelesen werden, da sie in einem nicht lesbaren Binärformat vorliegt. Um die Binärprotokolle im Textformat zu lesen, können wir den Befehl mysqlbinlog verwenden, der auch Relay-Protokolldateien lesen kann, die von einem Slave-Server in einer Replikationskonfiguration geschrieben wurden. Relaisprotokolle haben dasselbe Format wie binäre Protokolldateien.
Die Verwendung des mysqlbinlog-Dienstprogramms ist einfach, verwenden Sie einfach die folgende Befehlssyntax, um mysqlbinlog aufzurufen, nachdem Sie sich als root angemeldet haben (andernfalls müssen Sie den Benutzernamen und das Passwort angeben), um die Shell über SSH zu erreichen:
mysqlbinlog [options] log_file ...
Um also den Inhalt der binären Protokolldatei mit dem Namen binlog.000001 zu lesen und anzuzeigen, verwenden Sie diesen Befehl:
mysqlbinlog binlog.000001
Die binären Protokolldateien und ihre Daten sind wahrscheinlich sehr groß, sodass es fast unmöglich ist, etwas auf dem Bildschirm zu lesen. Sie können die Ausgabe von mysqlbinlog jedoch in eine Datei leiten, die zum späteren Durchsuchen im Texteditor geöffnet werden kann, indem Sie den folgenden Befehl verwenden:
mysqlbinlog binlog.000001 > filename.txt
Um die Menge der aus Binärprotokollen abgerufenen Daten zu reduzieren, gibt es mehrere Optionen, mit denen die zurückgegebenen Daten begrenzt werden können. Unter den nützlichen sind unten aufgeführt:
–start-datetime=datetime
Beginnen Sie mit dem Lesen des Binärprotokolls beim ersten Ereignis mit einem Zeitstempel, der gleich oder später als das Argument datetime ist. Der datetime-Wert ist relativ zur lokalen Zeitzone auf dem Rechner, auf dem Sie mysqlbinlog ausführen. Der Wert sollte in einem Format vorliegen, das für die Datentypen DATETIME oder TIMESTAMP akzeptiert wird. Zum Beispiel:
mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000001
–stop-datetime=datetime
Beenden Sie das Lesen des Binärlogs beim ersten Ereignis mit einem Zeitstempel, der gleich oder später als das Argument datetime ist. Diese Option ist nützlich für die Point-in-Time-Wiederherstellung. Informationen zum datetime-Wert finden Sie in der Beschreibung der Option –start-datetime.
–start-position=N
Beginnen Sie mit dem Lesen des Binärlogs beim ersten Ereignis mit einer Position gleich dem N-Argument. Diese Option gilt für die erste Protokolldatei, die auf der Befehlszeile genannt wird.
–stop-position=N
Stoppen Sie das Lesen des Binärlogs beim ersten Ereignis mit einer Position gleich oder größer als das N-Argument. Diese Option gilt für die zuletzt in der Befehlszeile genannte Protokolldatei.
Weitere Nutzungsinformationen zu mysqlbinlog finden Sie hier.