2014-10-30 42 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

相關問題