The server's binary log consists of files containing “events” that describe modifications to database contents. The server writes these files in binary format. To display their contents in text format, use the mysqlbinlog utility. You can also use mysqlbinlog to display the contents of relay log files written by a replica server in a replication setup because relay logs have the same format as binary logs. The binary log and relay log are discussed further in Section 7.4.4, “The Binary Log”, and Section 19.2.5, “Relay Log and Replication Metadata Repositories”.
Invoke mysqlbinlog like this:
mysqlbinlog [options] log_file ...
For example, to display the contents of the binary log file
named binlog.000003, use this command:
mysqlbinlog binlog.000003
The output includes events contained in
binlog.000003. For statement-based logging,
event information includes the SQL statement, the ID of the
server on which it was executed, the timestamp when the
statement was executed, how much time it took, and so forth. For
row-based logging, the event indicates a row change rather than
an SQL statement. See Section 19.2.1, “Replication Formats”, for
information about logging modes.
Events are preceded by header comments that provide additional information. For example:
# at 141
#100309 9:28:36 server id 123 end_log_pos 245
Query thread_id=3350 exec_time=11 error_code=0
In the first line, the number following at
indicates the file offset, or starting position, of the event in
the binary log file.
The second line starts with a date and time indicating when the
statement started on the server where the event originated. For
replication, this timestamp is propagated to replica servers.
server id is the
server_id value of the server
where the event originated. end_log_pos
indicates where the next event starts (that is, it is the end
position of the current event + 1). thread_id
indicates which thread executed the event.
exec_time is the time spent executing the
event, on a replication source server. On a replica, it is the
difference of the end execution time on the replica minus the
beginning execution time on the source. The difference serves as
an indicator of how much replication lags behind the source.
error_code indicates the result from
executing the event. Zero means that no error occurred.
When using event groups, the file offsets of events may be grouped together and the comments of events may be grouped together. Do not mistake these grouped events for blank file offsets.
The output from mysqlbinlog can be
re-executed (for example, by using it as input to
mysql) to redo the statements in the log.
This is useful for recovery operations after an unexpected
server exit. For other usage examples, see the discussion later
in this section and in Section 9.5, “Point-in-Time (Incremental) Recovery”.
To execute the internal-use
BINLOG statements used by
mysqlbinlog, the user requires the
BINLOG_ADMIN privilege (or the
deprecated SUPER privilege), or
the