gpt4 book ai didi

mysql - 如何使用官方 Docker 镜像启用 MySQL 二进制日志记录?

转载 作者:行者123 更新时间:2023-11-29 01:21:12 24 4
gpt4 key购买 nike

使用官方 mysql 镜像启用二进制日志记录的最佳方法是什么?

我曾尝试使用 mysql:5.7 镜像,在运行它时覆盖命令,同时通过启动选项启用二进制日志记录到 mysqld(见下文)。这种方法的问题是mysql用户没有权限写入/var/log/mysql目录。

运行命令:

docker run -d \
--name mysql \
-v /var/lib/mysql:/var/lib/mysql \
mysql:5.7 \
mysqld \
--datadir=/var/lib/mysql \
--user=mysql \
--server-id=1 \
--log-bin=/var/log/mysql/mysql-bin.log \
--binlog_do_db=test

输出:

mysqld: File '/var/log/mysql/mysql-bin.index' not found (Errcode: 2 - No such file or directory)

我应该 fork 存储库并为 /var/log/mysql 添加一个 mysql 用户可以写入并创建自定义图像的卷,还是有更好的方法来做到这一点?这可能仅使用官方 mysql 镜像吗?

最佳答案

The problem with this approach is that the mysql user does not have permission to write to the /var/log/mysql directory

问题实际上是 /var/log/mysql 目录在 mysql:5.7 Docker 镜像中不存在。您可以确保它运行以下容器:

$ docker run --rm mysql:5.7 ls /var/log/
alternatives.log
apt
bootstrap.log
btmp
dmesg
dpkg.log
faillog
fsck
lastlog
wtmp

此外,MySQL binary logs日志不是用来跟踪您的 MySQL 服务器事件或错误的;它们是日志,旨在让您的 MySQL 服务器有机会在服务器崩溃时恢复数据。

因此,您需要那些二进制日志:

  • 密切关注您的数据
  • 写在一个快速的文件系统上

在大多数情况下,Docker 容器文件系统很慢,这就是容器的 MySQL 数据文件夹被声明为 VOLUME 的原因。 .

因此您还希望将二进制日志写入 Docker 数据卷而不是 Docker 容器文件系统。


长话短说,开始你的容器:

docker run -d \
--name mysql \
-v /var/lib/mysql:/var/lib/mysql \
mysql:5.7 \
mysqld \
--datadir=/var/lib/mysql \
--user=mysql \
--server-id=1 \
--log-bin=/var/lib/mysql/mysql-bin.log \
--binlog_do_db=test

关于mysql - 如何使用官方 Docker 镜像启用 MySQL 二进制日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26648821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com