MariaDB-Datenbank-Protokolldateien - Amazon Relational Database Service

MariaDB-Datenbank-Protokolldateien

Sie können das MariaDB-Fehlerprotokoll, das Slow-Query-Protokoll und das allgemeine Protokoll überwachen. Das MariaDB-Fehlerprotokoll wird standardmäßig generiert. Das Slow-Query-Protokoll und allgemeine Protokolle können Sie mithilfe der Parametereinstellungen in Ihrer DB-Parametergruppe generieren. Amazon RDS rotiert alle MariaDB-Protokolldateien. Die Intervalle für jeden Typ sehen Sie im Folgenden.

Sie können die MariaDB-Protokolle direkt über die Amazon RDS-Konsole, Amazon RDS-API, Amazon RDS-CLI oder AWS-SDKs überwachen. Sie können auf MariaDB-Protokolle auch direkt zugreifen, indem Sie die Protokolle in eine Datenbank-Tabelle in der Hauptdatenbank weiterleiten und diese Tabelle abfragen. Mit dem Dienstprogramm "mysqlbinlog" können Sie ein binäres Protokoll herunterladen.

Weitere Informationen zum Anzeigen und Herunterladen von dateibasierten Datenbankprotokollen finden Sie unter Amazon RDS-Datenbank-Protokolldateien.

Zugriff auf MariaDB-Fehlerprotokolle

Das MariaDB-Fehlerprotokoll wird in die <host-name>.err-Datei geschrieben. Sie können diese Datei mithilfe der Amazon RDS-Konsole oder durch Abrufen des Protokolls mithilfe von Amazon RDS-API, Amazon RDS-CLI oder AWS-SDKs ansehen. Die Datei <host-name>.err wird alle 5 Minuten bereinigt und ihre Inhalte werden an mysql-error-running.log angefügt. Die mysql-error-running.log-Datei wird dann jede Stunde rotiert und die stündlich erstellten Dateien der letzten 24 Stunden werden aufbewahrt. An den Namen jeder Protokolldatei wird die Stunde ihrer Erstellung (in UTC) angefügt. Die Protokolldateien verfügen auch über einen Zeitstempel, anhand dessen Sie feststellen können, wann die Protokolleinträge geschrieben wurden.

MariaDB schreibt das Fehlerprotokoll nur beim Hochfahren, Herunterfahren und beim Auftreten von Fehlern. Eine DB-Instance kann Stunden oder Tage lang laufen, ohne dass neue Einträge in das Fehlerprotokoll geschrieben werden. Wenn Sie keine neuen Einträge sehen, sind im Server keine Fehler aufgetreten, die zu einem Eintrag in das Protokoll geführt hätten.

Zugriff auf die MariaDB-Slow-Query- und allgemeinen Protokolle

Das MariaDB-Slow-Query-Protokoll und das allgemeine Protokoll können in eine Datei oder in eine Datenbanktabelle mithilfe der Parametereinstellungen in Ihrer DB-Parametergruppe geschrieben werden. Weitere Informationen zum Erstellen und Ändern einer DB-Parametergruppe finden Sie unter Arbeiten mit DB-Parametergruppen. Sie müssen diese Parameter festlegen, bevor Sie das Slow-Query-Protokoll oder das allgemeine Protokoll in der Amazon RDS-Konsole bzw. mithilfe von Amazon RDS-API, AWS CLI oder AWS SDKs sehen können.

