mysql binlog常用脚本(解析与反解析)

发布时间 2023-11-07 09:35:24作者: 蚌壳里夜有多长
 

解析binlog

方法1:mysqlbinlog

mysqlbinlog --no-defaults  --base64-output=decode-rows -vv  --database=dboop   --start-datetime='2020-10-11  00:00:00' --stop-datetime='2020-10-11  15:00:00'  mysql-bin.000075 >75.sql

 


常用参数
database:只列出该数据库下的binlog数据,但无法过滤由触发器执行的SQL。
base64-output=decode-rows -vv:显示具体 SQL 语句。
skip-gtids=true:忽略 GTID 显示。

  • 输出结果
# at 20001
#201011 12:04:09 server id 1  end_log_pos 20094 CRC32 0x2b305ac     Query    thread_id=53    exec_time=0    error_code=0
SET TIMESTAMP=1651011012/*!*/;
BEGIN
/*!*/;

上面输出包括信息:

  • position: 位于文件中的位置,即第一行的(# at 20001),说明该事件记录从文件第20001个字节开始
  • timestamp: 事件发生的时间戳,即第二行的(#201011 12:04:09)
  • server id: 服务器标识(1)
  • end_log_pos 表示下一个事件开始的位置(即当前事件的结束位置+1)
  • thread_id: 执行该事件的线程id (thread_id=53)
  • exec_time: 事件执行的花费时间
  • error_code: 错误码,0意味着没有发生错误
  • type:事件类型Query

方法2:my2sql

wget https://www.dboop.com/download/my2sqlv2

/data/my2sql/my2sqlv2   -user root -password 123456 -host 10.0.0.2   -port 3306  -databases dboop -tables test001   -mode repl -work-type 2sql  -start-file mysql-bin.000075 -start-datetime "2020-10-11 15:00:00" -stop-datetime "2020-10-11 15:20:00" -output-dir /data/my2sql/dbooptest/

 

反解binlog(误删数据)

  • 方法1:my2sql
wget https://www.dboop.com/download/my2sqlv2

/data/my2sql/my2sqlv2   -user root -password 123456 -host 10.0.02   -port 3306  -databases dboop -tables test001   -mode repl -work-type rollback  -start-file mysql-bin.000075 -start-datetime "2020-10-11 15:00:00" -stop-datetime "2020-10-11 15:20:00" -output-dir /data/my2sql/dbooptest/

-work-type 2sql