前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >提取binlog中的DDL

提取binlog中的DDL

原创
作者头像
大大刺猬
发布2023-05-26 21:38:17
5350
发布2023-05-26 21:38:17
举报
文章被收录于专栏:大大刺猬大大刺猬

需求

有时候需要审计看看谁执行了啥操作. 但很多环境是没得审计的. 这时候就可以通过解析binlog 得到ddl执行的记录了(审计dml套麻烦了).

主要有两种解析binlog的办法,

实现

1. mysqlbinlog

使用mysqlbinlog解析然后使用grep匹配需要的信息. 优点就是简单, 缺点就是grep是行级匹配, 获取到的数据不是那么好看...

例子:

代码语言:javascript
复制
mysqlbinlog /data/mysql_3308/mysqllog/binlog/m3308.0* | grep -i -E '^(CREATE |DROP |ALTER |RENAME |TRUNCATE |USE )'

很难匹配完整的DDL. (还请有能力的大佬自己完善 ^_^)

2. getddl_frombinlog.py

使用第三方工具解析, 比如mysql-replication.

但我们只解析DDL的话, 就没必要那么麻烦了.

通过前面的知识我们知道 ddl 均记录在 QUERY_EVENT , 所以我们只需要解析 QUERY_EVENT即可, 也不用全部解析, 只要解析DDL即可.

query_event格式如下:

名字

大小(byte)

slave_proxy_id

4

execution time

4

schema length

1

error code

2

status_vars length

2

status-vars

取决于status_vars length

schema

取决于schema length, 以\x00结尾

query(ddl)

剩下的

check

如果有的话就是4字节, 取query的时候记得-4

不用你去解析, 我给你提供现成的工具.

https://github.com/ddcw/ddcw/blob/master/python/getddl_frombinlog.py

用法

代码语言:javascript
复制
(venv) 21:32:26 [root@ddcw21 ei]#python getddl_frombinlog.py 
version: 0.1
example:
    getddl_frombinlog.py mysql-bin.0000022 [CHECK:BOOL]
    getddl_frombinlog.py mysql-bin.000002* [CHECK:BOOL]

(venv) 21:32:47 [root@ddcw21 ei]#

直接执行 第一个参数就是Binlog文件的位置, 支持正则表达式

如果开启了binlog check的话, 就多跟个参数(随便叫啥)

使用例子:

代码语言:javascript
复制
python getddl_frombinlog.py '/data/mysql_3308/mysqllog/binlog/m3308.0*'

解析单个文件

总结

有时候为了证明你没有执行危险的DDL, 你可以去解析DDL看看, 当然, 如果你没有开启binlog或者设置的sql_log_bin=off, 就当我没说.

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求
  • 实现
    • 1. mysqlbinlog
      • 2. getddl_frombinlog.py
      • 总结
      相关产品与服务
      云数据库 MySQL
      腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档