Sie können MariaDB-Protokolle mithilfe der Parameter in dieser Liste kontrollieren:

  • slow_query_log Um das Slow-Query-Protokoll zu erstellen, auf 1 setzen. Der Standardwert ist 0.

  • general_log Um das allgemeine Protokoll zu erstellen, auf 1 setzen. Der Standardwert ist 0.

  • long_query_time: Um zu vermeiden, dass schnell ausgeführte Abfragen im Slow-Query-Protokoll aufgenommen werden, legen Sie die kürzeste Laufzeit für eine einzutragende Abfrage in Sekunden fest. Der Standardwert liegt bei 10 Sekunden, der Mindestwert bei 0. Wenn log_output = FILE, können Sie einen Gleitkommawert angeben, der die Mikrosekundenauflösung festlegt. Wenn log_output = TABLE, können Sie einen Ganzzahlwert angeben, der die Sekundenauflösung festlegt. Nur Abfragen, deren Laufzeit den long_query_time-Wert übersteigt, werden im Protokoll aufgenommen. Wenn Sie beispielsweise long_query_time auf 0,1 setzen, verhindert dies Einträge von allen Abfragen, die weniger als 100 Millisekunden lang ausgeführt werden.

  • log_queries_not_using_indexes: Um alle Abfragen zu protokollieren, die keinen Index für das Slow-Query-Protokoll verwenden, setzen Sie diesen Parameter auf 1. Der Standardwert ist 0. Abfragen, die keinen Index verwenden, werden protokolliert, auch wenn ihre Laufzeit niedriger als der Wert des long_query_time-Parameters ist.

  • log_output option: Sie können eine der folgenden Optionen für den log_output-Parameter festlegen:

    • TABLE (Standard): schreibt allgemeine Abfragen in die mysql.general_log-Tabelle und Slow-Queries in die mysql.slow_log-Tabelle.

    • FILE: schreibt sowohl allgemeine als auch Slow-Query-Protokolle in das Dateisystem. Protokolldateien werden stündlich rotiert.

    • NONE: Die Protokollierung ist deaktiviert.

Wenn Protokollierung aktiviert ist, rotiert Amazon RDS Tabellenprotokolle oder löscht Protokolldateien in regelmäßigen Intervallen. Dies ist eine Vorsichtsmaßnahme, um möglichst zu vermeiden, dass eine umfangreiche Protokolldatei die Datenbanknutzung blockiert oder die Leistung beeinträchtigt. FILE- und TABLE-Protokollierung führen das Rotieren und Löschen wie folgt aus:

  • Wenn die FILE-Protokollierung aktiviert ist, werden Protokolldateien stündlich geprüft und Protokolldateien, die älter als 24 Stunden sind, werden gelöscht. In einigen Fällen kann die Größe der verbleibenden kombinierten Protokolldatei nach dem Löschen die Schwelle von 2 % des zugeteilten Speicherplatzes für eine DB-Instance überschreiten. In diesen Fällen werden die umfangreichsten Protokolldateien gelöscht, bis die Größe den Schwellenwert nicht mehr überschreitet.

  • Wenn die TABLE-Protokollierung aktiviert ist, werden in einigen Fällen Protokolltabellen alle 24 Stunden überschrieben. Diese Rotation erfolgt, wenn der von den Tabellen-Protokollen verwendete Speicherplatz mehr als 20 Prozent des zugeteilten Speicherplatzes ausmacht oder wenn die Größe aller Protokolle zusammen mehr als 10 GB beträgt. Wenn der für eine DB-Instance verwendete Speicherplatz 90 Prozent des Speicherplatzes überschreitet, der der DB-Instance zugeteilt ist, werden die Schwellen für die Protokollrotation reduziert. Protokolltabellen werden rotiert, wenn der von den Tabellen-Protokollen verwendete Speicherplatz mehr als 10 % des zugewiesenen Speicherplatzes ausmacht oder wenn die Größe alle Protokolle zusammen mehr als 5 GB beträgt.

    Beim Rotieren von Protokolldateien wird die aktuelle Protokolltabelle in eine Sicherungsprotokolltabelle kopiert, und die Einträge in der aktuellen Protokolltabelle werden entfernt. Sofern bereits eine Sicherungsprotokolltabelle vorhanden ist, wird diese gelöscht, bevor die aktuelle Protokolltabelle in die Sicherung kopiert wird. Sie können die Sicherungsprotokolltabelle abfragen, wenn dies nötig ist. Die Backup-Protokolltabelle für die mysql.general_log-Tabelle ist als mysql.general_log_backup benannt. Die Backup-Protokolltabelle für die mysql.slow_log-Tabelle ist als mysql.slow_log_backup benannt.

    Sie können die mysql.general_log-Tabelle rotieren, wenn Sie die Prozedur mysql.rds_rotate_general_log aufrufen. Sie können die mysql.slow_log-Tabelle rotieren, wenn Sie die Prozedur mysql.rds_rotate_slow_log aufrufen.

    Tabellenprotokolle werden während des Upgrades einer Datenbankversion rotiert.

Amazon RDS zeichnet TABLE- und FILE-Protokollrotation in einem Amazon RDS-Ereignis auf und sendet Ihnen eine Benachrichtigung.

Um mit den Protokollen über die Amazon RDS-Konsole, Amazon RDS-API, Amazon RDS-CLI, oder AWS SDKs zu arbeiten, setzen Sie den Parameter log_output auf FILE. Wie das MariaDB-Fehlerprotokoll werden auch diese Protokolldateien stündlich rotiert. Die Protokolldateien, die während der vorherigen 24 Stunden angelegt wurden, werden aufbewahrt.

Weitere Informationen zu den Slow-Query- und allgemeinen Protokollen finden Sie in den folgenden Themen in der MariaDB-Dokumentation:

Veröffentlichen von MariaDB-Protokollen in Amazon CloudWatch Logs

Sie können die Amazon RDS-MariaDB-DB-Instance so konfigurieren, dass Protokolldaten in einer Protokollgruppe in Amazon CloudWatch Logs veröffentlicht werden. Mit CloudWatch Logs können Sie Echtzeitanalysen der Protokolldaten durchführen, und mit CloudWatch können Sie Alarme und Metriken erstellen. Sie können CloudWatch Logs verwenden, um Ihre Protokolldatensätze in einem Speicher mit hoher Beständigkeit abzulegen.

Amazon RDS veröffentlicht jedes MariaDB-Datenbankprotokoll als separaten Datenbank-Stream in der Protokollgruppe. Wenn Sie beispielsweise die Exportfunktion so konfigurieren, dass das Slow-Query-Protokoll berücksichtigt wird, werden Slow-Query-Daten in einem Slow-Query-Protokollstream in der Protokollgruppe /aws/rds/instance/my_instance/slowquery gespeichert.

Das Fehlerprotokoll ist standardmäßig aktiviert. Die folgende Tabelle fasst die Anforderungen für die anderen MariaDB-Protokolle zusammen.

Protokoll Anforderung

Prüfungsprotokoll

Die DB-Instance muss eine benutzerdefinierte Optionsgruppe mit der Option MARIADB_AUDIT_PLUGIN verwenden.

Allgemeines Protokoll

Die DB-Instance muss eine benutzerdefinierte Parametergruppe mit der Parametereinstellung general_log = 1 verwenden, um das allgemeine Protokoll zu aktivieren.

Slow-Query-Protokoll

Die DB-Instance muss eine benutzerdefinierte Parametergruppe mit der Parametereinstellung slow_query_log = 1 verwenden, um das Slow-Query-Protokoll zu aktivieren.

Protokollausgabe

Die DB-Instance muss eine benutzerdefinierte Parametergruppe mit der Parametereinstellung log_output = FILE verwenden, um Protokolle in das Dateisystem zu schreiben und sie in CloudWatch Logs zu veröffentlichen.

So veröffentlichen Sie MariaDB-Protokolle in CloudWatch Logs von der Konsole aus

  1. Öffnen Sie die Amazon RDS-Konsole unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie im Navigationsbereich Databases (Datenbanken) und dann die DB-Instance, die Sie ändern möchten.

  3. Wählen Sie Modify aus.

  4. Wählen Sie im Bereich Protokollexporte die Protokolle aus, die Sie in CloudWatch Logs veröffentlichen möchten.

  5. Wählen Sie Weiter und dann auf der zusammenfassenden Seite Modify DB Instance (DB-Instance ändern) aus.

