首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用正式的Docker映像启用MySQL二进制日志记录?

问如何使用正式的Docker映像启用MySQL二进制日志记录?
EN

Stack Overflow用户
提问于 2014-10-30 09:04:47
回答 1查看 11.3K关注 0票数 8

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

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

run命令:

代码语言:javascript
复制
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

产出:

代码语言:javascript
复制
mysqld: File '/var/log/mysql/mysql-bin.index' not found (Errcode: 2 - No such file or directory)

我应该分叉存储库并为/var/log/mysql添加一个卷,mysql用户可以写入并创建一个自定义映像,还是有更好的方法来做到这一点?这是否可能只使用正式的mysql映像?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-30 16:05:36

这种方法的问题是mysql用户没有写入/var/log/mysql目录的权限

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

代码语言:javascript
复制
$ docker run --rm mysql:5.7 ls /var/log/
alternatives.log
apt
bootstrap.log
btmp
dmesg
dpkg.log
faillog
fsck
lastlog
wtmp

此外,MySQL二进制日志不是用于跟踪MySQL服务器活动或错误的日志;它们是为了让MySQL服务器有机会在服务器崩溃时恢复数据的日志。

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

  • 接近你的数据
  • 写在快速文件系统上

在大多数情况下,Docker容器文件系统是缓慢的,这就是为什么容器的MySQL数据文件夹被声明为音量的原因。

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

长话短说,从容器开始:

代码语言:javascript
复制
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
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26648821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档