设为首页收藏本站

追梦Linux

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 223|回复: 0

Mysqlbinlog 按照时间解析成SQL

[复制链接]

482

主题

485

帖子

16万

积分

CEO

Rank: 9Rank: 9Rank: 9

积分
168202

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

QQ
发表于 2018-6-1 15:12:03 | 显示全部楼层 |阅读模式
使用mysqlbinlog按时间查询二进制日志时,会用到start-datetime和stop-datetime选项。

提示:MySQL二进制日志的名称缺省是HOSTNAME-bin,不过推荐通过log-bin设置,以防止HOSTNAME更改所带来的影响。二进制日志的目录可以使用如下方法得到:

mysql> show variables like 'datadir';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+

假设要查询2018-05-31全天的二进制日志的话,很多人会这么写:
shell> mysqlbinlog --start-datetime="2018-05-31 00:00:00"  --stop-datetime="2018-05-31 23:59:59" /path/mysql-bin.xx

不过这样写有问题,因为start-datetime是闭区间,stop-datetime是开区间,如果用数学表达式表示,类似:[start-datetime, stop-datetime),所以应该改为:
shell> mysqlbinlog --start-datetime="2018-05-31 00:00:00"  --stop-datetime="2018-06-01 00:00:00" /path/mysql-bin.xx

发现mysql库的binlog日志出来都是乱码,如下所示:

BINLOG ’
IXZqVhNIAAAALQAAAGcBAAAAAHoAAAAAAAEABHRlc3QAAno0AAEDAABUOcnY
IXZqVh5IAAAAKAAAAI8BAAAAAHoAAAAAAAEAAgAB//4BAAAAcu+UpA==,如果强行用-v出来也得不到具体执行的sql语句.

google,得知可以用–base64-output=DECODE-ROWS -v查看出来sql语句,如下
/usr/local/mysql/bin/mysqlbinlog --base64-output=DECODE-ROWS -v  --start-datetime="2018-05-31 10:50:00"  --stop-datetime="2018-05-31 11:10:00"   mysql-bin.000053
确实可以看到sql语句,不过都是row模式的,如下所示:
#180531 10:50:00 server id 1  end_log_pos 898341122 CRC32 0xde639058     Table_map: `xkserver`.`task_rpt_queue` mapped to number 1478
# at 898341122
#180531 10:50:00 server id 1  end_log_pos 898341378 CRC32 0xcc15287e     Update_rows: table id 1478 flags: STMT_END_F
### UPDATE `xkserver`.`task_rpt_queue`
### WHERE
###   @1=494683
###   @2='78264243'
###   @3='78264243-20180531104850111'
###   @4='inc_poUpload'
###   @5=518793
###   @6='{"fail":0,"success":1}'
###   @7=2
###   @8=0
###   @9='2018-05-31 10:49:56'
###   @10='2018-05-31 10:49:56'
### SET
###   @1=494683
###   @2='78264243'
###   @3='78264243-20180531104850111'
###   @4='inc_poUpload'
###   @5=518793
###   @6='{"fail":0,"success":1}'
###   @7=2
###   @8=1
###   @9='2018-05-31 10:49:56'
###   @10='2018-05-31 10:50:00'
# at 898341378
#180531 10:50:00 server id 1  end_log_pos 898341409 CRC32 0x82afc4d4     Xid = 317265544c

此时解析正常。

mysql备份与恢复:https://blog.csdn.net/giianhui/article/details/53095816

QQ|小黑屋|手机版|Archiver|追梦Linux ( 粤ICP备14096197号  点击这里给我发消息

GMT+8, 2019-5-19 21:00 , Processed in 0.289608 second(s), 30 queries .

Powered by 追梦Linux! X3.3 Licensed

© 2015-2017 追梦Linux!.

快速回复 返回顶部 返回列表