Sie können ein MariaDB-Protokoll über die AWS-CLI veröffentlichen. Sie können den Befehl modify-db-instance mit den folgenden Parametern aufrufen:

  • --db-instance-identifier

  • --cloudwatch-logs-export-configuration

Anmerkung

Eine Änderung der Option --cloudwatch-logs-export-configuration wird immer sofort auf die DB-Instance angewendet. Aus diesem Grund sind die Optionen --apply-immediately und --no-apply-immediately wirkungslos.

Sie können MariaDB-Protokolle auch veröffentlichen, indem Sie in der AWS-CLI die folgenden Befehlen aufrufen:

Führen Sie in der AWS-CLI einen dieser Befehle mit den folgenden Optionen aus:

  • --db-instance-identifier

  • --enable-cloudwatch-logs-exports

  • --db-instance-class

  • --engine

Je nach verwendetem AWS CLI-Befehl müssen möglicherweise noch weitere Optionen angegeben werden.

Beispiel

Im folgenden Beispiel wird eine vorhandene MariaDB-DB-Instance so konfiguriert, dass Protokolldateien in CloudWatch Logs veröffentlicht werden. Der --cloudwatch-logs-export-configuration-Wert ist ein JSON-Objekt. Der Schlüssel für dieses Objekt ist EnableLogTypes und dessen Wert ist ein Array von Zeichenfolgen mit einer beliebigen Kombination aus audit, error, general und slowquery.

Für Linux, macOS oder Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit","error","general","slowquery"]}'

Für Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit","error","general","slowquery"]}'

Beispiel

Der folgende Befehl erstellt eine MariaDB-DB-Instance und veröffentlich die Protokolldateien in CloudWatch Logs. Der Wert --enable-cloudwatch-logs-exports ist ein JSON-Array mit Zeichenfolgen. Die Zeichenfolgen können eine beliebige Kombination von audit, error, general und slowquery sein.

Für Linux, macOS oder Unix:

aws rds create-db-instance \ --db-instance-identifier mydbinstance \ --enable-cloudwatch-logs-exports '["audit","error","general","slowquery"]' \ --db-instance-class db.m4.large \ --engine mariadb

Für Windows:

aws rds create-db-instance ^ --db-instance-identifier mydbinstance ^ --enable-cloudwatch-logs-exports '["audit","error","general","slowquery"]' ^ --db-instance-class db.m4.large ^ --engine mariadb

Sie können MariaDB-Protokolle mithilfe der RDS-API veröffentlichen. Sie können die ModifyDBInstance-Operation mit folgenden Parametern aufrufen:

  • DBInstanceIdentifier

  • CloudwatchLogsExportConfiguration

Anmerkung

Eine Änderung des Parameters CloudwatchLogsExportConfiguration wird immer sofort auf die DB-Instance angewendet. Aus diesem Grund ist der Parameter ApplyImmediately wirkungslos.

Sie können MariaDB-Protokolle auch veröffentlichen, indem Sie die folgenden RDS-API-Operationen aufrufen:

Führen Sie eine dieser RDS-API-Operationen mit den folgenden Parametern aus:

  • DBInstanceIdentifier

  • EnableCloudwatchLogsExports

  • Engine

  • DBInstanceClass

Je nach verwendetem AWS-CLI-Befehl müssen möglicherweise noch weitere Parameter angegeben werden.

Protokolldateigröße

Die MariaDB-Slow-Query-Protokolldatei, die Fehlerprotokolldatei und die allgemeine Protokolldatei sind auf eine Größe beschränkt, die 2 Prozent des zugeteilten Speicherplatzes für eine DB-Instance nicht überschreiten darf. Um diesen Schwellwert einzuhalten, werden Protokolle automatisch stündlich rotiert und Protokolldateien, die älter als 24 Stunden sind, werden entfernt. Wenn die kombinierte Größe der Protokolle nach dem Löschen von alten Protokolldateien den Schwellwert überschreitet, werden die umfangreichsten Protokolldateien gelöscht, bis die Größe den Schwellwert nicht mehr überschreitet.

