mysqlbinlog查看SQL执行日志

2024-09-28 09:42:00
丁国栋
原创 51
摘要:通过mysqlbinlog命令可以查看对数据库做了哪些修改。mysqlbinlog -vv --base64-output=decode-rows /var/log/mysql/mysql-bin.002775 | more

MySQL的二进制日志( binlog)记录了对数据库进行修改的所有操作,例如UPDATE, DELETE, INSERT INTO, REPLACE INTO等。通过mysqlbinlog命令可以查看binlog日志文件的内容,从而知道对数据库做了哪些修改。


查看binlog二进制日志文件内容:mysqlbinlog -vv --base64-output=decode-rows /var/log/mysql/mysql-bin.002775 | more


mysqlbinlog 读取二进制日志文件时支持按照时间筛选,--start-datetime='2004-12-25 11:25:56' --stop-datetime='2004-12-25 11:25:56'


另外mysqlbinlog也支持在线查询数据库服务器上的binlog,此时需要使用mysqlbinlog登录到数据库再查看,例如:先通过登录数据库查询有哪些日志,show binary logs; 再使用mysqlbinlog导出二进制日志到本地:mysqlbinlog -h xxx -u xxx -p --read-from-remote-server --raw mysql-bin.002775 > /tmp/mysql-bin.002775


可以直接使用mysqlbinlog命令查看binlog文件的内容,结合管道和head命令可以很容易的找到当前binlog文件的position(pos)位置。

例如有以下示例:

# mysqlbinlog binlog.000536 | head
# The proper term is pseudo_replica_mode, but we use this compatibility alias
# to make the statement usable on server versions 8.0.24 and older.
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#241014  8:34:34 server id 1  end_log_pos 126 CRC32 0x0bcfb8c1 	Start: binlog v 4, server v 8.0.35-0ubuntu0.23.04.1 created 241014  8:34:34 at startup
ROLLBACK/*!*/;
BINLOG '
GmcMZw8BAAAAegAAAH4AAAAAAAQAOC4wLjM1LTB1YnVudHUwLjIzLjA0LjEAAAAAAAAAAAAAAAAA
#

从 end_log_pos 可以看出,当前binlog文件的pos位置就是126.

--

发表评论
博客分类