The binlog records what alters, not necessarily what statement caused it (or if an update doesn't update anything, nothing will be shown either). If your BINLOG_FORMAT
is STATEMENT
, al would be statements, for ROW
& MIXED
, you get these entries where and when MySQL thinks it's apropriate. The binlog is NOT to monitor / examine the queries on your database (use the general query log for that), the binlog is only there to records alterations in data so you can reliably recover a backup or employ replication. It was never intended to be human readable.
Also note that there's possible settings what will and won't be binlogged, and your 'default schema' has quite a lot of influence on it on a connection. If you are really missing a statement (note that old logs get rotated), I'd advise to SHOW VARIABLES LIKE '%binlog%';