Verwalten von tabellenbasierten MariaDB-Protokollen

Sie können die allgemeinen und Slow-Query-Protokolle an Tabellen in der DB-Instance weiterleiten, indem Sie eine DB-Parametergruppe erstellen und den log_output-Serverparameter auf TABLE setzen. Allgemeine Abfragen werden anschließend in der mysql.general_log-Tabelle und Slow-Queries in dermysql.slow_log-Tabelle protokolliert. Sie können die Tabellen abfragen, um auf Protokollinformationen zuzugreifen. Durch Aktivieren dieser Protokollierung wird die Datenmenge erhöht, die in die Datenbank geschrieben wird, was die Performance beeinträchtigen kann.

Das allgemeine Protokoll und das Slow-Query-Protokoll sind standardmäßig deaktiviert. Um die Protokollierung in Tabellen zu aktivieren, müssen Sie auch die Serverparameter general_log und slow_query_log auf 1 setzen.

Protokolltabellen wachsen stetig, bis die entsprechenden Protokollierungsaktivitäten ausgeschaltet werden, indem der entsprechende Parameter auf 0 gesetzt wird. Mit der Zeit sammelt sich häufig eine große Datenmenge an und belegt einen beträchtlichen Anteil Ihres zugeteilten Speicherplatzes. Amazon RDS ermöglicht nicht, Protokolldateien zu kürzen, aber Sie können ihre Inhalte verschieben. Beim Rotieren einer Tabelle wird deren Inhalt in einer Sicherungstabelle gespeichert, und anschließend wird eine neue leere Protokolldatei angelegt. Sie können Protokolltabellen mithilfe der folgenden Befehlszeilenprozeduren manuell rotieren, wobei die Eingabeaufforderung mit PROMPT> bezeichnet ist:

PROMPT> CALL mysql.rds_rotate_slow_log; PROMPT> CALL mysql.rds_rotate_general_log;

Um alte Daten komplett zu entfernen und den Speicherplatz zurückzugewinnen, rufen Sie die entsprechende Prozedur zweimal nacheinander auf.

Binäres Protokollformat

MariaDB in Amazon RDS unterstützt die binären Protokollformate row-based, statement-based und mixed. Das standardmäßige binäre Protokollierungsformat ist mixed. Weitere Details zu anderen binären Protokollformaten in MariaDB finden Sie unter Binary Log Formats in der MariaDB-Dokumentation.

Zur Verwendung der Replikation ist das binäre Protokollierungsformat wichtig, da es den Datensatz der Datenänderungen bestimmt, der in der Quelle aufgezeichnet und an die Replikationsziele gesendet wird. Weitere Informationen über Vor- und Nachteile verschiedener binärer Protokollierungsformate finden Sie unter Vorteile und Nachteile einer auf Anweisungen und einer auf Zeilen basierenden Replikation in der MySQL-Dokumentation.

Wichtig

Wenn das binäre Protokollierungsformat auf "row-based" eingestellt ist, kann das zu sehr umfangreichen binären Protokolldateien führen. Große binäre Protokolldateien verringern die Speichermenge, die einer DB-Instance zur Verfügung steht, und können den Zeitaufwand für einen Wiederherstellungsvorgang einer DB-Instance erhöhen.

Die Replikation vom Typ „statement-based“ kann zu Inkonsistenzen zwischen der Quell-DB-Instance und einem Lesereplikat führen. Weitere Informationen finden Sie unter Unsafe Statements for Statement-based Replication in der MariaDB-Dokumentation.

