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