binlog是MySQL层记录的二进制文件,记录MySQL的数据更新或潜在更新(不会记录select或show命令)。
开启依赖:
binlong_format = row,需要开启binlog_rows_query_log_events(该参数可以通过rows_query_event 事件记录原始的 SQL)。
日志解析常用命令:MySQLbinlog
mysqlbinlog /data/mysql_data/bin.000008 --database EpointFrame --base64-output=decode-rows -vv --skip-gtids=true |grep -C 1 -i "update merchandise set city_id=10028 where merchandiseid=10293" > /opt/sql.log
- /data/mysql_data/bin.000008:需要解析的 binlog 日志。
- database:只列出该数据库下的行数据,但无法过滤 Rows_query_event。
- base64-output=decode-rows -vv:显示具体 SQL 语句。
- skip-gtids=true:忽略 GTID 显示。
- grep -C 1 -i “update merchandise set city_id=10028 where merchandiseid=10293″:通过管道命令筛选出所需 SQL 及执行时间。
- /opt/sql.log:将结果导入到日志文件,方便查看
注意事项:
触发器执行的 SQL 不会记录在 Rows_query_event 中,只会记录对应的行数据。
–database 是无法过滤 Rows_query_event 的,只可以过滤行数据。
转载请注明:苏demo的别样人生 » mysql binlog日志解析的常用命令