So stellen Sie das binäre Protokollierungsformat für MariaDB ein:

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon RDS-Konsole unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie im Navigationsbereich Parameter groups (Parametergruppen) aus.

  3. Wählen Sie in der Liste die zu ändernde Parametergruppe, die von der DB-Instance verwendet wird.

    Eine Standard-Parametergruppe kann nicht modifiziert werden. Erstellen Sie eine neue Parametergruppe und ordnen Sie diese der DB-Instance zu, wenn die DB-Instance eine Standardparametergruppe verwendet.

    Weitere Informationen zu DB-Parametergruppen finden Sie unter Arbeiten mit DB-Parametergruppen.

  4. Wählen Sie für Parameter group actions (Parametergruppenaktionen) die Option Bearbeiten.

  5. Stellen Sie den Parameter binlog_format auf das binäre Protokollierungsformat Ihrer Wahl ein (ROW, STATEMENT oder MIXED).

  6. Wählen Sie Änderungen speichern, um die Aktualisierungen in dieser DB-Parametergruppe zu speichern.

Zugriff auf binäre MariaDB-Protokolle

Mithilfe des Dienstprogramms mysqlbinlog können Sie Binärprotokolle in Textformat aus DB-Instances in MariaDB herunterladen. Das binäre Protokoll wird auf Ihren lokalen Computer heruntergeladen. Weitere Informationen über die Verwendung des Dienstprogramms mysqlbinlog finden Sie unter Using mysqlbinlog in der MariaDB-Dokumentation.

Verwenden Sie zum Ausführen des Dienstprogramms mysqlbinlog mit einer Amazon RDS-Instance die folgenden Optionen:

  • Legen Sie die Option --read-from-remote-server fest.

  • --host Geben Sie den DNS-Namen vom Endpunkt dieser Instance an.

  • --portGeben Sie den von der Instance verwendeten Port an.

  • --user: Geben Sie einen MariaDB-Benutzer an, dem die Slave-Berechtigung für Replikation erteilt wurde.

  • --password: Geben Sie das Passwort für den Benutzer an oder lassen Sie einen Passwortwert aus, damit das Hilfsprogramm zur Eingabe eines Passworts auffordert.

  • --result-file: Geben Sie die lokale Datei an, die den Output empfängt.

  • Geben Sie die Namen einer oder mehrerer Binärprotokolldateien an. Verwenden Sie für eine Liste der verfügbaren Protokolle den SQL-Befehl SHOW BINARY LOGS.

Weitere Informationen über Optionen für mysqlbinlog finden Sie unter mysqlbinlog Options in der MariaDB-Dokumentation.

Im Folgenden wird ein Beispiel gezeigt:

Für Linux, macOS oder Unix:

mysqlbinlog \ --read-from-remote-server \ --host=mariadbinstance1.1234abcd.region.rds.amazonaws.com \ --port=3306 \ --user ReplUser \ --password <password> \ --result-file=/tmp/binlog.txt

Für Windows:

mysqlbinlog ^ --read-from-remote-server ^ --host=mariadbinstance1.1234abcd.region.rds.amazonaws.com ^ --port=3306 ^ --user ReplUser ^ --password <password> ^ --result-file=/tmp/binlog.txt

In der Regel bereinigt Amazon RDS binäre Protokolldateien so schnell wie möglich. Andererseits muss das binäre Protokoll immer noch auf der Instance verfügbar sein, auf die mysqlbinlog zugreifen soll. Verwenden Sie die gespeicherte Prozedur mysql.rds_set_configuration und geben Sie einen Zeitraum mit ausreichend Zeit für den Download der Protokolle an, um die Anzahl der Stunden zu bestimmen, die RDS zum Aufbewahren der Binärprotokolle beachten soll. Nachdem Sie den Aufbewahrungszeitraum festgelegt haben, überwachen Sie die Speichernutzung für die DB-Instance, um sicherzustellen, dass die aufbewahrten binären Protokolle nicht zu viel Speicherplatz beanspruchen.

Das folgende Beispiel setzt den Aufbewahrungszeitraum auf 1 Tag:

