mysql binlog查看历史sql执行记录方式

 更新时间:2025年10月30日 11:12:41   作者:云原生运维  
文章介绍了如何在MySQL的binlog中查找问题,以确定开发同学反馈的ORM操作是否真的导致了测试库数据丢失,通过检查binlog,确认数据库是否开启了binlog,并使用mysqlbinlog工具过滤日志,最终找到了问题的真相

前情提要

最近有开发同学把测试库的数据干没了,反馈说是orm做了字段text转mediumtext操作导致的。

作为变更字段类型,且是兼容的理论上不可能存在这个问题,所以为了一探究竟他到底说的是不是假话,我决定在binlog里找找蛛丝马迹。

mysql binlog介绍

首先确认数据库是否开启了binlog

mysql -u username -p
SHOW VARIABLES LIKE 'log_bin';

该命令将显示MySQL是否启用了二进制日志,以及日志文件的名称。如果输出结果中的Value为ON,则表示MySQL已经启用了二进制日志。如果Value为OFF,则表示MySQL没有启用二进制日志。

如果需要启用或禁用二进制日志,可以使用以下命令:

  • 启用二进制日志:
SET GLOBAL log_bin = ON;
  • 禁用二进制日志:
SET GLOBAL log_bin = OFF;

通过时间范围查找sql历史记录

mysqlbinlog --base64-output=decode-rows -vv  --start-datetime='2023-04-04 14:00:00' --stop-datetime='2023-04-04 15:00:00'   /home/mysql/logs/mysql-bin.000043 > /tmp/sql_record.txt

过滤表名、字段等关键字定位sql

grep config_json /tmp/sql_record.txt
ALTER TABLE `t_config` DROP COLUMN `config_json`
ALTER TABLE `t_config` ADD `config_json` text NOT NULL

至此真相已经出来!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL CRUD 查询、插入、更新、删除全实战指南

    MySQL CRUD 查询、插入、更新、删除全实战指南

    在 MySQL日常开发中CRUD是最核心的高频操作,本文基于实战场景,全面拆解MySQL的增删改查操作,所有SQL语句均采用小写形式,贴合实际开发规范,同时涵盖聚合查询、分组统计等进阶内容,感兴趣的朋友跟随小编一起看看吧
    2026-03-03
  • 解决找回mysql数据库密码和密码过期问题

    解决找回mysql数据库密码和密码过期问题

    这篇文章主要介绍了解决找回mysql数据库密码和密码过期问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • mysql-mcp-server 配置及使用示例

    mysql-mcp-server 配置及使用示例

    MySQL-MCP-Server是一款支持STDIO和SSE方式的MySQL服务器,新增多SQL执行和表注释查询功能,支持中文字段转拼音,下面就来介绍一下MySQL-MCP-Server配置详解,感兴趣的可以了解一下
    2025-05-05
  • MySQL常用的系统函数一览

    MySQL常用的系统函数一览

    这篇文章主要介绍了MySQL常用的系统函数使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 为什么说MySQL不建议使用delete删除数据

    为什么说MySQL不建议使用delete删除数据

    MySQL的DELETE语句是数据删除的核心工具,支持条件删除、多表关联删除及条数限制等高级功能,这篇文章主要介绍了为什么MySQL不建议使用delete删除数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-03-03
  • mysql5.7 修改用户初始密码的方法

    mysql5.7 修改用户初始密码的方法

    当用户首次安装MySQL数据库时,总是想修改root的初始化密码,我也是,每次都百度一下,下面主要给出一些操作数据库的常用SQL和一些基本概念性的东西,需要的朋友参考下吧
    2017-06-06
  • MySQL在Linux系统中隐藏命令行中的密码的方法

    MySQL在Linux系统中隐藏命令行中的密码的方法

    这篇文章主要介绍了MySQL在Linux系统中隐藏命令行中的密码的方法,作者利用简单的C程序实现,需要的朋友可以参考下
    2015-06-06
  • MySQL慢查询SQL优化方式

    MySQL慢查询SQL优化方式

    这篇文章主要介绍了MySQL慢查询SQL优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • MySQL索引结构详细解析

    MySQL索引结构详细解析

    MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。可以得到索引的本质:索引是数据结构
    2022-03-03
  • MySQL中crash safe数据完整性机制面试精讲

    MySQL中crash safe数据完整性机制面试精讲

    这篇文章主要为大家介绍了MySQL数据完整性crash safe特性面试精讲,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10

最新评论