1. 程式人生 > 其它 >Docker內部MySQL開啟binlog日誌

Docker內部MySQL開啟binlog日誌

技術標籤:# DockerMySQL開啟binlog日誌

檢視 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