Docker內部MySQL開啟binlog日志


如果不想設置docker容器權限,在掛載的my.cnf文件做如下修改:

#binlog為任意的日志前綴,默認存儲位置:/var/lib/mysql/下
log-bin = 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%'

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM