Mysql查看Binlog文件

本文介绍了如何在MySQL中检查binlog状态,定位和查看binlog文件,包括使用mysqlbinlog工具查询指定时间和关键词的SQL语句。详细步骤包括开启binlog、查看文件位置、时间范围筛选以及输出格式设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前期准备

检查是否开启binlog

mysql> SHOW VARIABLES LIKE 'log_bin';
// 或者
mysql> SHOW VARIABLES LIKE 'log%';

ON代表开启,OFF代表关闭。如为OFF需 开启 后才能查看,但只能查看开启之后时间点的。
在这里插入图片描述
在这里插入图片描述

查看binlog文件有哪些

一般yum安装的mysql,binlog没指定的话,一般存在/var/lib/mysql/目录

mysql> SHOW MASTER STATUS;

在这里插入图片描述
binlog.000029即为最新的binlog文件,但需要主要binlog文件一般会有多个比如27、28

查看binlog文件

使用mysqlbinlog工具查看

以下命令不需要在mysql中执行,在linux-sell中执行即可

  • 查看所有日志内容
mysqlbinlog [binlog文件名]
  • 查看指定时间范围内的日志内容
mysqlbinlog --start-datetime="YYYY-MM-DD HH:MM:SS" --stop-datetime="YYYY-MM-DD HH:MM:SS" [binlog文件名]
  • 将日志内容输出到文件
mysqlbinlog [binlog文件名] > output.sql
  • 以文本格式查看日志内容
mysqlbinlog --verbose [binlog文件名]
  • 以可执行的 SQL 格式查看日志内容
mysqlbinlog --result-file=output.sql [binlog文件名]

例子

查询binlog.000028文件中,从2023-11-13 20:45:55到57秒,有’user‘关键词的语句

mysqlbinlog --start-datetime="2023-11-13 20:45:55" --stop-datetime="2023-11-13 20:45:57" --verbose /var/lib/mysql/binlog.000028 > test.sql | grep -i 'user' 

在这里插入图片描述
grep后面也可以是正则表达式,例如grep -i 'UPDATE.*user*WHERE.*id.*=.*26642'

### 解析 MySQL 8.0.37 Binlog 文件 对于 MySQL 8.0.37 版本中的二进制日志(Binlog),可以通过 `mysqlbinlog` 工具来进行解析。此工具能够读取并解释由 MySQL 数据库产生的二进制日志文件,将其转换成可读的文字形式。 为了更方便地处理这些日志信息,建议先通过命令行指定时间范围和其他参数来过滤所需的数据,并将输出重定向到一个 SQL 文件中以便后续分析: ```bash /mysql/app/mariadb/bin/mysqlbinlog --no-defaults --database=db --base64-output=decode-rows -v \ --start-datetime='2019-04-11 00:00:00' --stop-datetime='2019-04-11 15:00:00' mysql-bin.000007 >/tmp/binlog007.sql ``` 上述命令会从特定时间段内的 binlog 日志中提取记录,并保存至 `/tmp/binlog007.sql` 文件里[^1]。 当环境变量设置正确时,可以直接调用 `mysqlbinlog` 而不需要提供完整路径。这通常涉及到修改用户的 shell 配置文件以包含 MySQL 的安装位置: ```bash export MYSQL_HOME="/usr/local/mysql-8.0.37" export PATH="$PATH:$MYSQL_HOME/bin" ``` 完成以上配置之后,就可以简化命令为仅需输入 `mysqlbinlog` 即可执行相同操作[^2]。 值得注意的是,在某些情况下可能还需要考虑其他选项如 `--read-from-remote-server` 来连接远程数据库实例获取其上的 binlog;或者调整 `-v` 参数的数量 (`-vv`) 增加输出细节程度等具体需求下的定制化使用方式。 #### 关于 Binlog 格式的说明 MySQL 支持三种不同的复制格式:STATEMENT、ROW 和 MIXED。每种模式下生成的日志条目有所不同,因此理解所使用的服务器配置非常重要。默认情况下,MySQL 8 使用 ROW 模式,这意味着每一行更改都会被记录下来而不是整个语句本身。这对于精确回滚或审计非常有用,但也可能导致更大的日志体积。 在解析过程中,如果遇到难以解读的部分,则可能是由于启用了 GTID (全局事务 ID),它会在每个事件前附加额外的信息用于跨节点同步。此时应查阅官方文档了解更多关于 GTID 处理的知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值