【杂记】MySQL 从其标准 Docker 镜像中移除了 mysqlbinlog 命令

该文章根据 CC-BY-4.0 协议发表,转载请遵循该协议。
本文地址:https://fenying.net/post/2023/10/08/misclog-mysqlbinlog-was-removed-in-standard-docker-image/

此前我们用的 MySQL 是 5.7.28 版本,由 AWS RDS 托管。后面 AWS RDS 定期维护时自动更新了 MySQL 版本,升级到了 5.7.42

我们的自动备份脚本会通过 MySQL 的版本号确定使用的 Docker 镜像,然后从这个镜像启动容器运行 mysqlbinlog 命令,将 binlog 备份下来。

而从不知道什么时候开始,MySQL 官方的标准版 Docker 镜像(如 mysql:5.7.38 这样的镜像)中移除了 mysqlbinlog 命令,导致我们的备份脚本无法正常工作……

这个问题在 MySQL 官方的 Docker 镜像的 Github 仓库中有人提了 issue,答复mysql:5.7.38 这类镜像是 minimal 镜像,仅包含服务端所必须的文件,而 mysqlbinlog 是客户端工具,所以不包含在 minimal 镜像中……

因此,如果需要使用 mysqlbinlog 命令,需要使用 mysql:5.7.38-debian 这样的镜像,而不是 mysql:5.7.38 这样的 minimal 镜像。

comments powered by Disqus