MySQL-运维工具-mysqlbinlog详解

1、用途

二进制日志和主从复制中从库的中继日志,都是以二进制的格式记录了数据库内容变更事件(insert, delete, update等)。二进制是给计算机读取的,而人类可读的是文本文件,此时我们可以借助mysqlbinlog工具查看日志的内容。

2、使用

mysqlbinlog是MySQL官方软件,故而在安装MySQL服务器的时候默认自带了。

格式
mysqlbinlog [options] log_file

选项

选项说明
–base64-output使用base64算法处理并输出结果
–bind-address指定网口连接MySQL服务器
–binlog-row-event-max-size日志内最大事件大小
–character-sets-dir字符集安装的目录
–database指定仅仅处理该数据库的事件
–include-gtids只展示指定的GTID下的组
–no-defaults读取无选项的日志文件,my.cnf中添加default-character-set=utf8mb4,加此选项直接读才不会报错
–offset指定读取的偏移位置
–result-file输出结果指定到对应的文件
–server-id指定仅仅处理该server id的事件
–set-charset对输出内容设置字符集,会加上set names xxx字符集
–skip-gtids忽略GTIDs
–start-datetime指定事件执行的起始时间,格式如:2021-10-24 11:00:00
-stop-datetime指定事件执行的结束时间,格式如:2021-10-31 23:59:59
–start-position指定起始的位置
–stop-position指定结束的位置
–verbose将行事件重构为SQL语句
–idempotent使用幂等性,可以抑制duplicate-key的错误,仅仅作用域当前的mysqlbinlog会话

3、实践

3.1 查看以base64解码和限制时间的方式查看


mysqlbinlog --no-defaults --base64-output=decode-rows -v --database=mall --start-datetime='2021-10-24 11:00:00' --stop-datetime='2021-10-24 23:59:59' /var/log/mysql/mysql-bin.000002

3.2 以十六进制查看

# 执行命令
mysqlbinlog  --hexdump  mysql-bin.000001

# 结果
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#211018 12:41:50 server id 1  end_log_pos 123 CRC32 0xe6d14c62
# Position  Timestamp   Type   Master ID        Size      Master Pos    Flags
#        4 8e 6b 6d 61   0f   01 00 00 00   77 00 00 00   7b 00 00 00   00 00
#       17 04 00 35 2e 37 2e 33 35  2d 6c 6f 67 00 00 00 00 |..5.7.35.log....|
#       27 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 |................|
#       37 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 |................|
#       47 00 00 00 00 8e 6b 6d 61  13 38 0d 00 08 00 12 00 |.....kma.8......|
#       57 04 04 04 04 12 00 00 5f  00 04 1a 08 00 00 00 08 |................|
#       67 08 08 02 00 00 00 0a 0a  0a 2a 2a 00 12 34 00 01 |.............4..|
#       77 62 4c d1 e6                                      |bL..|
# 	Start: binlog v 4, server v 5.7.35-log created 211018 12:41:50 at startup
ROLLBACK/*!*/;
'/*!*/;
# at 123
#211018 12:41:50 server id 1  end_log_pos 154 CRC32 0x5cf0cacd

结果字段说明:

  • Position:日志文件中的字节位置
  • Timestamp:事件发生的时间戳,需要十六进制转时间戳
  • Type:事件类型
  • Master ID:事件的server id
  • Size:事件的大小
  • Master Pos:下一个事件的位置
  • Flags:事件标志值

4、总结

本篇文章介绍了mysqlbinlog工具的常用选项,方便后期分析展示各种格式的binlog和redo log。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值