Docker內部MySQL開啟binlog日誌
阿新 • • 發佈:2021-01-20
檢視 binlog狀態
在MySQL終端執行一下, Navicat都行
show variables like '%log_bin%'
發現是沒有開啟binlog
修改Docker的MySQL的my.cnf配置檔案
新增下面內容,注意: log-bin = /logs/mysql-bin.log 是Docker內部的路徑,不是Linux宿主機的路徑
#設定日誌格式 binlog_format = mixed #設定日誌路徑,注意路經需要mysql使用者有許可權寫 log-bin = /logs/mysql-bin.log #設定binlog清理時間 expire_logs_days = 5 #binlog每個日誌檔案大小 max_binlog_size = 50m #binlog快取大小 binlog_cache_size = 4m #最大binlog快取大小 max_binlog_cache_size = 512m
重啟docker容器重啟失敗發現報錯資訊
docker restart 命令重啟docker之後發現重啟失敗
檢視docker日誌:
docker logs 容器id
2021-01-16 07:05:53 0 [Note] mysqld (mysqld 5.6.49-log) starting as process 29 ... mysqld: File '/logs/mysql-bin.index' not found (Errcode: 13 - Permission denied) 2021-01-16 07:05:53 29 [ERROR] Aborting 2021-01-16 07:05:53 29 [Note] Binlog end
上面意思是沒許可權,需要給docker內部的這個/logs賦予許可權,
開始解決問題
把上面修改binlog的配置還原回來,重啟docker容器, 讓docker重啟成功,進入docker容器
命令 : docker exec -it 容器id bash
進入容器之後執行:
chown -R mysql:mysql /logs
修改MySQL目錄的使用者和使用者組許可權
修改完了之後退出docker
然後再給修改binlog日誌資訊. 接著重啟docker容器,.發現docker容器啟動成功
驗證一下
連線MySQL執行一下
show variables like '%log_bin%'
發現已經開啟binlog