call mysql.rds_set_configuration('binlog retention hours', 24);

Verwenden Sie die gespeicherte Prozedur mysql.rds_show_configuration, um die aktuelle Einstellung anzeigen zu lassen:

call mysql.rds_show_configuration;

Binärprotokoll-Kommentierung

In einer MariaDB-DB-Instance können Sie das Ereignis Annotate_rows verwenden, um ein Zeilenereignis mit einer Kopie der SQL-Abfrage zu kommentieren, die das Zeilenereignis ausgelöst hat. Diese Methode bietet eine ähnliche Funktionalität wie das Aktivieren des Parameters binlog_rows_query_log_events für eine DB-Instance in MySQL Version 5.6 oder neuer.

Sie können Binärprotokoll-Anmerkungen global aktivieren, indem Sie eine benutzerdefinierte Parametergruppe erstellen und den Parameter binlog_annotate_row_events auf 1 setzen. Sie können Anmerkungen auch auf Sitzungsebene aktivieren, indem Sie SET SESSION binlog_annotate_row_events = 1 aufrufen. Verwenden Sie replicate_annotate_row_events, um Binärprotokoll-Anmerkungen auf der Slave-Instance zu replizieren, falls binäre Protokollierung darauf aktiviert ist. Für die Nutzung dieser Einstellungen sind keine besonderen Berechtigungen erforderlich.

Nachfolgend sehen Sie ein Beispiel für eine zeilenbasierte Transaktion in MariaDB. Die Verwendung von zeilenbasierter Protokollierung wird ausgelöst, indem der Transaktionsisolationslevel auf "read-committed" eingestellt wird.

CREATE DATABASE IF NOT EXISTS test; USE test; CREATE TABLE square(x INT PRIMARY KEY, y INT NOT NULL) ENGINE = InnoDB; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; BEGIN INSERT INTO square(x, y) VALUES(5, 5 * 5); COMMIT;

Ohne Anmerkungen sehen die Einträge des Binärprotokolls für die Transaktion wie folgt aus:

BEGIN /*!*/; # at 1163 # at 1209 #150922 7:55:57 server id 1855786460 end_log_pos 1209 Table_map: `test`.`square` mapped to number 76 #150922 7:55:57 server id 1855786460 end_log_pos 1247 Write_rows: table id 76 flags: STMT_END_F ### INSERT INTO `test`.`square` ### SET ### @1=5 ### @2=25 # at 1247 #150922 7:56:01 server id 1855786460 end_log_pos 1274 Xid = 62 COMMIT/*!*/;

Die folgende Anweisung aktiviert Anmerkungen auf Sitzungsebene für diese Transaktion und deaktiviert die Anmerkungen nach dem Übertragen der Transaktion:

CREATE DATABASE IF NOT EXISTS test; USE test; CREATE TABLE square(x INT PRIMARY KEY, y INT NOT NULL) ENGINE = InnoDB; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION binlog_annotate_row_events = 1; BEGIN; INSERT INTO square(x, y) VALUES(5, 5 * 5); COMMIT; SET SESSION binlog_annotate_row_events = 0;

Mit Anmerkungen sehen die Einträge des Binärprotokolls für die Transaktion wie folgt aus:

BEGIN /*!*/; # at 423 # at 483 # at 529 #150922 8:04:24 server id 1855786460 end_log_pos 483 Annotate_rows: #Q> INSERT INTO square(x, y) VALUES(5, 5 * 5) #150922 8:04:24 server id 1855786460 end_log_pos 529 Table_map: `test`.`square` mapped to number 76 #150922 8:04:24 server id 1855786460 end_log_pos 567 Write_rows: table id 76 flags: STMT_END_F ### INSERT INTO `test`.`square` ### SET ### @1=5 ### @2=25 # at 567 #150922 8:04:26 server id 1855786460 end_log_pos 594 Xid = 88 COMMIT/*!*/;