2014-10-30 251 views
0

什么是使用MySQL官方形象启用二进制日志的最佳方式?如何使用官方Docker镜像启用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) 

我应该叉的存储库,并添加用于/var/log/mysql的容积MySQL的用户可以写入和创建自定义图像,或有没有更好的方法来做到这一点?这可能只使用官方的MySQL镜像吗?

回答

1

这种方法的问题是,MySQL的用户没有权限写入到/ var /日志/ mysql目录

这个问题实际上是该目录/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服务器有机会在服务器崩溃的情况下恢复数据。

因此,你希望这些二进制日志:

  • 贴近您的数据
  • 进行快速文件系统

在大多数情况下,泊坞容器文件上写系统很慢,这就是为什么容器的MySQL数据文件夹被声明为VOLUME

所以你也希望你的二进制日志被码头工人,数据量,而不是泊坞容器文件系统写入。

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 
+0

感谢:


长话短说,以启动容器。我设法弄糊涂了自己,但这让我意识到我出错的地方。不应该首先使用/ var/log。 – Brett 2014-10-30 18:09:04

相关问题