与mysqlbinlog命令使用相关的2个小问题

1、MySQL 数据库提供查看二进制日志 binlog 内容的命令是 mysqlbinlog,常用的命令如下:mysqlbinlog -vv bin.000668 | less mysqlbinlog -vv bin.000668 --start-datetime="2023-11-16 14:15:00" --stop-datetime="2023-11-16 14:15:00" | less 但有时会出现错误:mysqlbinlog: Error ...
与mysqlbinlog命令使用相关的2个小问题
1、MySQL 数据库提供查看二进制日志 binlog 内容的命令是 mysqlbinlog,常用的命令如下:

mysqlbinlog -vv bin.000668 | less

mysqlbinlog -vv bin.000668 --start-datetime="2023-11-16 14:15:00" --stop-datetime="2023-11-16 14:15:00" | less

但有时会出现错误:mysqlbinlog: Error writing file '/tmp/tmp.wOdzVS' (Errcode: 28 - No space left on device)

错误原因:binlog 解析后内容过大,导致 mysqlbinlog 默认解析后的临时文件存放路径 /tmp 空间不足。

解决方法:解析前手动指定临时文件存放路径,保证空间足够,注意参数 TMPDIR,不能用小写,如下:export TMPDIR=/opt/mysql3306/tmp

mysqlbinlog -vv bin.000668 | less

2、在查看 binlog 或者 mysqldump 导出 sql 文本时,经常看到如下格式的注释语句:

/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE */

/*!80000 SET SESSION information_schema_stats_expiry=0 */

/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */

对后面跟的5位数字好奇吗?binlog 为什么需要这串数字?

这5位数字是 MySQL 版本指示器,与数据库版本的对应规则为:'/' '*' '!', 后跟主版本号(VERSION_MAJOR)、小版本号(VERSION_MINOR)、Patch号(VERSION_PATCH)。

示例:32302 -> 3.23.02,50738 -> 5.7.38,80025 -> 8.0.25。

例如,第一个注释语句的含义是:当 MySQL 数据库版本为 5.0.3 或更高版本时,将 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE 读取出来参与 SQL 语法解析,并最终被执行;当版本低于 5.0.3 时,该行语句被当成一个普通的注释。

带 /*!version-number SQL*/ 的可执行注释是为了解决不同 MySQL 版本之间的兼容问题。2024-08-10
mengvlog 阅读 381 次 更新于 2025-12-16 12:00:18 我来答关注问题0
檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部