mysql业务操作后不看代码的情况下怎么看动了哪些表

咚咚咚锵 2026-07-13 11:13 1

佬友们,假如页面新增一条数据,不看代码的话有什么方法直接看数据库增改了哪些表吗?mysql统计行数都是不及时的,批量查每行数据又不允许,有没有大佬有其他方法

最新回复 (10)
  • zt 07-13 11:14
    1

    之前有类似需求,数据库审计日志开启,CDC技术

  • 夏夜之梦 07-13 11:15
    2

    从binlog解析,开源的可以用阿里的canal,如果是商用的话CDC产品很多的

  • west 07-13 11:16
    3

    开启 MySQL General Log或者binlog

  • pluszero1982 07-13 11:16
    4

    这个感觉可以查看2进制日志?


    或者走一写中间件把sql语句dump出来?

  • 若如初见 07-13 11:17
    5

    监听binlog文件 能看出来数据库变动

  • 泼痞 07-13 11:20
    6

    操作步骤:



    1. 先确认 binlog 开着:


    sql


    SHOW VARIABLES LIKE 'log_bin';        -- ON 表示开启
    SHOW VARIABLES LIKE 'binlog_format'; -- 最好是 ROW
    SHOW MASTER STATUS; -- 看当前写到哪个 binlog 文件、哪个位点


    1. 记下当前位点(文件名 + Position),然后去页面做那个新增操作。

    2. 操作完用 mysqlbinlog 解析这段区间:


    bash


    mysqlbinlog --no-defaults -v --base64-output=decode-rows \
    --start-position=之前记的位点 \
    /var/lib/mysql/binlog.000123 | grep -E '^### (INSERT INTO|UPDATE|DELETE FROM)' | sort | uniq -c

    ROW 格式下解码出来的内容会明确写着 ### INSERT INTO \db`.`table``,一眼就能看出这次操作动了哪些库哪些表,甚至每一列的值都有。

  • admini 07-13 11:34
    7

    binlog 的日志,操作都可以查询。

  • zzyf 07-13 11:36
    8

    借楼问下,数据库是Oracle,有软甲客户端无源码,客户端执行某个操作后如何检查Oracle自动操作了哪些表以及用到了什么视图或方法或使用了什么语句,有办法查询出来吗

  • Kevin 07-13 12:33
    9

    一般不是都会有update_at时间戳吗?用这个字段筛算批量查没行数据吗

  • lingkai5wu 07-13 12:35
    10

    正常不会给这个字段加索引,而且你这样要全库全表查询,不现实。

* 帖子来源Linux.do
返回