[英]How can I enable MySQL binary logging using the official Docker image?
使用官方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鏡像可能嗎?
這種方法的問題是mysql用戶無權寫入/ var / log / mysql目錄
問題實際上是mysql:5.7
Docker映像上不存在目錄/var/log/mysql
。 您可以確保它運行以下容器:
$ 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數據文件夾聲明為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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.