暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysqlbinlog 临时数据目录及解析大 binlog 文件影响

00后DBA实录 2025-11-24
84

闲聊

最近更新频率不定,索性定个标准,周更吧。

聊聊问题

and 聊聊问题,最近遇到别的厂商的小伙伴在普通用户执行 mysqlbinlog 解析一个 2GB 的 binlog 结果将 tmp 临时目录打爆,虽然影响不大,因为数据库环境 tmpdir 和相关环境变量是配置在数据目录且所以没什么影响。但是如果是没有配置的环境就非常危险了,这会导致 SQL 的临时数据目录不足进而产生以下报错:

  1. Got error %d from storage engine.

    说明:%d
     对应的 OS 错误码会给出具体原因;例如 28
     表示No space left on device(磁盘/分区已满)。这是 MySQL 抛出的通用存储引擎错误(错误号 1030 ER_GET_ERRNO)。

    官方参考。https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html

  2. Can't create/write to file '%s' (Errcode: %d - %s)

    • 说明:无法在指定路径创建或写入文件;常见原因包括目标分区满、权限不足或路径不存在。Errcode: 28
       即 “No space left on device”。MySQL 文档专门说明要检查 tmpdir
       的可写性与磁盘空间。
    • 官方参考(“Can't create/write to file”):https://dev.mysql.com/doc/refman/8.0/en/cannot-create.html
  3. The table '%s' is full

    说明:尝试写入表或临时表时空间不足(磁盘或表空间耗尽),MySQL 会报告表已满(无法写入临时 .MYI/.MYD 等文件)。该信息常与无法写临时表的场景同时出现。

    相关于上面两类写入错误(官方错误列表中列出类似条目):https://dev.mysql.com/doc/mysql-errors/8.0/en/global-error-reference.html

  4. Sort aborted
     / Sort aborted: ...

    说明:执行 filesort/外部排序时需要在磁盘创建临时排序文件,若无法写入(如 tmpdir 满)就会中止排序并报 “Sort aborted”。(文档中有 FILSORT_ABORT
     / “Sort aborted” 条目)

    官方错误参考(“Sort aborted”):https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html

  5. 低级 I/O 全盘写入相关提示(例如 Disk is full writing '%s'
     / OS perror 输出)

    说明:MySQL 在底层 I/O 层会报告磁盘写入失败(例如 perror 28
     显示 No space left on device
    ),这些通常出现在错误日志或控制台中,提示确实是磁盘/分区已满。

    官方 I/O/全盘错误条目:https://dev.mysql.com/doc/mysql-errors/8.0/en/global-error-reference.html

配置临时数据目录

官网也有对 mysqlbinlog 临时数据目录的说明

* 

When running mysqlbinlog against a large binary log, be careful that the filesystem has enough space for the resulting files. To configure the directory that mysqlbinlog uses for temporary files, use the TMPDIR
 environment variable.

”

使用 mysqlbinlog 处理大型二进制日志时,请确保文件系统有足够的空间来存放生成的文件。要配置 mysqlbinlog 用于存放临时文件的目录,请使用 TMPDIR
 环境变量。

如果没有配置则使用系统默认 TMPDIR 即 /tmp,所以只需要这样即可:
export TMPDIR=/data/DIR
mysqlbinlog ...

参考

https://dev.mysql.com/doc/refman/8.0/en/mysqlbinlog.html

https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html

https://dev.mysql.com/doc/refman/8.0/en/cannot-create.html

https://dev.mysql.com/doc/mysql-errors/8.0/en/global-error-reference.html

最后很多没拉人了,拉一波,里面很多有趣的小伙伴



文章转载自00后DBA实录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论