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

 

解析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/

 

方法3:my2sql

git clone https://github.com/liuhr/my2sql.git
cd my2sql/
go build .

./my2sql  -user root -password 123456  -port 3306 \
-host 127.0.0.1 -databases testdb  -tables student \
-work-type 2sql   -start-file mysql-bin.000047 \
-start-datetime "2020-07-18 12:35:00" --stop-datetime "2020-07-18 12:43:00" \
-output-dir tmpdir/

 

反解binlog(误删数据)

git clone https://github.com/liuhr/my2sql.git
cd my2sql/
go build .

./my2sql  -user root -password YZ_psbc521 -port 3347 -host 127.0.0.1 -databases testdb  -tables student -work-type rollback   -start-file mysql-bin.000024 -start-datetime "2024-03-22 14:28:00" --stop-datetime "2024-03-22 14:38:00" -output-dir tmpdir/

 

反解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

 

分析主从延时、大事务、长事务

git clone https://github.com/liuhr/my2sql.git
cd my2sql/
go build .

./my2sql  -user root -password 123456  -port 3306 \
-databases testdb  -tables student \
-big-trx-row-limit 500 -long-trx-seconds 300 \
-work-type stats   -start-file mysql-bin.000045 \
-start-datetime "2020-07-18 11:40:00" --stop-datetime "2020-07-18 12:00:00" \
-output-dir tmpdir/

 

posted @ 2023-11-07 09:26  蚌壳里夜有多长  阅读(105)  评论(0编辑  收藏  举报