簡體   English   中英

如何使用官方Docker映像啟用MySQL二進制日志記錄?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM